[Pesquisar este blog]

quarta-feira, 28 de dezembro de 2016

Desenvolvedor Poliglota

Poliglota. Segundo o Grande Dicionário Houaiss, adjetivo e substantivo de dois gêneros, cujo principal significado é aquele que sabe ou fala muitas línguas. Este termo é geralmente aplicado para pessoas que falam mais de três línguas. Mas também pode ser aplicado aos desenvolvedores capazes de construir softwares usando várias linguagens de programação.



Neste post vamos discutir (e incentivar) o aprendizado de várias linguagens de programação partindo do argumento conhecido da necessidade de conhecer vários idiomas.

Bilíngue, Trilíngue, Poliglota, Hiperglota


O domínio de vários idiomas é considerando, pela maioria dos recrutadores, um diferencial, que potencializa as qualidades de qualquer candidato, como nesta matéria da revista Exame.

Mas o maior benefício de falar várias línguas é o maior desenvolvimento de empatia, da criatividade, sem contar que é benéfico para o cérebro em qualquer idade, como afirma a revista Deutsche Welle. Não é necessário ser um hiperglota.

Linguagens de Programação

As estimativas sobre o número de linguagens de programação existentes são bastantes imprecisas, mas são várias centenas. Um artigo na DZone lista 256 (duzentas e cinquenta e seis) linguagens de programação diferentes, começando por 4D (4th Dimension), ABAP, ABC, e terminando em yacc, Yorick e Z Shell.

E por que tantas linguagens? O grande número de linguagens de programação que surgiu é justificado por dois fatores principais: evolução e necessidade.

É bastante comum que, após o uso sistemático de uma linguagem de programação qualquer, que sejam observadas limitações em sua sintaxe e até mesmo defeitos em seu projeto. Isto estimula a criação de novas versões desta linguagem. Mas como existem questões comerciais, problemas com retrocompatibilidade e outras, novas versões podem não atender os anseios dos programadores, motivando a construção de novas linguagens derivadas. Isto é a evolução, vista como motor de criação de novidades.

Outra situação é que problemas específicos, difíceis de solucionar com as linguagens disponíveis (ou conhecidas), acabem sendo solucionados por linguagens de programação construídas para esta finalidade ou para este domínio. Aqui a necessidade é a mãe da invenção.

Assim, muitas linguagens de programação são semelhantes, compartilhando uma raiz comum que nada mais é que o modelo conceitual tomado para seus projetos. Partindo da linguagem C (que também foi uma evolução de outras linguagens), do paradigma imperativo, surgiram: C++, que acrescentou o paradigma da orientação a objetos; PHP, voltado para o desenvolvimento web; Java, com sua natureza multiplataforma; C#, uma releitura deste mesmo conjunto de linguagens para a plataforma Microsoft; entre outras.

O que é importante notar é que enquanto algumas linguagens de programação são semelhantes; outras são substancialmente diferentes. E tais diferenças enfatizam os propósitos de cada uma destas alternativas.

Porque ser um Desenvolvedor Poliglota


Exatamente pelo fato de cada linguagem ter sido criada com objetivos claros em mente, a solução de um problema específico pode ser bastante facilitada pela escolha da linguagem de programação mais adequada. Note que a palavra usada aqui é adequada, pois não existe opção correta ou incorreta, mas apenas uma escolha que pode conduzir a melhores resultados no processo de desenvolvimento.

Para que possamos escolher uma linguagem de adequada para a solução de um problema, dois fatores são determinantes: quais linguagens de programação são conhecidas; e quais são convenientes no cenário do problema.

Se não conhecemos linguagens diferentes, não poderemos escolher. E aquela que conhecemos pode não ser a melhor alternativa. Além disso, o cenário do problema é preponderante: se o cliente tem uma coleção de aplicações numa linguagem específica, como propor a construção de um novo software com outra plataforma, que só dificultara a reutilização de módulos e a integração?

Conhecer várias linguagens é, então, uma necessidade do desenvolvedor de software profissional, ou seja, é importante ser um programador poliglota!

Linguagens de Programação Populares


Existem vários rankings, mantidos cuidadosamente por revistas especializadas e outras organizações na internet, interessantes em medir a popularidade das linguagens de programação. Cada índice tem metodologia própria, diferente, mas que mostra uma visão distinta da questão central: qual a linguagem de programação com maior utilização?

Seguem as oito linguagens de programação mais populares segundo os dados colhidos de alguns dos rankings disponíveis para 2016: 
  • TIOBE:
    Java, C, C++, Python, VB.NET, C#, PHP, JavaScript
  • GitHub PYPL:
    Java, Python, PHP, C#, JavaScript, C++, C, Objective-C
  • RedMonk:
    JavaScript, Java, ,PHP, Python, C#, C++, Ruby, CSS
  • English4IT:
    Java, C, C++, PHP, VB.NET, Python, C#, JavaScript
  • IEEE Spectrum:
    C, Java, Python, C++, R, C#, PHP, JavaScript
  • NewRelic:
    Java, C#, C++, JavaScript, PHP, Python, Ruby, C

É fácil notar que algumas linguagens estão sempre nestes rankings, o que é ilustrado na figura que segue. A pontuação atribuída (8 para 1º, 7 para 2º, até 1 para 8º) permite agregar as listas diferentes numa última classificação (última coluna da figura). Lá vemos: Java, C++, Python, C, PHP, C#, JavaScript e VB.NET.

Rankings 2016 das Linguagens de Programação

Java não é surpresa no primeiro lugar. Mas as veteranas C++ e C continuam nas listas das populares. Python vem crescendo em termos de popularidade. PHP e JavaScript são linguagens para web (no criterioso ranking da StackOverflow, JavaScript figura como a linguagem de programação mais usada no mundo). Se outros rankings forem consultados, veremos outras diferenças, como na figura abaixo:



De fato, a colocação nestes rankings não importa quase nada. O que vale, mesmo, é que a linguagem aparece na listagem de popularidade. E aí, a pergunta que não quer calar: você é capaz de programar em várias destas linguagens?

Como é muito provável que seu próximo empregador deseje isto, que seus colegas trabalhem com isso, e que existam muitos projetos que fazem uso destas linguagens, que tal pensar em expandir seus conhecimentos desenvolvendo suas habilidade de programação numas quatro ou cinco destas linguagens?

Espero ter convencido você! Fica a dica!

Para saber mais