Loading...

LINGUAGENS ESTRANHAS

Original

Agosto 2021

Quando as pessoas dizem que, em sua experiência, todas as linguagens de programação são basicamente equivalentes, estão fazendo uma afirmação não sobre linguagens, mas sobre o tipo de programação que fizeram.

99,5% da programação consiste em colar chamadas a funções de biblioteca. Todas as linguagens populares são igualmente boas nisso. Assim, é fácil passar toda a carreira operando na interseção das linguagens de programação populares.

Mas os outros 0,5% da programação são desproporcionalmente interessantes. Se você quer aprender do que se trata, a estranheza das linguagens estranhas é uma boa pista a seguir.

Linguagens estranhas não são estranhas por acidente. Pelo menos, não as boas. A estranheza das boas geralmente implica a existência de alguma forma de programação que não é apenas a colagem usual de chamadas de biblioteca.

Um exemplo concreto: macros Lisp. Macros Lisp parecem estranhas até para muitos programadores Lisp. Elas não estão apenas fora da interseção das linguagens populares, mas por sua natureza seriam difíceis de implementar corretamente em uma linguagem sem transformá-la em um dialeto de Lisp. E macros são definitivamente evidências de técnicas que vão além da programação colada. Por exemplo, resolver problemas escrevendo primeiro uma linguagem para problemas desse tipo e, em seguida, escrevendo sua aplicação específica nela. E isso não é tudo que você pode fazer com macros; é apenas uma região em um espaço de técnicas de manipulação de programas que, mesmo agora, está longe de ser totalmente explorado.

Portanto, se você quiser expandir seu conceito do que a programação pode ser, uma maneira de fazer isso é aprendendo linguagens estranhas. Escolha uma linguagem que a maioria dos programadores considera estranha, mas cuja mediana de usuários é inteligente, e então concentre-se nas diferenças entre essa linguagem e a interseção das linguagens populares. O que você pode dizer nessa linguagem que seria impossivelmente inconveniente dizer em outras? No processo de aprender a dizer coisas que você não conseguia dizer anteriormente, você provavelmente estará aprendendo a pensar coisas que não conseguia pensar anteriormente.

Agradecimentos a Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad e Robert Morris por lerem rascunhos disso.