sábado, 15 de agosto de 2009

Qual a melhor linguagem de programação?

Sempre perguntaram-me qual a melhor linguagem de programação. Esta é uma pergunta difícil de responder.

Recentemente, participei de uma discussão com colegas sobre quais linguagens deveriam ser ensinadas ao alunos e em qual ordem. Não tenho muita experiência com ensino de programação. Assim, não tive muito como contribuir sobre o aspecto pedagógico desta discussão. Mas dei a minha colaboração com a minha experiência e por considerar a linguagem um instrumento de interação humano-computador.

Tenho apenas experiência com o auto-aprendizado de várias linguagens, em diferentes paradigmas. Comecei com Basic, do Bill Gates, e Assembly 6502, em casa. Minha motivação: aprender o que é computador. Fui para a universidade e aprendi Fortran, Pascal, Assembly 8086 e Cobol, durante graduação. Estudei C, sozinho, para meu trabalho de IC. Também auto-aprendi Prolog e LISP, para o mestrado; C++ e Java para o doutorado; e Perl, Javascript, PHP, HTML e CSS para desenvolvimento Web.

Não fiz nenhum planejamento pedagógico para o meu aprendizado, mas acho que consegui dar conta de todas. Não sou fluente na maioria, mas programador não é o que sou de profissão. O melhor para mim foi a diversidade, saber pensar de forma diferente utilizando variadas linguagens e saber ler programas escritos por alunos em seus trabalhos, independente da linguagem.

Poucos trabalhos investigaram cientificamente qual a melhor linguagem? Melhor em que? para ensino? para a pratica profissional? para um certo domínio de aplicação?

Linguagens naturais e artificiais, são instrumentos de cognição (ação de conhecer) e comunicação (ação de por em comum). E estas são atividades humanas!

As linguagens de programação têm vários propósitos. Vou destacar 2 deles relacionados à cognição e comunicação:

- ser um instrumento para codificar conhecimento de pessoas na forma de instruções para um computador executar (para outras pessoas);

- ser um instrumento para comunicação e documentação do conhecimento em um time de engenharia de software.

Ou seja, são atividades de cognição e comunicação humanas que precisam ser eficazes e eficientes para que o programa tenha qualidades.

A interpretação destas linguagens pelos computadores é a parte mais fácil. O computador aprende facilmente a interpretar qualquer linguagem. Desde que alguém codifique um programa para tal, claro.

Afirmar qual a melhor linguagem para o processo ensino-aprendizado requer uma investigação científica com métodos adequados para avaliar cognição e comunicação humanas. Atualmente, o foco em CC tem sido quase sempre em avaliar as qualidades objetivas (desempenho, paradigmas, tipagem, etc.) destas linguagens. E nem sempre isto é feito! Linguagens de programação são instrumentos de interação humano-computador. Métodos de avaliação da disciplina IHC podem e devem ser aplicados para este fim.

Ensinar programação é ensinar um instrumento que seja mais adequado a estes propósitos. Ensinar apenas a utilizar o instrumento não é suficiente.

Não sou favorável a um profissional que apenas sabe falar "Javanês". Chamo Javanês ao estilo de programação utilizando sentenças lingüísticas em Java que são exclusivas daquela linguagem (expressões idiomáticas) praticadas por programadores extremamente competentes e especializados. Além soar pedante, como nos textos dos intelectuais letrados ou das sentenças dos magistrados que muitas vezes são propositadamente escritos para mostrar que eles estão acima dos mortais comuns, não incentiva o entendimento do código pelos seus pares. Isso não cabe numa atividade profissional coletiva, como é a engenharia de software, que visa a colaboração e a evolução da programação.

11 comentários:

Fábio Xavier disse...

Olá Jair,
Gostei do Texto e concordo quanto à necessidade do aprendizado de várias linguagens, para o bem do profissional de informática.

Repassarei aos meus alunos.

Um abraço

Americojr disse...

tb gostei do post,estou cursando analise e desenvolvimento de sistemas e pretendo ser um bom progamador em diversas plataformas...

Anônimo disse...

Excelente aula mas, poderia ter deixado claro logo de início que no seu ponto de vista a pergunta não tinha resposta. Evita que um monte de gente passe um bom tempo lendo o texto em busca de ao menos uma dica de por onde começar ou quais as tendências do mercado, por exemplo.

Anônimo disse...

Poxa em vez de ser claro logo, não, fica arrudiando e no final não respondeu a pergunta.

Luiz L. Marins disse...

A melhor resposta é esta:

"Não tenho muita experiência com ensino de programação. Assim, não tive muito como contribuir sobre o aspecto pedagógico desta discussão."

Jair C Leite disse...

Não sou programador, como disse no texto, e também não sou professor de programação. As opiniões acima refletem minha experiência como pesquisador e professor de engenharia de software e interação humano-computador.

your dreams disse...

Boa noite.
Gostei das idéias expostas, eu não sou programador e nem estou estudando programação, porem tenho um projeto ousado que depender de um conhecimento diversificado, não que seja para criar um programa inacessível, mais para que torne um program leve fácil de usar e de operar.
tenho uma ideia e se tiver algum desenvolvedor que queira participar de um projeto ousado, estou pronto compartilhar ideias.

Felipe Anias disse...

ótimo texto Jair, está de Parabéns, muito bom mesmo! Fico feliz em saber que há profissionais como você no qual eu posso me espelhar profissionalmente.

Carlos disse...

Aposto que durante todo seu aprendizado você não aprendeu que num texto devemos ser conciso, ao invés de prolixo.

Anônimo disse...

A melhor linguagem de programação é a sua linguagem, a linguagem que você domina. Claro que existem linguagens específicas para cada caso.
Cobol para grandes processamentos, C para aplicativos interagir com máquinas, PHP para web, etc.

Anônimo disse...

prazer me chamo Bruno, sou novo em programação e gostaria de ouvir um pouco sobre phyton e php e saber um pouco mais de cada pra ajudar em minhas escolha.