LINGUAGENS ESTRANHAS
OriginalAugust 2021
Quando as pessoas dizem que, em sua experiência, todas as linguagens de programação são basicamente equivalentes, elas estão fazendo uma declaração não sobre linguagens, mas sobre o tipo de programação que fizeram.
99,5% da programação consiste em juntar chamadas para funções de biblioteca. Todas as linguagens populares são igualmente boas nisso. Então, pode-se facilmente passar toda a carreira operando na intersecção de linguagens de programação populares.
Mas os outros 0,5% da programação são desproporcionalmente interessantes. Se você quiser aprender do que isso consiste, a estranheza das linguagens estranhas é uma boa pista a seguir.
Linguagens estranhas não são estranhas por acaso. Não as boas, pelo menos. A estranheza das boas geralmente implica a existência de alguma forma de programação que não é apenas a usual colagem de chamadas de biblioteca.
Um exemplo concreto: macros Lisp. Macros Lisp parecem estranhas até mesmo para muitos programadores Lisp. Elas não estão apenas na intersecção de 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 de colagem. Por exemplo, resolver problemas escrevendo primeiro uma linguagem para problemas desse tipo e, em seguida, escrevendo seu aplicativo específico nela. Nem é só isso 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.
Então, 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 cujo usuário mediano é inteligente, e então concentre-se nas diferenças entre essa linguagem e a intersecção de linguagens populares. O que você pode dizer nessa linguagem que seria impossivelmente inconveniente de dizer em outras? No processo de aprender a dizer coisas que você não poderia dizer antes, você provavelmente estará aprendendo a pensar coisas que você não poderia pensar antes.
Obrigado a Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad e Robert Morris por lerem rascunhos disso.