Tipos e mentalidades de programação, por David Heinemeier Hanson
Tags: tipos
Published: 2023-05-08 22:23:32

Gostei muito do texto ["Programming types and mindsets"](https://world.hey.com/dhh/programming-types-and-mindsets-5b8490bc), de David Heinemeier Hanson, o [DHH](https://world.hey.com/dhh), criador do Ruby on Rails (projeto em que José Valim, criador de Elixir, trabalhou por um bom tempo). Fiquei sabendo do texto através [deste tweet do Osvaldo Santana](https://twitter.com/osantana/status/1655371449056542720):

{% twitter 1655371449056542720 %}

Por quê? Porque eu gosto de tipagem dinâmica e de programação funcional mas não me atrevo a dizer que:

- Tipagem dinâmica é MELHOR que tipagem estática

- Programação Funcional é SUPERIOR a Programação Orientada a Objetos.

Não! É apenas meu gosto, minha personalidade.

Então vamos ao texto traduzido:

## Tipos e mentalidades de programação

Uma das mais antigas divergências na programação é a da tipagem estática versus a dinâmica. Durante toda a minha carreira, ouvi milhões de argumentos de ambos os lados, mas vi muito poucos convencerem alguém de algo. Como racionalizações disfarçadas de razão raramente funcionam em questões de fé. O cavaleiro sempre justificará o caminho do elefante.

Isso não quer dizer que não existam pessoas que mudaram de opinião. Na verdade, esses indivíduos geralmente são os que mais gritam racionalizações de todos os tipos. Frequentemente com o charme de um onívoro de longa data que de repente se tornou vegano ou de um banqueiro tradicional que teve sorte no mercado de criptomoedas. Quanto mais curta a fé, mais brilhante é a chama.

Pessoalmente, sou um cara assumidamente a favor da tipagem dinâmica. É por isso que amo tanto Ruby. Ele tira proveito total da tipagem dinâmica para permitir uma sintaxe poética que resulta em um código tão bonito. Para mim, Ruby com tipagem estática explícita seria como uma salada com uma bola de sorvete. Simplesmente não combinam.

Também devo confessar que já abracei a posição evangelizadora para a tipagem dinâmica no passado. Ao ponto de sofrer de uma aflição de Uma Única Proposição Verdadeira. Vendo a falta de entusiasmo pela tipagem dinâmica como um reflexo de falta de educação, experiência ou talvez até de competência.

Oh, que tolice.

É como tentar convencer um introvertido de que ele realmente gostaria de festas se apenas se soltasse um pouco. Que, na verdade, é muito divertido ficar em salas lotadas, por horas a fio, gritando para se comunicar, porque aquela VIBE!

Hoje em dia, aprendi a apreciar a magnificência da multiplicidade. A programação seria uma empreitada terrível se todos fôssemos limitados ao mesmo paradigma. A natureza humana é muito variada para aceitar tal restrição em sua criatividade.

Você consegue imaginar se toda a arte visual tivesse que ser renderizada no estilo do cubismo? Ou do realismo? Ou se todos os romances fossem escritos no estilo curto e direto de Hemmingway? Que chatice seria tudo isso rapidamente!

Isso arruinaria a mágica da programação. Essa fusão única de arte e engenharia.

Mas demorei um pouco para chegar a essas conclusões. Sou um solucionista em recuperação. Então, quando vejo pessoas cruzarem o coração em descrença de que alguém, em algum lugar, possa preferir JavaScript em vez de TypeScript, sorrio e lembro dos dias em que reconhecia o mesmo zelo no espelho.

Isso não significa que todos os assuntos relacionados a abordagens de programação se resumam a mentalidades diferentes. Há limites para esse relativismo. Porém, a distinção entre tipagem dinâmica e estática é certa dentro de suas próprias características. O mesmo vale para a programação funcional versus orientada a objetos. Em ambos os eixos, há casos de excelentes softwares criados ao longo das décadas (e também de coisas horríveis!).

Hoje em dia, as pessoas têm a capacidade de se expressar igualmente bem em ambas as extremidades. No entanto, essa habilidade ambidestra parece ser rara, como é evidenciado pela descrença tão frequentemente expressa por ambos os lados de que o outro possa ter uma posição razoável.

Eu não sou ambidestro. Eu não gosto de tipagem estática, e objetos animam minha mente. Mas aprendi a apreciar o fato de que outras pessoas iluminam sua criatividade com tanta intensidade quanto eu, usando restrições de programação funcional e tipos especificamente definidos.

Desde que eu nunca precise poluir o meu Ruby com sugestões de tipo ou escrever todo o código front-end em TypeScript, posso conviver felizmente com aqueles que adoram Go ou não suportam JavaScript. Vive la différence!

## Fim

E então, gostaram?

Vou mudar um pouco mas faço dele as mainhas palavras:

Eu não gosto de tipagem estática, e _funções_ animam minha mente. Mas aprendi a apreciar o fato de que outras pessoas iluminam sua criatividade com tanta intensidade quanto eu, usando restrições de _programação orientada a objetos_ e tipos especificamente definidos.