MICROCONTROLADORES - QUAL A MELHOR LINGUAGEM DE PROGRAMAÇÃO?



Esta é uma das perguntas mais comuns entre os iniciantes e até mesmo entre os que já iniciaram no mundo dos microcontroladores: Qual Linguagem de Programação devo usar? Qual delas é a melhor? Qual mais poderosa?. Pode até parecer bobagem para alguns, mas eu acho essa dúvida muito válida. Até porque eu mesmo um dia já a tive e creio que a grande maioria também, afinal “ninguém nasce sabendo!”.

Muitos são os que me escrevem solicitando uma dica a respeito, pois muitas são as Linguagens de Programação disponíveis no mercado, muito diferente de alguns anos atrás quando comecei (mas isso é uma outra história). Hoje temos a Linguagem Assembly (Assembler é o compilador!), a Linguagem C, PASCAL, BASIC, JAVA (sim, já existem microcontroladores que podem ser programados em Java!) e um outro número de linguagens que são na verdade muito parecidas entre sí e por isso não as citei.

Com um número tão grande de Linguagens de Programação não é difícil compreender o porque da dúvida de muitos iniciantes. E olha que nem falei a respeito dos compiladores. Para cada tipo de Linguagem de Programação existem muitos, e assim, uma nova dúvida surgirá a partir do momento que se escolher a Linguagem. Cada compilador tem suas vantagens e desvantagens. Em uma outra oportunidade falarei deles, pois isso vai ajudar também. Por hora, vamos ficar apenas na “Linguagem de Programação”.

Antes de falar sobre as escolhas, vou começar por explicar o que é uma Linguagem de Programação. Assim fica mais fácil, já que uma breve introdução pode ajudar aquele que está começando sua “busca”. 

Uma Linguagem de Programação é na verdade uma forma de “interação” que possibilita que um determinado sistema (seja qual for, desde que “programável”) compreenda o que deve ser feito através de comandos implementados de acordo com o que se conceitua "Lógica de Programação". Esta seria a visão up-down (do programador para o sistema). Numa visão down-up (do sistema para programador) uma Linguagem de Programação é aquela que permite que o sistema receba os comandos desejados, de maneira ordenada e lógica, por parte do programador. Para muitos, este é o trabalho do compilador e não da Linguagem de Programação. Um grande erro. O compilador apenas realiza o trabalho de “tradução” (da sintaxe utilizada de códigos por nós compreendido, na linguagem de máquina). Ou seja, se você não sabe como usar uma “Linguagem de Programação” e não tem idéia de como deve ser a Lógica de Programação para um determinado caso, não saberá como usar um compilador (seja qual for). É mais ou menos assim: “de nada adianta ter um dicionário bilingüe em mãos, se você não souber como usar uma das Línguas presentes no mesmo”.

Agora que já foi dado a você uma breve explanação sobre o que é uma Linguagem de Programação, falta ainda responder a pergunta “qual usar?” ou ainda “qual a melhor?”. A resposta é bem simples: “não existe a melhor Linguagem de Programação!”. A melhor é aquela que você sabe usar, ou ainda aquela que você usa melhor! E não sou eu quem vai dizer qual você deve usar, mas sim você mesmo!

Pode parecer estranho isso, mas é assim mesmo. Não se pode afirmar que a Linguagem C é melhor que a Linguagem BASIC, nem que Assembly é melhor que C e assim por diante. A melhor linguagem de programação é aquela que resolve seu problema, de maneira rápida e eficiente. Aos mais “puristas” chamo a atenção para o fato de eu não estar falando de compiladores, mas sobre Linguagem de Programação. Eu não estou tratando do tamanho de código final, velocidade de execução e outras, que são nos dias atuais características aplicáveis aos compiladores e não as Linguagens de Programação!

O iniciante neste momento pode até ficar com uma dúvida maior: se eu não conheço nenhuma, como vou aplicar a que sei melhor?. Para você que é iniciante a dica é experimente o maior número possível delas. Busque na Internet por alguns tutoriais e nas bibliotecas por livros e revistas que tratem do assunto. Não tenha pressa de instalar um compilador num primeiro momento. Isso não é necessário. Tenha calma e busque uma analise mais livre de “instalações e outras dependências”. Observe alguns programas e analise os comandos utilizados. Com qual grupo ou conjunto de comandos você se sentiu melhor? Este já é um primeiro indicio sobre qual Linguagem você escolherá para iniciar no mundo dos microcontroladores. Você perceberá que as linguagens de mais alto nível como BASIC e PASCAL parecem mais “interativas”. Já a Linguagem C (também considerada de “alto nível”) e a Linguagem Assembly (esta de baixo nível) são um pouco mais complexas, pois são de “médio” e “baixo” nível (no meu entender), respectivamente.

Obs.: O nível a que me refiro deve ser interpretado como “nível de interação do sistema com o usuário” e não nível referindo-se a uma qualidade qualquer. Quanto mais alto é o nível de uma linguagem de programação, mais perto ela estará do usuário e mais distante do sistema. Os comandos são mais “intuitivos”. Quanto mais baixo for o nível de uma linguagem, mais perto ela estará do sistema e mais longe do usuário e os comandos serão, conseqüentemente pouco intuitivos. Você notará que em determinadas linguagens de programação para se realizar uma determinada tarefa, escreve-se mais e ainda, é preciso conhecer o hardware para se realizar uma determinada tarefa. É o caso do Assembly. Já em BASIC, por exemplo, para se realizar uma mesma tarefa não é necessário um código muito grande e nem mesmo muito conhecimento do hardware, já que o conjunto linguagem/compilador fazem todo o trabalho pesado.

Escolhida algumas linguagens (ou pelo menos uma delas) é hora de buscar um compilador para a(s) mesma(s). A Internet é o melhor caminho para isso. Hoje é possível encontrar versões demos de muitos compiladores para os mais variados tipos de Linguagem de Programação e ai fica bem fácil experimentar um maior número delas.

Assim como no caso dos microcontroladores, o suporte para uma determinada Linguagem de Programação é também muito importante. De nada adianta escolher a “linguagem dos sonhos” se você não conseguir ajuda num primeiro momento. Procure na Internet por grupos e listas de usuários de microcontroladores (geralmente o que você pretende trabalhar) e veja se a linguagem que você escolheu é utilizada. E se é, quantos a utilizam? Quanto maior o número de usuários, maiores as chances de se obter ajuda para um determinado problema (e eles serão muitos no inicio). Quanto menor o número de usuários, menores as chances de se obter ajuda e menores, também, as chances de sucesso com a mesma.

Nos artigos que publiquei pela Editora Saber ao longo de seis anos, procurei sempre que possível utilizar o maior número de linguagens de programação, sem privilegiar nenhuma. Espera com isso, dar mais chances aos leitores de conhecer um maior número delas. 

Após ter escolhido uma linguagem de programação, instalado seu compilador e experimentado a mesma é hora de experimentar outra. Somente comparando várias você terá como saber qual é a melhor para você (Lembre-se você é único!). E saiba também que no mundo da “programação” tem um dito que diz o seguinte: “quem conhece uma, não conhece muito”, para não dizer “nada”! Procure conhecer sempre mais que uma linguagem (e mais que um microcontrolador também!). Não são raros os casos de empresas que desejam migrar seus produtos que utilizam um microcontrolador para um outro e muitas vezes também a própria Linguagem de Programação. Eu mesmo já prestei muito serviço deste tipo. “E para preencher está vaga, você tem que conhecer os dois lados da moeda, em ambos os casos!”.

Se você chegou até aqui e está se sentindo frustrado porque achou que eu daria aquele toque mágico, com aquela dica tipo escolha essa ou aquela porque são as melhores, minhas mais sinceras desculpas. Sinto muito! No mundo dos microcontroladores não existe mágica, nem milagres. Neste mundo, como diz um outro dito, você precisa de “1% de inspiração e 99% de transpiração”. Somente com trabalho duro e muito estudo que você conseguirá alcançar seus objetivos. O que eu posso fazer é seguir o seguinte lema: “não dou o peixe, mas posso ensiná-lo a pescar!” . E para você não dizer que eu não dei a dica de como “atar o primeiro nó”, abaixo você tem uma lista de alguns compiladores para três tipos de microcontroladores mais conhecidos e utilizados. O resto é com você! Boa pesquisa e uma excelente escolha! Até a próxima!


Márcio José Soares



Para microcontroladores PIC:

Compiladores BASIC:

PIC BASIC - http://melabs.com/products/pbc.htm

MIKRO BASIC - http://www.mikroe.com/en/compilers/mikrobasic/pic/


Compiladores C:

CCS C - http://www.ccsinfo.com/

Hi-Tech C - http://www.htsoft.com/

MIKRO C - http://www.mikroe.com/en/compilers/mikroc/pic/

SDCC - http://sdcc.sourceforge.net/


Compiladores ASM:

MPASM interno ao pacote MPLAB – http://www.microchip.com

GPASM - http://gputils.sourceforge.net/


Outros compiladores:

JAL – Just Another Language - http://www.voti.nl/jal/

PASCAL - http://www.mikroe.com/en/compilers/mikropascal/pic/



Para microcontroladores AVR:

Compiladores BASIC:

BASCOM AVR - http://www.mcselec.com/index.php?option=com_content&task=view&id=14&Itemid=41

FastAVR - http://www.fastavr.com/

MikroBasic for AVR - http://www.mikroe.com/en/compilers/mikrobasic/avr/


Compiladores C:

WinAVR - http://winavr.sourceforge.net/

GCC-AVR - http://packages.debian.org/unstable/devel/gcc-avr

AVR Libc - http://www.nongnu.org/avr-libc/

AVRStudio – http://www.atmel.com/avr


Compiladores ASM:

avra - http://avra.sourceforge.net/

AVRStudio – http://www.atmel.com/avr


Outros compiladores:

Pascal-scm for Atmel AVR - http://www.elab-pascal.de/AVRco/index_en.html

Embedded Pascal for AVR - http://users.iafrica.com/r/ra/rainier/pAVR.htm



Para microcontroladores 8051:

Compiladores BASIC:

BASCOM 8051 - http://www.mcselec.com/index.php?option=com_content&task=view&id=16&Itemid=41

8052 BASIC - http://www.lvr.com/microc.htm


Compiladores C:

SDCC - http://sdcc.sourceforge.net/

Keil C - http://www.keil.com/c51/c51.asp

Hi-Tech C - http://www.htsoft.com/products/compilers/8051ccompiler.php

Crossware C Compiler - http://www.crossware.com/datasheets/c8051nt.htm


Compiladores Assembly:

Raisonance ASM - http://www.raisonance.com/products/8051/MA51.php

ASEM-51 - http://plit.de/asem-51/


Outros compiladores:

P8052 – Pascal para 805X - http://users.iafrica.com/r/ra/rainier/p8052.htm



Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.