AutoCAD - Português

AutoCAD - Português

Responder
Distinguished Contributor
Exmateria
Envios: 215
Registrado: ‎11-19-2008
Mensagem 1 de 1 (3.099 Exibições)

Linguagens de programação em AutoCAD

3099 Exibições, 0 Respostas
03-24-2011 05:19 AM

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?

Nao, de jeito nenhum essas coisas sao preocupaçoes do programador desconectado do mundo real. O que interessa somente aos utilizadores de AutoCAD é que o trabalho seja feito mais rapidamente que à mao e, francamente, um procedimento que coloca dois milesimos a mais do que outro sao totalmente iguais. Em matéria de programaçao para AutoCAD, nos estamos claramente nos distanciando das necessidades. Os programadores de AutoCAD perdem seu tempo aprendendo coisas que podem servir a quem cria sistema de exploraçao, mas certamente nao aos utilizadores de CAD. Para tomar o exemplo de criaçao de uma linha unica, é muito mais rapido de programar em LISP, ou alias em VBA, que de fazê-la no ambiente .NET.

Eu penso que nenhum programador vai discordar. Entao, vemos os que desenvolvem .NET tentar o impossivel, corajosamente mas pateticamente, e de se envolver em explicaçoes nebulosas. Se um programa desenha 10 000 mil linhas em Visual Basic .NET, a versao escrita em Visual Basic .NET desenhara essas linhas muito mais rapidamente... Grande coisa! Mas ninguém se importa que um desenhista AUTOCAD passe seus dias a fazer a cada 10 segundos 10 000 linhas. Eu digo a vocês o que interessa ao desenhista que utiliza programaçao de AutoCAD: que ao solicitar uma mudança na programaçao de seu departamento, ele seja capaz de corrigir uma linha de codigo no lugar de 25.

Francamente, o programador também esta interessado nisso. E nao é, certamente, dentro do ambiente .NET que isso se produzira, porque enquanto o LISP ja fez a sua correçao, o programador VBA esta terminando de teclar sua linha, e o infeliz do programador .NET esta ainda procurando uma hipotetica ajuda na Web entre hipoteticos exemplos de como os codigos poderiam fazer essa corrreçao sem ver o edificio desabar.

Entao, tudo ainda esta para ser inventado, ou melhor dizendo a ser reinventado? Nao, nao. Nos devemos tomar o problema pela raiz. A partir da necessidade do utilizador final. Inventar uma linguagem de programaçao que seja de um nivel bem mais elevado que a VBA e a LISP. Um computador é perfeitamente capaz de entender uma sentença logicamente expressa tal como: desenhe um poligno partindo do ponto 0,0 ao ponto 5,5, e em seguida ao ponto 10,10. Nao ha absolutamente nenhuma dificuldade para que um computador possa entender essa frase. A grande vantagem é que os seres humanos que estao ao redor da maquina terao igualmente entendido de que se trata.

É essa e uma vantagem determinante, pois nao teremos mais necessidade de "Champollion" para passar centenas de horas a transcrever a lingua falada em linguagem comprensivel pela maquina. Note que esta ja existe, ela é chamada de algoritmos. Mas os tecnicos em informatica lhes dirao que um computador nao é capaz de entender diretamente uma linguagem algoritmica. Isso é verdade. E bom, é suficiente que eles comecem o trabalho e sejam o intermediario entre a maquina e o homem. Em vez de deixar para os programadores de serviços informaticos das empresas que utilizam AutoCAD, que realmente têm outra coisa a fazer que compreender o funcionamente interno das maquinas.

Todos os esforços empregados na programaçao do ambiente .NET deveriam estar, portanto, dirigidos para a escrita de bibliotecas independentes da linguagem informatica e capaz de manipular os objetos que os desenhistas de AutoCAD conhecem . Assim, o papel do programador do serviço de informatica dessas empresas seria de descrever de maneira algoritmica um procededimento que seria transcrito de modo transparente em linguagem compreensivel para a maquina, em seguida à execuçao do codigo a ser lançado. E eu lamento dizer, a linguagem Visual Basic, a C#, a F# nao me parece nada a linguagens de altissimo nivel.

O ambiente de programaçao .NET é preparado à responder a todas as necessidades, infelizmente, e certamente nao em particular para as necessidades dos desenhos de AutoCAD. Eu termino com uma nota esperançosa: parece que nova linguagem chamada DesignScript esta saindo, conforme rumores que circulam à Autodesk University 2010. Mas como eu entendi, mesmo que nos tenhamos as informaçoes mais precisas mais tarde, ela sera uma sorte de linguagem de macro e nao para o campo da construçao civil e arquitetura.

O que eu falo e o que eu penso nesse artigo é alguma coisa que nao é de jeito nenhum dirigido à profissao nem aos produtos verticais, como a gente diz, mas que é orientado ao desenho técnico. Pois o que se venha a dizer ou a fazer crer, a maior parte das pessoas desenha ainda em 2D os objetos que sao completamente virtuais e simbolicos, e eu tenho impressao que essas pessoas sao deixadas para tras pelos gênios que acreditam ter feito um grande serviço a elas, garantindo que a essência da existência é ganhar dois milésimos de segundos.


Versão francesa

Versão inglesa

tradução: Andrea REGO-EMIN





Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Comunicados
Are You Going To Be @ AU 2014? Feel free to drop by our AU topic post and share your plans, plug a class that you're teaching, or simply check out who else from the community might be in attendance. Ohh and don't forgot to stop by the Autodesk Help | Learn | Collaborate booths in the Exhibit Hall and meet our community team if you get a chance!