HeadlinesBriefing HeadlinesBriefing.com

Common Lisp est le meilleur langage pour le code LLM

Hacker News •
×

Êtes-vous d'accord pour dire que certains langages de programmation sont meilleurs que d'autres ? Si oui, alors l'un d'entre eux doit être le meilleur. Et en fait, c'est Common Lisp, surtout maintenant que les LLM peuvent écrire du code. Les LLM écrivent du code vraiment rapidement, et cela change beaucoup, parce qu'écrire du code était autrefois la partie lente.

Maintenant, la partie lente est de découvrir si votre programme fonctionne réellement, et avant de pouvoir le faire, vous devez le reconstruire, ce qui peut prendre quelques minutes. Lorsque les humains écrivaient le code, cela n'avait pas beaucoup d'importance, parce que l'écriture prenait beaucoup plus de temps que l'attente pour la compilation et le démarrage. Mais maintenant, c'est important, donc la durée de votre boucle de rétroaction détermine à quelle vitesse vous pouvez construire.

En Common Lisp, cette boucle n'existe presque pas parce qu'il n'y a pas de distinction réelle entre le temps de lecture, le temps de compilation et le temps d'exécution (Graham). Common Lisp est basé sur l'image, ce qui signifie que votre programme est une image vivante en mémoire, donc une nouvelle version d'une fonction remplace l'ancienne immédiatement sans avoir à redémarrer quoi que ce soit. De plus, dans la plupart des langages, une erreur fera planter votre programme.

Donc, si vous écrivez du code avec un LLM, il devra lire vos journaux de plantage pour apporter quelques modifications et relancer votre programme. En Common Lisp, votre programme ne plantera pas, il s'arrêtera et ouvrira un débogueur avec toute la pile et toutes les variables. Vous pouvez simplement pointer votre LLM vers le débogueur, et il fera sa correction et reprendra le programme. À ma connaissance, Common Lisp est le seul langage grand public qui fait tout cela.

Lisp signifie « traitement de listes ». En Common Lisp, le code est écrit sous forme de listes. Par exemple, (+ 1 2) est un programme qui ajoute deux nombres, mais c'est aussi simplement une liste de trois éléments : le symbole +, et les nombres 1 et 2.

Ce qui est intéressant, c'est que c'est exactement le même type de liste que Common Lisp utilise pour stocker des données, et puisque le langage est construit autour du traitement des listes, tous ses outils pour travailler avec des données fonctionnent également sur le code. Ainsi, un programme peut prendre un autre programme et le modifier, par exemple il peut transformer (+ 1 2) en (* 1 2), et exécuter le résultat immédiatement. C'est ce qui rend les macros possibles.

Une macro est une fonction qui prend votre code et retourne un nouveau code à sa place, ce qui signifie que vous pouvez ajouter de nouvelles constructions au langage lui-même. Une fois que vous pouvez ajouter au langage, vous pouvez le construire vers votre problème. Donc, en Lisp, vous n'écrivez pas seulement un programme, vous écrivez un langage pour votre domaine et ensuite vous écrivez le programme dans ce langage.

Cela a beaucoup plus d'importance maintenant, parce que ce qui rend un programme précieux, ce sont les opinions qui le sous-tendent. Et nous nous dirigeons vers un monde où les entreprises de logiciels laissent leurs utilisateurs modifier le produit eux-mêmes, puisque avec un LLM, c'est facile. Donc, si une entreprise construit un bon langage de domaine opiné pour son produit, tout ce que ses utilisateurs construisent dessus sera beaucoup meilleur, parce qu'ils commencent par les opinions de l'entreprise et non à partir de zéro.

Prenez un ERP. Chaque entreprise l'exécute un peu différemment, donc presque tout le monde finit par avoir besoin de le modifier. Mais si l'ERP est écrit dans son propre langage de domaine, vous pouvez simplement demander à un LLM de faire le changement dans ce langage.

Le changement suivra naturellement les opinions sous-jacentes du langage de domaine, donc il s'adaptera au produit au lieu de le casser. Et ce n'est pas seulement mieux, c'est aussi moins cher. Les programmes Lisp sont souvent beaucoup plus concis parce que les macros permettent d'abstraire les modèles récurrents et de les faire devenir partie intégrante du langage lui-même.

Donc, plus le programme devient grand, plus la différence devient importante. Dans mon expérience personnelle, les applications que j'ai construites en Common Lisp finissent par être environ six à sept fois plus courtes que les versions en Python. Pour les LLM, moins de code signifie moins de tokens, et les tokens sont ce pour quoi vous payez, donc vous dépensez moins en développement.

Cela signifie aussi qu'une plus grande partie de votre programme peut tenir dans la fenêtre de contexte du LLM. Si votre LLM a l'ensemble de votre programme dans sa fenêtre de contexte, alors il a une vue complète de votre intention, ce qui l'amène à prendre de meilleures décisions. Dans mon expérience, beaucoup de bogues des LLM viennent du fait qu'ils modifient une partie de mon programme sans voir le reste.

Donc, avec Common Lisp, cela se produit moins souvent. Common Lisp est le seul langage grand public qui fait tout cela.

Source: Hacker News · Résumé par HeadlinesBriefing