LANGAGES ÉTRANGES
OriginalAoût 2021
Lorsque les gens disent que, d'après leur expérience, tous les langages de programmation sont fondamentalement équivalents, ils ne font pas une déclaration sur les langages, mais sur le type de programmation qu'ils ont fait.
99,5 % de la programmation consiste à assembler des appels à des fonctions de bibliothèque. Tous les langages populaires sont également bons à cela. On peut donc facilement passer toute sa carrière à opérer dans l'intersection des langages de programmation populaires.
Mais les 0,5 % restants de la programmation sont disproportionnellement intéressants. Si vous voulez apprendre en quoi cela consiste, l'étrangeté des langages étranges est un bon indice à suivre.
Les langages étranges ne sont pas étranges par accident. Pas les bons, en tout cas. L'étrangeté des bons implique généralement l'existence d'une forme de programmation qui n'est pas simplement l'assemblage habituel d'appels de bibliothèque.
Un exemple concret : les macros Lisp. Les macros Lisp semblent étranges même à de nombreux programmeurs Lisp. Elles ne se trouvent pas seulement dans l'intersection des langages populaires, mais de par leur nature, il serait difficile de les implémenter correctement dans un langage sans le transformer en un dialecte de Lisp. Et les macros sont certainement la preuve de techniques qui vont au-delà de la programmation par collage. Par exemple, résoudre des problèmes en écrivant d'abord un langage pour les problèmes de ce type, puis en écrivant votre application spécifique dans celui-ci. Ce n'est pas tout ce que vous pouvez faire avec les macros ; ce n'est qu'une région dans un espace de techniques de manipulation de programmes qui, même aujourd'hui, est loin d'être complètement explorée.
Donc, si vous voulez élargir votre concept de ce que peut être la programmation, une façon de le faire est d'apprendre des langages étranges. Choisissez un langage que la plupart des programmeurs considèrent comme étrange mais dont l'utilisateur médian est intelligent, puis concentrez-vous sur les différences entre ce langage et l'intersection des langages populaires. Que pouvez-vous dire dans ce langage qui serait impossible à dire dans d'autres ? Dans le processus d'apprentissage de la façon de dire des choses que vous ne pouviez pas dire auparavant, vous apprendrez probablement à penser des choses que vous ne pouviez pas penser auparavant.
Merci à Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad et Robert Morris pour la lecture des brouillons de ce document.