O BLADE é um excelente novo recurso do BricsCAD V18. O nome vem do acrônimo BricsCAD LISP Advanced Developer Environment (Ambiente de Desenvolvimento Avançado em Lisp, do BricsCAD) BLADE é a nova IDE Visual LISP para BricsCAD.

A Bricsys não apenas alcançou a Autodesk em tecnologia, mas tem fornecido uma série de funcionalidades extras que estão tão à frente da VLIDE de 1999 da Autodesk que é improvável que a Bricsys seja surpreendida. E além disso, ainda permanece altamente compatível.

Eu tive a chance de ver esta IDE em particular em forma de pré-release (ainda sem nome à época) quando participei da Conferência Bricsys 2017 em Paris. Fiquei surpreso e encantado com sua funcionalidade, demonstrada pelo seu criador, Torsten Moses. Eu tive a chance de entrevistar Torsten sobre sua criação.

Torsten, Eu entendo que foi difícil criar uma IDE LISP para o BricsCAD por causa da maneira como o LISP funciona no BricsCAD. Você pode explicar isso?

O BricsCAD LISP usa o OpenLisp como núcleo do sistema, criado pelo desenvolvedor francês Christian Jullien. Este é o único motor LISP que permanece ainda sendo desenvolvido; os outros que encontrei pararam o desenvolvimento em meados dos anos 90.

O OpenLisp é uma implementação muito moderna, não comparável ao antigo dialeto XLisp usado pelo AutoLISP. Até mesmo recursos orientados a objeto são suportados. Portanto, a representação interna de expressões LISP é diferente da representação textual, como visto em um arquivo LISP.

Então o código do AutoLISP que escrevo não é o código que o BricsCAD executa?

Está certo. Uma série de construções típicas do AutoLISP foram implementadas por um tipo de emulação, o que impulsiona as diferenças de representação interna versus textual ainda mais. Isso torna um grande desafio sincronizar a execução da expressão OpenLisp interna com a representação textual relacionada para fornecer qualquer funcionalidade do debugging.

Além dos detalhes técnicos mais simples, que pareciam virtualmente não resolvíveis, havia o pesado esforço esperado para implementar uma GUI completa. Este não foi apenas um mero simples, mas toda GUI do IDE.

Teria sido um desastre, uma grande desgraça, se tivéssemos fornecido uma VLIDE que correspondesse aos padrões do AutoCAD. Esse foi ótimo no seu tempo, mas agora já passaram 20 anos.

A ideia de criar uma IDE LISP para o BricsCAD parecia tão cheia de dificuldades que nós a deixamos de lado por um longo tempo.

Como você finalmente conseguiu superar essas dificuldades?

Primeiro, foi uma pura coincidência. [risos] Por sorte, descobri um detalhe oculto no OpenLisp - qualquer símbolo LISP (e expressões são um tipo de símbolo anônimo) pode conter dados personalizados ilimitados, muito semelhantes a XData em objetos de banco de dados DWG. Eu mesmo sabia disso há muitos anos, mas nunca resolvi o atalho para 'usar mal' isso para a execução da expressão LISP para conexão bidirecional do editor e depurador. Alguns testes rápidos iniciais mostraram que essa abordagem era muito apropriada.

Por outra coincidência, descobri que o WxWidgets (nosso sistema multi-plataforma, não apenas para GUI) já inclui suporte para o famoso editor Scintilla um mecanismo de editor OpenSource, amplamente utilizado por muitos editores. O WxWidgets fornece até dois níveis de wrappers - um wrapper simples e central e um sistema de classe wrapper de alto nível. Isso se encaixa perfeitamente na lógica do WxWidgets.

Mas ainda assim, isso é apenas suporte a editor simples - não uma GUI. Então eu encontrei um editor muito adequado e extensível e implementação de GUI, baseado no sistema Wintowints Scintilla - como Open Source sob a licença WxWidgets. Portanto, podemos usar esse código-fonte em um aplicativo comercial. Esse editor é chamado wxStEdit.

Eu verifiquei que essa fonte era adequada para a nossa IDE LISP e coloquei muito trabalho extra para estendê-la. O desenvolvimento do wxStEdit foi concluído por volta de 2008, e ainda estava compilando e funcionando basicamente bem. No entanto, no decorrer da extensão dessa GUI, eu encontrei e consertei muitos defeitos em todos os níveis relacionados (Scintilla, WxWidgets Scintilla wrapper e wxStEdit).

Então foi esse conjunto de coincidências que de repente abriu as duas folhas de um grande portão!

Já observei antes que a execução do BricsCAD do AutoLISP e do Visual LISP é várias vezes mais rápida que a do AutoCAD. Como a nova tecnologia afeta esse desempenho?

Todo o novo material relacionado ao BLADE realmente não afeta a execução normal do LISP fora do IDE e do depurador. A conexão é feita por alguns retornos de chamada, que levam tempo zero no processamento normal. Portanto, também não há chance de quebrar as coisas.

A implementação do BLADE é muito segura e o desempenho permanece alto para uso normal.

Para o depurador e a sincronização, tudo é feito em casa, otimizado para melhor desempenho, mesmo quando depuração, e uso mínimo de memória do sistema e LISP.

No decorrer da implementação do depurador e da sincronização interna versus externa, também removi a maioria das emulações e implementei isso como a principal funcionalidade do OpenLisp. Isso tem o efeito colateral que as funções (repeat), (foreach) e (vlax-for) agora executam cerca de cinco vezes mais rápido na construção do loop. Então, ao invés de desacelerar as coisas, criar o BLADE realmente acelerou as coisas!

As versões Mac e Linux também receberão esse recurso?

Sim, é totalmente compatível. Isto é devido às implementações do WxWidgets e do meu próprio material. Eu já verifiquei o BLADE sendo executado no Linux. Não há diferenças; até mesmo o código de implementação não possui material específico do Windows.

Você pode dar um exemplo simples do fluxo de trabalho de uma sessão de depuração?

Primeiro, não pré-carregue nenhum arquivo LISP no BricsCAD. Esse código carregado fora do depurador é totalmente funcional, mas não pode ser usado para depuração. A conexão especial entre representação interna e externa só é estabelecida ao carregar o código LISP em um estado de debug.

Em seguida, no BLADE, abra um projeto FAS ou VLX existente e/ou uma “Sessão Nomeada” ou simplesmente qualquer arquivo LISP com o qual deseja iniciar o debugging.

Agora você pode selecionar Iniciar Depuração no menu ou na barra de ferramentas ou pressionar a tecla F8. A barra de ferramentas de depuração especial será exibida. Você pode ativar o AutoBreak, que pára no primeiro código executável, ou ativar a fonte LISP onde deseja iniciar a depuração e colocar alguns pontos de interrupção.

Em seguida, carregue o arquivo LISP dedicado, seja pela função Carregar normal no BricsCAD ou pelo botão Carregar na barra de ferramentas de depuração. Agora que o código carregado está habilitado para depuração e você verá o arquivo e as funções ativadas para depuração nas duas guias à direita.

Quando o depurador pára no primeiro ponto de interrupção, todos os modos de etapa de depuração são ativados na barra de ferramentas e você tem todos os modos de etapa de depuração usuais. Mais do que no VLIDE do AutoCAD, na verdade. Você pode definir os relógios (variáveis observadas e rastreadas) como “Data Break Point” ativando a caixa de seleção. Em seguida, sempre que esse valor for alterado, o depurador também será interrompido automaticamente na instrução LISP relacionada.

E se o seu código chama o código em outros arquivos que você não tenha carregado?

Não se preocupe com isso. O depurador reconhece isso e pedirá para carregar o arquivo LISP relacionado sob demanda. No LISP normal, você receberia um erro de função desconhecido, mas o depurador detectará isso antecipadamente. Na verdade, esse é um dos recursos de ponta - apenas carregue o arquivo LISP principal, qualquer depuração adicional em outros arquivos é resolvida ao carregar durante a sessão de depuração. Isso é muito útil para lidar com aplicativos complexos - não há necessidade de pré-carregar qualquer outra fonte LISP.

Tenho certeza que você já experimentou a Lei de Murphy, onde a função específica que você precisa é aquela que não está carregada. Você não terá esse problema no BLADE.

Onde ir a partir daqui? Esse trabalho está encerrado ou ainda há espaço para melhorias?

Como o BLADE ainda é um produto muito novo, definitivamente há muito mais por vir. Até agora, o objetivo principal era fornecer bons recursos de depuração e um tratamento razoável dos projetos, mas não muito com foco nos recursos simples do editor.

Minha lista de tarefas ainda tem vários recursos principais a ser implementados. Queremos adicionar um editor de teclas de atalho, porque cada desenvolvedor adora suas próprias teclas e aprender as outras é um pesadelo! Também queremos fazer a verificação de referências cruzadas em uma base por arquivo e por sessão, principalmente para aplicações LISP de maior complexidade.

Depois, com o tempo, os recursos do editor serão ampliados e aprimorados, fornecendo mais recursos. Um exemplo é fornecer uma dica de ferramenta do editor que mostra uma assinatura de função e uma dica rápida ao passar o mouse sobre um nome de função LISP.

E é claro, estou ciente de que quando as pessoas começarem a usar isso na produção, muito feedback chegará dos desenvolvedores na forma de desejos, dicas de melhorias e relatórios de bugs. É muito provável que haja muitos desejos para implementar vários detalhes para tornar o BLADE mais semelhante ao VLIDE do AutoCAD. Isso pode ser um pouco difícil às vezes, e também não é o alvo principal. Espero que os desenvolvedores estejam abertos a um fluxo de trabalho ligeiramente diferente, dadas as grandes vantagens que recebem em troca.

Em geral, estamos muito abertos a idéias, necessidades e requisitos de desenvolvedores, como estamos com o próprio BricsCAD. No final, é o desenvolvedor que precisa trabalhar com o BLADE da maneira mais fácil e produtiva possível.

Até mesmo o lançamento inicial do BLADE é baseado em feedback importante de testadores beta, como Martin Drese (CAD Wiesel).

O BricsCAD está disponível hoje!

Quando você vir o nível de dedicação que nossa equipe de desenvolvimento dedica à plataforma BricsCAD, você concordará que é o futuro claro do CAD baseado em .dwg. Como usuário do BricsCAD, o valor que você obtém de sua licença está crescendo ano a ano. É uma situação ganha-ganha-ganha para todos os envolvidos. Se você ainda não está usando o BricsCAD hoje, você deveria estar.

Experimente o BricsCAD gratuitamente por 30 dias

AVISO: Como consideramos importante ouvir vozes e opiniões diferentes, publicamos postagens de convidados regulares. Cada autor escreve em seu próprio nome e é responsável pelo conteúdo do texto. Esta entrevista foi originalmente publicada em duas partes em Blog do Steve: cad-nauseam site