sábado, 13 de abril de 2019

Aprenda mais linguagens de programação, mesmo que você não vá usar


Imagine que você tem uma tarefa para realizar, e é livre para escolher a linguagem de programação. A tarefa envolve diversos tipos de manipulação de texto: leitura, segmentação, recortes, concatenação e execução de expressões regulares, tudo em UTF-8 e, certamente, precisa suportar emojis. Qual linguagem você escolheria? C? Por favor, não.

Outra atividade, agora numa instituição financeira. Precisamos fazer dezenas de milhares de operações financeiras de forma concorrente. Alta performance é um requisito fundamental. Deveríamos usar… Ruby? Qual é. Próxima: um script para ser usado apenas uma vez que renomeia diversos arquivos… Escrito em Java? Num browser … em Python? Programando um controlador para um dispositivo médico com… C#? Swift? Lua? Acho que você entendeu.

Diferentes linguagens de programação são boas em coisas diferentes, e ruins em outras. Cada uma faz certas coisas ficarem fáceis e outras mais difíceis. Dependendo do que nós queremos fazer podemos economizar muito trabalho escolhendo a linguagem que resolve o tipo de trabalho que enfrentamos mais facilmente.

Esse é um dos benefícios tangíveis de aprender mais linguagens. Você adiciona outra ferramenta ao seu repertório e quando surge a oportunidade, pode escolher a melhor opção. Mas eu quero ir um pouco mais à fundo.

Eu acredito que haja um enorme valor em aprender novas linguagens de programação mesmo caso — e lá vem — você nunca as use!

Linguagens modelam a forma como pensamos, cada uma de uma forma peculiar. E isso é verdade para linguagens de programação também. Cada linguagem possui um modelo mental diferente, uma perspectiva diferente para pensar sobre computação e como escrever programas.

Pegue SQL, por exemplo, e como ele modela sua ideia sobre o fluxo e a forma dos dados em seu programa. Agora considere como isso ficaria com uma linguagem imperativa, orientada a objetos como Java, ou uma linguagem funcional como Haskell. Ou em C. Imagine como seria um servidor de jogos multi-player em Python, em Haskell, em Erlang; Fazer streaming e processar terabytes de dados em C, em Go, em Clojure; uma interface de usuário em Tcl, em Lua, em JavaScript.

Toda linguagem de programação é uma lente através da qual podemos ver o problema que estamos tentando resolver. Através de algumas delas o problema parece complexo, exaustivo. Através de outras ele nem parece um problema, parece apenas diferente de outras coisas comuns que se faz nessa linguagem.

Aprendendo uma nova linguagem, mesmo que ela fique na sua caixa de ferramentas por toda a eternidade, você ganha uma nova perspectiva e uma forma diferente de pensar sobre os problemas. Uma vez que você implementou um servidor de jogos em Erlang, você verá servidores de jogos sob uma nova perspectiva. Depois de ter processado dados em Lisp, pensando nos dados como series de listas que podem ser moldadas enviando-as por diversas pequenas funções que podem ser compostas para formar pipelines de funções, você observará sombras desse padrão aparecer em todos os lugares. Assim que você tiver experimentado o gosto de gerenciar memória em C, você começará a apreciar o que Python, Ruby e Go fazem por você — enquanto nota o custo desse trabalho. E se um dia fizer uma interface de usuário em JavaScript com React.js, você notará que está pensando sobre componentes de UI de uma forma completamente diferente.

Essas novas perspectivas, essas ideias e padrões — elas perduram, elas ficam com você, mesmo que você acabe usando outra linguagem. E isso é poderoso o suficiente para te manter aprendendo novas linguagens, porquê uma das melhores coisas que podem acontecer com você, quando está tentando resolver um problema, é uma mudança de perspectiva.

Original disponível em https://thorstenball.com/blog/2019/04/09/learn-more-programming-languages/

Nenhum comentário:

Postar um comentário