LENGUAJES EXTRAÑOS
OriginalAugust 2021
Cuando la gente dice que en su experiencia todos los lenguajes de programación son básicamente equivalentes, están haciendo una declaración no sobre los lenguajes sino sobre el tipo de programación que han hecho.
El 99.5% de la programación consiste en pegar llamadas a funciones de biblioteca. Todos los lenguajes populares son igualmente buenos en esto. Así que uno puede fácilmente pasar toda su carrera operando en la intersección de los lenguajes de programación populares.
Pero el otro 0.5% de la programación es desproporcionadamente interesante. Si quieres aprender en qué consiste, la rareza de los lenguajes extraños es una buena pista a seguir.
Los lenguajes extraños no son extraños por accidente. No los buenos, al menos. La rareza de los buenos suele implicar la existencia de alguna forma de programación que no es solo la habitual unión de llamadas a la biblioteca.
Un ejemplo concreto: las macros Lisp. Las macros Lisp parecen extrañas incluso a muchos programadores Lisp. No solo no están en la intersección de los lenguajes populares, sino que por su naturaleza serían difíciles de implementar correctamente en un lenguaje sin convertirlo en un dialecto de Lisp. Y las macros son definitivamente evidencia de técnicas que van más allá de la programación de pegamento. Por ejemplo, resolver problemas escribiendo primero un lenguaje para problemas de ese tipo, y luego escribir tu aplicación específica en él. Tampoco es todo lo que puedes hacer con las macros; es solo una región en un espacio de técnicas de manipulación de programas que incluso ahora está lejos de estar completamente explorado.
Así que si quieres ampliar tu concepto de lo que puede ser la programación, una forma de hacerlo es aprendiendo lenguajes extraños. Elige un lenguaje que la mayoría de los programadores consideren extraño pero cuyo usuario medio sea inteligente, y luego céntrate en las diferencias entre este lenguaje y la intersección de los lenguajes populares. ¿Qué puedes decir en este lenguaje que sería imposiblemente inconveniente decir en otros? En el proceso de aprender a decir cosas que no podías decir antes, probablemente estarás aprendiendo a pensar cosas que no podías pensar antes.
Gracias a Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad y Robert Morris por leer borradores de esto.