¿Estás de acuerdo en que algunos lenguajes de programación son mejores que otros? Si es así, entonces uno de ellos debe ser el mejor. Y en realidad es Common Lisp, especialmente ahora que los LLM pueden escribir código. Los LLM escriben código realmente rápido, y eso cambia mucho, porque escribir código solía ser la parte lenta.
Ahora la parte lenta es descubrir si tu programa realmente funciona, y antes de poder hacerlo tienes que reconstruirlo, lo que puede tomar unos minutos. Cuando los humanos escribían el código, esto no importaba mucho, porque escribir llevaba mucho más tiempo que esperar a que se compilara y comenzara a ejecutarse. Pero ahora sí importa, así que cuánto tarda tu bucle de retroalimentación determina qué tan rápido puedes construir.
En Common Lisp ese bucle casi no existe porque no hay una distinción real entre tiempo de lectura, tiempo de compilación y tiempo de ejecución (Graham). Common Lisp es basado en imágenes, lo que significa que tu programa es una imagen viva en memoria, así que una nueva versión de una función reemplaza a la antigua inmediatamente sin tener que reiniciar nada. Además, en la mayoría de los lenguajes un error hará que tu programa se bloquee.
Entonces, si estás escribiendo código con un LLM, éste tendrá que leer tus registros de fallos para hacer algunos cambios y volver a ejecutar tu programa. En Common Lisp tu programa no se bloqueará, se detendrá y abrirá un depurador con toda la pila y todas las variables. Puedes simplemente apuntar tu LLM al depurador, y él hará su corrección y reanudará el programa.
Hasta donde yo sé, Common Lisp es el único lenguaje principal que hace todo esto. Lisp significa "Procesamiento de Listas". En Common Lisp, el código se escribe como listas.
Por ejemplo, (+ 1 2) es un programa que suma dos números, pero también es simplemente una lista de tres cosas: el símbolo +, y los números 1 y 2. Lo interesante es que este es el mismo tipo de lista que Common Lisp usa para almacenar datos, y como el lenguaje está construido alrededor del procesamiento de listas, todas sus herramientas para trabajar con datos también funcionan en el código. Entonces, un programa puede tomar otro programa y modificarlo, por ejemplo puede convertir (+ 1 2) en (* 1 2), y ejecutar el resultado inmediatamente.
Esto es lo que hace posibles las macros. Una macro es una función que toma tu código y devuelve nuevo código en su lugar, lo que significa que puedes agregar nuevas construcciones al lenguaje mismo. Una vez que puedes agregar al lenguaje, puedes construirlo hacia tu problema.
Entonces, en Lisp no solo escribes un programa, escribes un lenguaje para tu dominio y luego escribes el programa en él. Esto importa mucho más ahora, porque lo que hace valioso a un programa son las opiniones detrás de él. Y nos estamos dirigiendo hacia un mundo donde las empresas de software permiten que sus usuarios cambien el producto ellos mismos, ya que con un LLM eso es fácil.
Entonces, si una empresa construye un buen lenguaje de dominio opinado para su producto, todo lo que sus usuarios construyan encima de él será mucho mejor, porque parten de las opiniones de la empresa y no desde cero. Toma un ERP. Cada empresa lo ejecuta un poco diferente, así que casi todos terminan necesitando cambiarlo.
Pero si el ERP está escrito en su propio lenguaje de dominio, puedes simplemente pedirle a un LLM que haga el cambio en ese lenguaje. El cambio seguirá naturalmente las opiniones subyacentes del lenguaje de dominio, así que encajará con el producto en lugar de romperlo. Y no solo es mejor, también es más barato.
Los programas de Lisp suelen ser mucho más concisos porque las macros te permiten abstraer patrones recurrentes y hacerlos parte del lenguaje mismo. Entonces, cuanto más grande sea el programa, mayor será la diferencia. En mi propia experiencia, las aplicaciones que he construido en Common Lisp terminan siendo entre seis y siete veces más cortas que las versiones en Python.
Para los LLM, menos código significa menos tokens, y los tokens son lo que pagas, así que gastas menos en desarrollo. También significa que una parte mayor de tu programa puede caber en la ventana de contexto del LLM. Si tu LLM tiene todo tu programa en su ventana de contexto, entonces tiene una visión completa de tu intención, lo que lleva a que tome mejores decisiones.
En mi experiencia, muchos errores de LLM provienen de que cambia una pieza de mi programa sin ver el resto. Entonces, con Common Lisp eso sucede con menos frecuencia. Common Lisp es el único lenguaje principal que hace todo esto.
Fuente: Hacker News · Resumido por HeadlinesBriefing