Olá, hoje eu vou falar sobre um tema caro ao meu coração: linguagens de programação e AutoCAD, programa em que trabalho ha aproximadamente 20 anos. No começo, desenhavamos as linhas previstas para representar as coisas reais. Normalmente é assim que o desenhista de AutoCAD trabalha, representando os objetos reais por objetos geométricos. Assim duas linhas paralelas podem representar uma parede em um desenho arquitetônico. Sabemos disso porque convencionalmente é assim que ela é representada. Nos estamos certos de que nao se trata de um cano, pois é praticamente impossivel que ele esteja nesse lugar do projeto, sem que o prédio desabe. Com isso, quero dizer que o método é empirico e sua utilizaçao tem limites. Ele pode conduzir a erros de interpretação, uma vez que supõe que o desenhista, assim como todas as pessoas que vão ler esse projeto, têm o conhecimento do "métier", das convenções e dos simbolos que servem para representar a realidade.

Durante muito tempo, quando as pessoas ainda nao dispunham de computador, era a unica maneira de fazer e nao havia outra soluçao senao a velha e boa prancheta. A "Computer Aided Design 2D" foi o padrao do desenho técnico no computador. As coisas começaram a mudar quando podemos recolher alguns objetos primarios, tais como linhas, e fazer um bloco. Depois, dar a elas um nome . Mas ainda estava no campo simbolico. Muito mais tarde, começamos a utilizar o CAD 3D, em especial no campo da mecânica e, posteriormente, no dominio da arquitetura. A idéia, entao, veio de nao mais representar e manipular somente os objetos primarios e os reagrupamentos de objetos primarios, tais como blocos, mas os objetos que existiam realmente, como paredes, janelas, mobiliario, etc, agora em 3D. Nos começamos a dar um comportamento inteligente aos objetos... eu deixo vocês meditarem sobre o final desta frase.

Naturalmente, esses objetos do mundo real eram sempre representados virtualmente por um conjunto de objetos geométricos primarios. E nao pode ser de outra forma. A gente nao pode fazer entrar um prédio inteiro na memoria de um computador, por mais poderoso que seja. Nao acreditem no que diz o "building objecto model", isso nao existe ainda. Mas o que tem a ver a programaçao com essa discussao? Eu chego là. Programar um computador é escrever uma série de instruçoes para que o mesmo execute tarefas que seriam muito pesadas, muito lentas ou impossiveis de serem executadas por um ser humano. E é claro que em termos de CAO, e mais especialmente de AutoCAD, muitos programas foram feitos praticamente depois da origem do software para automatizar o projeto.

A linguagem LISP é certamente a mais conhecida. Ela havia sido escolhida pela Autodesk ha muito tempo, porque era uma linguagem de altissimo nivel e bem adaptada à deficiência estrutural de um desenho AutoCAD. Por outro lado, essa linguagem permite manipular as linhas, ou por assim dizer as coleçoes de objetos, e Deus sabe que num desenho AutoCAD existem muitos conjuntos de objetos. Mas se você olhar o codigo fonte de um programa escrito em LISP, dificilmente reconhecera os objetos do mundo real. Você podera talvez, com um pouco de sorte e se o programador fez um bom trabalho, reconhecer o nome de algumas variaveis. Caso contrario, nada é mais diferente do seu desenho que o codigo fonte de um programa LISP.

A programaçao é um trabalho de especialistas. Muitas pessoas se lancaram na programaçao LISP para AutoCAD e conseguiram fazer programas respeitaveis, frequentemente ao preço de muitas horas, às vezes além de seu horario de trabalho. E eu falo com conhecimento de causa, pelo tempo passado a me documentar, a interagir com outras pessoas na internet, lendo livros sobre o assunto, para adquirir os conhecimentos basicos de programador. Pois, apesar da linguagem LISP ser muito agradavel, dirigida para a inteligência artificial, nao poupa a inteligência do programador.

As coisas estiveram bastante claras até a época que o LISP era a unica maneira de programar em AutoCAD - eu falo aqui naturalmente da programaçao que faziam os utilizadores finais e nao os profissionais do desenvolvimento, que programavam preferencialmente em linguagem C. Mas vocês vao me dizer: para fazer um programa, tem que ser programador. Bem, nao me parece que isso seja uma necessidade imperiosa, mesmo que tenha sido sempre o caso. Para ser um bom programador, é preciso ter certas qualidades. Você tem que ter logica, conhecer o dominio a qual a programaçao vai ser aplicada e, no caso do AutoCAD, ser capaz de expressar corretamente, de entender as especificaçoes, para trazer para o projeto, em seguida em algaritmo e depois em codigo.

Note que no que concerne ao LISP, nao é necessario conhecer os meandros do funcionamento de um computador, de saber como funciona um "compiler". Sem duvida essa foi uma das razoes da popularidade do LISP, ele era "acessivel" aos nao especialistas. Depois veio muito mais tarde o Visual Basic for Applications (VBA) e, mais recentemente, o ambiente Microsolft. NET, que nos é apresentado como o pinaculo dos ambientes de desenvolvimento, ao ponto que o pobre VBA é lentamente abandonado apesar dos muitos serviços prestados. Mas sera que o VBA se tornou uma liguagem ruim? Sera que o LISP nao é mais suficiente? Nao, nao, de jeito nenhum.

O VBA foi abandonado porque a Microsoft decidiu. O que nos resta entao em seu lugar? Ainda tem sempre o bom e velho LISP que pode prestar serviço, exceto se você tem para programar as caixas de dialogo, caso em que tera muita dificuldade. E depois naturalmente o famoso ambiente .NET Visual Studio, que esta à frente com o seu parceiro Autodesk. So que agora é mais dificil. Nao passamos de uma linguagem adaptada a AutoCAD como a LISP e a VBA, mas de duas linguagens às vezes complementares. Alias, a LISP et a VBA, em um ambiente de programaçao, comporta varias linguagem de programaçao dentro de um instrumento claramente reservado aos profissionais. Esse é o cerne do problema.

Escuta-se dizer que o ambiente .NET é melhor, é mais rapido, e mais poderoso do que o que tinhamos antes. Mas também ouvimos pequenas vozes mais e mais numerosas dizer que o melhor é inimigo do bom... Nos passamos entao de uma linguagem de altissimo nivel, a LISP, à uma pouco menos elevada, a VBA, à uma linguagem ainda menos elevada, o Visual Basic, C# ou F# no ambiente .NET. Para forçar a mudança de linguagens muito complexas para as mais basicas, nao me parece que se eleve o nivel, mas bem ao contrario é provavel que se toque ao chao. Porque finalmente, qual é a finalidade do programa em AutoCAD? Sera que é de conhecer as possibilidades da maquina ou sera que é de se preocupar de qual maneira uma DLL é compilada à ganhar dois milesimos de segundos aqui e acola?

(parte 1)

Versão francesa: http://www.blog-cao.com/2010/autocad...ation-autocad/

Versão inglesa: http://www.acadnetwork.com/topic-80.0.html

tradução: Andrea REGO-EMIN: http://nouvellesdelyon.blogspot.com/