HeadlinesBriefing HeadlinesBriefing.com

Common Lisp ist die beste Sprache für LLM-Code

Hacker News •
×

Stimmen Sie zu, dass einige Programmiersprachen besser sind als andere? Wenn ja, dann muss eine davon die beste sein. Und tatsächlich ist es Common Lisp, insbesondere jetzt, da LLMs Code schreiben können. LLMs schreiben Code wirklich schnell, und das ändert vieles, denn früher war das Schreiben von Code der langsame Teil.

Jetzt ist der langsame Teil herauszufinden, ob Ihr Programm tatsächlich funktioniert, und bevor Sie das tun können, müssen Sie es neu erstellen, was einige Minuten dauern kann. Als Menschen den Code schrieben, war das nicht so wichtig, weil das Schreiben viel länger dauerte als das Warten auf die Kompilierung und den Start. Aber jetzt ist es wichtig, also bestimmt die Länge Ihres Feedback-Loops, wie schnell Sie bauen können.

In Common Lisp existiert dieser Loop praktisch nicht, weil es keinen echten Unterschied zwischen Lesezeit, Kompilierzeit und Laufzeit gibt (Graham). Common Lisp ist image-basiert, was bedeutet, dass Ihr Programm ein lebendiges Bild im Speicher ist, sodass eine neue Version einer Funktion die alte sofort ersetzt, ohne dass Sie etwas neu starten müssen. Außerdem führt in den meisten Sprachen ein Fehler dazu, dass Ihr Programm abstürzt.

Wenn Sie also Code mit einem LLM schreiben, muss es Ihre Crash-Logs lesen, um einige Änderungen vorzunehmen und Ihr Programm erneut auszuführen. In Common Lisp stürzt Ihr Programm nicht ab, sondern hält an und öffnet einen Debugger mit dem vollständigen Stack und allen Variablen. Sie können einfach Ihren LLM auf den Debugger richten, und er wird seine Korrektur vornehmen und das Programm fortsetzen.

Soweit ich weiß, ist Common Lisp die einzige Mainstream-Sprache, die all dies tut. Lisp steht für „Liste verarbeiten“. In Common Lisp wird Code als Listen geschrieben.

Zum Beispiel ist (+ 1 2) ein Programm, das zwei Zahlen addiert, aber es ist auch einfach eine Liste aus drei Elementen: dem Symbol + und den Zahlen 1 und 2. Interessanterweise ist dies genau die gleiche Art von Liste, die Common Lisp zur Datenspeicherung verwendet, und da die Sprache um die Verarbeitung von Listen herum aufgebaut ist, funktionieren alle ihre Tools für die Arbeit mit Daten auch auf Code. Daher kann ein Programm ein anderes Programm nehmen und es ändern, beispielsweise kann es (+ 1 2) in (* 1 2) umwandeln und das Ergebnis sofort ausführen.

Dies ist es, was Makros möglich macht. Ein Makro ist eine Funktion, die Ihren Code nimmt und an seiner Stelle neuen Code zurückgibt, was bedeutet, dass Sie neue Konstrukte zur Sprache selbst hinzufügen können. Sobald Sie zur Sprache hinzufügen können, können Sie sie auf Ihr Problem zuschneiden.

Also schreiben Sie in Lisp nicht nur ein Programm, sondern Sie schreiben eine Sprache für Ihr Gebiet und schreiben dann das Programm in dieser Sprache. Das ist jetzt wichtiger denn je, denn was ein Programm wertvoll macht, sind die Meinungen dahinter. Und wir bewegen uns auf eine Welt zu, in der Softwareunternehmen ihren Nutzern erlauben, das Produkt selbst zu ändern, denn mit einem LLM ist das einfach.

Deshalb wird, wenn ein Unternehmen eine gute, meinungsbasierte domänenspezifische Sprache für sein Produkt entwickelt, alles, was seine Nutzer darauf aufbauen, viel besser sein, weil sie mit den Meinungen des Unternehmens beginnen und nicht bei null. Nehmen wir ein ERP-System. Jedes Unternehmen führt es etwas anders aus, sodass nahezu jeder irgendwann Änderungen daran vornehmen muss.

Aber wenn das ERP in seiner eigenen domänenspezifischen Sprache geschrieben ist, können Sie einfach einem LLM sagen, die Änderung in dieser Sprache vorzunehmen. Die Änderung wird natürlich den zugrundeliegenden Meinungen der domänenspezifischen Sprache folgen, sodass sie zum Produkt passt, anstatt es zu zerstören. Und es ist nicht nur besser, sondern auch günstiger.

Lisp-Programme sind oft viel kürzer, denn Makros ermöglichen es Ihnen, sich wiederholende Muster zu abstrahieren und sie selbst zur Sprache zu machen. Deshalb wird der Unterschied größer, je größer das Programm wird. In meiner eigenen Erfahrung enden die Apps, die ich in Common Lisp gebaut habe, etwa sechs- bis siebenmal kürzer als die Python-Versionen.

Für LLMs bedeutet weniger Code weniger Tokens, und Tokens sind das, wofür Sie bezahlen, also geben Sie weniger für die Entwicklung aus. Außerdem passt ein größerer Teil Ihres Programms in das Kontextfenster des LLM. Wenn Ihr LLM Ihr gesamtes Programm in seinem Kontextfenster hat, dann hat es einen vollständigen Überblick über Ihre Absicht, was zu besseren Entscheidungen führt.

In meiner Erfahrung stammen viele LLM-Bugs daraus, dass es ein Teil meines Programms ändert, ohne den Rest zu sehen. Deshalb passiert das mit Common Lisp seltener. Common Lisp ist die einzige Mainstream-Sprache, die all dies tut.

Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing