LENGUAJES RAROS
OriginalAgosto 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 unir llamadas a funciones de biblioteca. Todos los lenguajes populares son igualmente buenos en esto. Por lo 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 de qué se trata, la rareza de los lenguajes raros es una buena pista a seguir.
Los lenguajes raros no son raros por accidente. No los buenos, al menos. La rareza de los buenos generalmente implica la existencia de alguna forma de programación que no es solo la unión habitual 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 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 primero escribiendo un lenguaje para problemas de ese tipo, y luego escribiendo tu aplicación específica en él. Ni siquiera es todo lo que se puede 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 ser explorado por completo.
Entonces, 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 promedio sea inteligente, y luego concé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 de decir en otros? En el proceso de aprender a decir cosas que no podrías decir antes, probablemente estarás aprendiendo a pensar cosas que no podrías pensar antes.
Gracias a Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad y Robert Morris por leer borradores de esto.