LENGUAJES RAROS
Originalagosto 2021
Cuando las personas dicen que en su experiencia todos los lenguajes de programación son básicamente equivalentes, están haciendo una afirmación no sobre los lenguajes, sino sobre el tipo de programación que han realizado.
El 99.5% de la programación consiste en unir 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 lenguajes de programación populares.
Pero el otro 0.5% de la programación es desproporcionadamente interesante. Si quieres aprender de qué se trata, la rareza de los lenguajes raros es una buena pista a seguir.
Los lenguajes raros no son raros por accidente. Al menos, no los buenos. La rareza de los buenos generalmente implica la existencia de alguna forma de programación que no es solo la habitual unión de llamadas a bibliotecas.
Un ejemplo concreto: las macros de Lisp. Las macros de Lisp parecen raras incluso para muchos programadores de Lisp. No solo no están en la intersección de 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 escribiendo tu aplicación específica en él. Tampoco es todo lo que puedes hacer con 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 expandir tu concepto de lo que puede ser la programación, una forma de hacerlo es aprendiendo lenguajes raros. Elige un lenguaje que la mayoría de los programadores consideren raro, pero cuyo usuario medio sea inteligente, y luego concéntrate en las diferencias entre este lenguaje y la intersección de lenguajes populares. ¿Qué puedes decir en este lenguaje que sería increíblemente inconveniente decir en otros? En el proceso de aprender a decir cosas que no podías decir anteriormente, probablemente estarás aprendiendo a pensar cosas que no podías pensar anteriormente.
Gracias a Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad y Robert Morris por leer borradores de esto.