hello

Aprendendo sobre linguagens de programação com os criadores

Qualquer pessoa que queira aprender programação tem que saber que as linguagens de programação são como ferramentas. Elas podem resolver vários tipos de problemas, mas em geral são boas – desempenho, facilidade etc – em problemas específicos. Por isso é importante conhecer um pouco da história por traz da criação. E esta é a serventia deste conteúdo.

PHP: Para startups e grandes empresas web

Rasmus Lerdorf cita as vantagens de iniciar uma empresa com PHP. Ele diz que a linguagem é extremamente escalável e que é fácil encontrar desenvolvedores com este conhecimento. A curva de aprendizado para trazer um novo desenvolvedor é mais suave do que nas outras linguagens.

É interessante notar que ele define equipe de desenvolvimento produtiva como aquela cujos membros são capazes de interagir e cooperar entre si, de forma amena e concisa. Neste cenário, desenvolvedor tido como “rockstar” pode estragar o projeto como um todo. Outro ponto é que os desenvolvedores devem conhecer os problemas de negócio da empresa, mas não devem se envolver na solução destes (não diretamente). Devem confiar que a equipe de negócio seja capaz de solucioná-los (propor novos negócios).

 

 

C++: Confiabilidade e rastreabilidade

Para Bjarne Stroustrup, não há linguagem que defina um produto. Mas sim, os requisitos deste produto definem qual é a linguagem, ou o estilo de linguagem, que se deve usar. Ele visualiza a linguagem C++, tida como linguagem de propósito geral, como uma linguagem que minimiza os erros, verificável e que tem estruturas de memória compactas. Por isto é robusta o suficiente para estar em sistemas de infraestrutura, ou sistemas que suportam as atividades (fundação sólida). Não é atoa que a linguagem é bastante utilizada em sistemas operacionais e sistemas especialistas críticos.

Há uma afirmação particularmente interessante em seu discurso: a menção de que uma aplicação web simples não precisa da confiabilidade que a linguagem fornece. Seria uma espécie de exagero (time to market). Outro ponto crucial é que Bjarne defende a variação no currículo educacional, focado nas áreas da computação. Em linhas gerais, um engenheiro de sistema operacional deve ter uma educação diferente de alguém que desenvolve um jogo, por exemplo.

Sobre a linguagem, a versão 11 (que substitui o padrão de 98) tem vantagens na sua capacidade de depuração de erros e na otimização do desempenho (código de máquina gerado) por focar em diversos tipos de variáveis. Ele cita as formas diferentes formas de escrever um número complexo.

 

Python: Open source permanece

Guido van Rossum conta neste vídeo a história da linguagem Python. Como ela surgiu e como quase morreu na época da bolha das empresas ponto com. Não fosse a luta por torná-la open source e pelo emprego que a empresa Zope deu a membros da equipe, provavelmente ela não teria a popularidade que tem hoje.

Cita também como a linguagem evolui desde a versão base 1.5.2 até a versão 3. Guido menciona a dificuldade que é mudar o núcleo da linguagem para evoluir a sua capacidade de resolver problemas complexos.  Quando a evolução muda muitas estruturas na linguagem, é natural que criem uma versão paralela. Isto porque muitos desenvolvedores permanecem na versão original. Na época da entrevista, o Python estava na iminência de sofrer uma grande modificação com a versão 3. E ainda havia a necessidade de manter a versão 2. Curiosamente este cenário perdurou até hoje.

Perl: Mais próximo da linguagem natural

Larry Wall é um desenvolvedor sui generis. Ele e sua esposa fizeram um curso de linguística porque pretendiam ser missionários. Um problema de saúde e a experiência prévia dele com compiladores fez a linguagem Perl surgir. Basicamente para resolver um problema que ele não conseguia com os recursos que tinha na época.

Uma das mais fascinantes histórias que Larry conta é esta: A linguagem humana tende a ser mais ambígua que a linguagem de programação, porque os seres humanos tendem a interpretar melhor o contexto de algo. Em algumas linguagens, as considerações são em função do que aconteceu antes de uma etapa. Em outras, há um contexto pequeno definido (e as variações são literalmente limitadas). Em Perl este contexto tende a ser mais amplo. A flexibilidade que a linguagem promove é algo como agrupar os dialetos e variações com mais naturalidade. Curiosamente é o que os desenvolvedores costumam chamar de linguagem macarrônica. Tem tantos dialetos (modos de fazer as coisas) que quase ninguém entende o código de outro desenvolvedor.

 

Java: Paradigma fácil de aprender

James Gosling diz neste vídeo o quão fácil é aprender Java, especialmente para aqueles que nunca tiveram contato com uma linguagem de programação. Ele se vale do argumento de que há muito material de aprendizado disponível. Afirma também que pensar em objetos não é algo difícil (se comparado com abstrações fortes de outras linguagens). Para quem não conhece, ela geralmente é utilizada para ensinar o paradigma de programação de orientação a objetos.

Em um outro vídeo para o Google, James fala do futuro do Java nas mãos da Oracle, que parece estar garantido (a Oracle depende muito da linguagem).

Outra curiosidade é a resposta que ele deu quando perguntaram qual seria a sua segunda linguagem. Embora programasse muito em C e Objective C, elas eram seu contragosto (a segunda reforçando o seu desgosto inicial). Diz também se identificar muito com Scala, que mistura orientação a objetos com paradigma funcional.

 

Ruby: Evolução incremental

Programador experiente Yukihiro Matsumoto percebeu que a linguagem Ruby tinha impacto global quando começou a notar os vários livros e sites criados com ela. Uma das suas citações mais interessantes é esta: “Desenvolver software não é fazer algo perfeito desde o começo, mas sim evoluir suas imperfeições a cada dia”. Faz muito sentido quando pensamos na filosofia ágil, que prevê evolução iterativa e incremental.