Como eu me tornei poliglota em algumas linguagens de programação

Wilson Júnior
4 min readNov 22, 2016

--

Muitas pessoas pensam que para ser um poliglota de desenvolvimento de software é uma tarefa difícil, porém, com a curiosidade e oportunidade de trabalhar em diversos projetos de várias linguagens deixa o caminho bem mais fácil, cada linguagem possui uma particularidade e te ensina a pensar de um jeito diferente.

1. Python

Foi minha primeira linguagem de programação, comecei a aprender no final de 2006, python prega a clareza e simplicidade, excelente linguagem para começar a programar, o que eu gosto muito dela: simplicidade e agilidade, o que não gosto: ela possui mecanismos como o GIL (global interpreter lock) que não permite que uma aplicação rode mais de uma thread ao mesmo tempo, o que acaba utilizando uma única CPU por aplicação, existe até projetos como UWSGI e Gunicorn que cria vários forks de processos para o melhor aproveitamento de CPU.

O Zen do Python, por Tim Peters

Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Linear é melhor do que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para quebrar as regras.
Ainda que praticidade vença a pureza.
Erros nunca devem passar silenciosamente.
A menos que sejam explicitamente silenciados.
Diante da ambigüidade, recuse a tentação de adivinhar.
Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo.
Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês.
Agora é melhor que nunca.
Embora nunca freqüentemente seja melhor que
.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces são uma grande idéia — vamos ter mais dessas!

Projetos que gosto muito em Python: Tornado, Django, Celery e MongoEngine.

2. GO Lang

Linguagem que o Google criou em 2009, possui uma filosofia de simplicidade muito parecida com a do python: Less is exponentially more, porém focada em um nível de abstração um pouco mais baixo, precisamos lidar com mutexes, goroutines e channels para fazer uma aplicação concorrente, possui um desempenho CPU bound superior a maioria de linguagens que já trabalhei, excelente para produzir aplicações de larga escala.

Projetos que me influenciaram a aprender GO: Tsuru e Docker

Repositório com dicas de vários projetos incríveis escritos em GO: https://github.com/avelino/awesome-go

Onde aprender: https://tour.golang.org/welcome/1

3. Erlang

Foi a linguagem de programação que mais me encantei em relação a concorrência de usuários, clusterização, programação funcional, o modelo de atores muda totalmente a forma comum de pensar, realmente ela muda a sua abstração em relação a como podemos fazer aplicações concorrentes e tolerante a falhas.

Onde aprender: http://learnyousomeerlang.com/content

4. Javascript

Javascript é a linguagem que domina a web, está presente nos nossos navegadores, celulares e servidores com node.js.

Ultimamente com o ES2016 escrever código javascript se tornou divertido, o React trouxe um modelo de componentização que permite escrever nossas interfaces de forma isolada.

Javascript não possui um guia de estilo padrão, porém eu gosto muito do modelo criado pela AirBnb: https://github.com/airbnb/javascript

5. C

C foi minha segunda linguagem de programação, hoje raramente trabalho com C, mas em tempos remotos já trabalhei com GObject e Glib na qual eu conseguia fazer orientação a objetos utilizando C, depois de algum tempo trabalhei também com módulos do Nginx, o que mais gosto na linguagem: a possibilidade de cuidar bem do tempo de alocação e liberação de memória, possibilidade de desenvolver para micro-controladores, módulos do kernel linux, etc.

6. Java

Java eu aprendi o básico na faculdade, não tive oportunidade de trabalhar com java para servidores, porém, desenvolvi durante um tempo usando a plataforma Java para Android. o que mais gostava da linguagem: a JVM parece ser uma máquina virtual incrível com um bom JIT e suporte a vários sistemas operacionais, o que não gostava: a linguagem é bastante verbosa.

7. Ruby

Quando cheguei na Globo.com trabalhei durante um ano e pouco em um projeto escrito em Ruby utilizando o framework Rails, o conceito de "Optimize for programmer happiness" é bem interessante, ler um código ruby parece uma poesia, porém também não permite utilizar mais de uma CPU como o Python, o uso de puma, unicorn ou passenger para utilizar melhor as CPUs do servidor é necessário.

Uma linguagem bem legal que utiliza uma filosofia bem próxima é o Elixir que pode unir a sintaxe agradável com o uso de multi processadores nativo.

Conclusão

As linguagens de programação hoje são apenas ferramentas, que cada uma pode fazer o best-fit para um determinado problema, a habilidade de lidar bem com algoritmos é um requisito para todas, o que difere é a abstração de cada uma utiliza: Orientada a objetos, estrutural, funcional, como é o garbage collector, modelo CSP, modelo de atores, como eu importo uma biblioteca, como ela lida com múltiplas CPUs, etc.

Envolver o time ou equipe para a adoção de uma nova linguagem, Dojos, workshops são atividades recomendadas para desenvolvimento coletivo.

--

--