Pular para o conteúdo principal

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.

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.
Anônimo 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.
Brasilstor 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.
Unknown 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.

Postagens mais visitadas deste blog

Ciclo de Vida do Software

O ciclo de vida de um software descreve as fases pelas quais o software passa desde a sua concepção até ficar sem uso algum. O conceito de ciclo de vida de um software é muitas vezes confundido com o de modelo de processo (assunto do próximo artigo). Existem várias propostas e denominações para as fases do ciclo de vida de um software. Nossa proposta identifica 4 fases que são delimitadas por eventos típicos em diversos ciclos de vida. Cada fase inclui um conjunto de atividades ou disciplinas que devem ser realizadas pelas partes envolvidas. Essas fases são: Definição Desenvolvimento Operação Retirada Fase de Definição A fase de definição do software ocorre em conjunto com outras atividades como a modelagem de processos de negócios e análise de sistemas . Nesta atividade, diversos profissionais buscam o conhecimento da situação atual e a identificação de problemas para que possam elaborar propostas de solução de sistemas computacionais que resolvam tais problemas. Dentre as propostas...

O Modelo Espiral

O objetivo do modelo espiral é prover um metamodelo que pode acomodar diversos processos específicos. Isto significa que podemos encaixar nele as principais características dos modelos vistos anteriormente, adaptando-os a necessidades específicas de desenvolvedores ou às particularidades do software a ser desenvolvido. Este modelo prevê prototipação, desenvolvimento evolutivo e cíclico, e as principais atividades do modelo cascata. Sua principal inovação é guiar o processo de desenvolvimento gerado a partir deste metamodelo com base em análise de riscos e planejamento que é realizado durante toda a evolução do desenvolvimento. Riscos são circunstâncias adversas que podem surgir durante o desenvolvimento de software impedindo o processo ou diminuindo a qualidade do produto. São exemplos de riscos: pessoas que abandonam a equipe de desenvolvimento, ferramentas que não podem ser utilizadas, falha em equipamentos usados no desenvolvimento ou que serão utilizados no produto final, etc....

O que é Engenharia de Software?

O que é Engenharia? Vejamos duas definções: Engenharia é a atividade em que os conhecimentos científicos e técnicos e a experiência prática são aplicados para exploração dos recursos naturais, para o projeto, construção e operação de objetos úteis (Origem: Wikipédia, a enciclopédia livre). Engenharia é a aplicação de métodos científicos ou empíricos à utilização dos recursos da natureza em benefício do ser humano (Dicionário Houaiss) Essas definições não são suficientes para designar tudo aquilo que envolve engenharia. Para entender melhor o que é engenharia, propomos que você faça uma pesquisa para responder as seguintes questões: Qual a diferença entre o desenvolvimento de um produto de forma artesanal e o desenvolvimento seguindo os princípios de engenharia? Em outras palavras, qual a diferença entre o trabalho de um artesão e o de um engenheiro? Qual a diferença entre cozinhar e fazer engenharia de alimentos? O que as diferentes engenharias (civil, mecânica, elétrica/eletrônica, qu...