← Neueste Arbeiten
🤖 AI

A Literate Programming Environment for Human and Machine Agents

Dieses Paper präsentiert eine Literate-Programming-Umgebung, die ausführbaren Code, natürliche Sprache und strukturierte Daten durch eine Name-Graph-Architektur integriert und dadurch den Kontext für Large Language Models optimiert sowie maschinellen Agenten symbolbewusste Werkzeuge bereitstellt, die mit menschlichen IDEs vergleichbar sind.

Ursprüngliche Autoren: Adam T. Burke

Veröffentlicht 2026-08-26
📖 8 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Adam T. Burke

Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

In der modernen Ära der Computertechnik ist ein neuer Partner in die Werkstatt eingetreten: das Sprachmodell. Dies sind gewaltige, flexible Systeme, die auf enormen Bibliotheken menschlicher Texte trainiert wurden und in der Lage sind, Anweisungen zu lesen und Code mit verblüffender Flüssigkeit zu schreiben. Für viele fühlt sich dieser Wandel wie eine plötzliche Erweiterung der Leistungsfähigkeit an, die es Neulingen ermöglicht, Skripte zu erstellen, und Experten, massiven Systemen nachzugehen. Doch eine grundlegende Spannung bleibt bestehen. Während diese Maschinen Sprache verarbeiten können, „lernen“ sie nicht wirklich oder erinnern sich daran, was in einem Gespräch geschah, sobald die Sitzung endet. Sie verlassen sich vollständig auf den Text, der ihnen aktuell sichtbar ist – ein begrenztes Kontextfenster, das ständig mit relevanten Details neu gefüllt werden muss. Wenn ein Programmierer möchte, dass die Maschine die Logik hinter einem Stück Code versteht, muss diese Logik direkt neben dem Code im Text präsent sein. Dies schafft eine Herausforderung für die Art und Weise, wie wir Software schreiben. Traditionell wurde Code und die menschlichen Erklärungen zu diesem Code an getrennten Orten aufbewahrt oder in Kommentaren verborgen, die Maschinen oft ignorieren. Aber wenn die Maschine ein wahrer Kollaborateur sein soll, müssen die Geschichte des Programms und das Programm selbst zusammenleben, Seite an Seite, in einem Format, das sowohl Menschen als auch Maschinen mit gleicher Leichtigkeit lesen können.

Dies ist das zentrale Problem, das durch eine neue Umgebung namens notlob adressiert wird, die von dem Forscher Adam T. Burke entwickelt wurde. Die Arbeit schlägt eine Rückkehr zu einer alten Idee vor, die als „Literate Programming“ bekannt ist, jedoch aktualisiert für ein Zeitalter, in dem sowohl Menschen als auch künstliche Agenten dieselben Dokumente lesen. In diesem System ist ein Softwareprojekt nicht eine Sammlung separater Dateien für Code, Dokumentation und Tests. Stattdessen ist es ein einziges, fließendes Dokument, das wie ein Essay aussieht. Der Text erklärt die Ideen, die Motivation und das Design, während die ausführbaren Anweisungen direkt in die Prosa eingebettet sind. Die Forscher haben ein funktionierendes System gebaut, das dieses kombinierte Dokument als die primäre Quelle der Wahrheit behandelt. Wenn das System die Datei liest, sieht es nicht nur Wörter; es erstellt eine detaillierte Karte darüber, wie jeder Name, jedes Konzept und jeder Teil des Codes mit den anderen in Beziehung steht. Diese Karte, die der Autor als „Name-Graph“ bezeichnet, ermöglicht es einem maschinellen Agenten, das Projekt nicht durch die Suche nach Schlüsselwörtern zu navigieren, sondern indem er den logischen Verbindungen zwischen Ideen folgt, ganz ähnlich wie ein menschlicher Leser einem Gedankenfaden in einem Buch folgt.

Das Design von notlob wird von drei einfachen Beobachtungen angetrieben, wie sich das Programmieren verändert. Erstens ist die natürliche Sprache zum dominierenden Weg geworden, um Software zu spezifizieren und zu organisieren, wenn man mit künstlicher Intelligenz arbeitet. Zweitens sind die computergenerierten Prüfungen, die verifizieren, ob der Code noch funktioniert, wertvoller denn je und dienen als zuverlässige Feedbackschleife für die Agenten. Drittens ist die aktuelle Generation dieser Sprachmodelle stark abhängig von der Menge an Text, die sie gleichzeitig sehen können. Um dies zu adressieren, haben die Forscher eine Sprache geschaffen, in der die Erklärung, die Ausführung und die Verifizierung im selben Dokument liegen. Ein typisches Dokument beginnt mit einem Titel und einer Einleitung, gefolgt von der Kernlogik des Programms. Darauf folgt ein Abschnitt für Tests und Referenzen, getrennt durch eine einfache Linie. Das System verwendet spezifische Marker, um zwischen einem Stück Prosa, einem Codeblock, einer Eigenschaft, die immer wahr sein muss, und einem spezifischen Testfall zu unterscheiden. Zum Beispiel könnte ein Abschnitt eine mathematische Sequenz beschreiben, gefolgt unmittelbar von dem Code, der sie generiert, und dann einem Textblock, der besagt, dass der Code bestimmte Regeln erfüllen muss. Das System führt diese Regeln dann aus, um sicherzustellen, dass der Code sich so verhält, wie der Text behauptet.

Um dies zu ermöglichen, entwickelten die Forscher einen Parser, der Namen als die wichtigsten Objekte im System behandelt. Im traditionellen Programmieren ist ein Name nur eine Bezeichnung für eine Variable oder Funktion. In notlob ist ein Name ein „First-Class Citizen“, der die geschriebene Erklärung mit dem ausführbaren Code verknüpft. Wenn das System eine Datei verarbeitet, konstruiert es einen Graphen, der den Text, der ein Konzept beschreibt, mit dem Code verbindet, der es implementiert, und mit den Tests, die es verifizieren. Diese Struktur ermöglicht es einem maschinellen Agenten, von einer hochgradigen Idee zu den spezifischen Zeilen des Codes zu springen, die sie realisieren, oder zu finden, wo ein bestimmtes Konzept verwendet wird, ohne sich in einer Flut von Dateien zu verlieren. Das System enthält Werkzeuge, die diese Karte in Standardformaten exportieren können, sodass andere Software die Beziehungen zwischen den verschiedenen Teilen des Projekts abfragen kann. Dies ahmt die Art und Weise nach, wie ein menschlicher Programmierer eine integrierte Entwicklungsumgebung nutzt, um zu finden, wo eine Funktion definiert ist oder wer sie aufruft, aber es tut dies durch das Verständnis der semantischen Bedeutung des Textes, nicht nur der Dateistruktur.

Die Forscher testeten diese Umgebung, indem sie mehrere funktionierende Programme bauten, darunter ein Werkzeug zur Konvertierung von Zahlen in römische Ziffern und ein webbasiertes Spiel, das auf Petri-Netzen basiert – Diagrammen, die zur Modellierung von Systemen mit interagierenden Teilen verwendet werden. In einem Experiment nutzten sie einen künstlichen Agenten, um zu helfen, ein Projekt von Grund auf neu zu schreiben. Dem Agenten wurden eine High-Level-Beschreibung des Ziels und einige leere Funktionssignaturen gegeben. Der Agent füllte dann den Code aus, schrieb die Tests und organisierte die Prosa, während er sich an die Struktur des notlob-Dokuments hielt. Der Agent war in der Lage, Inkonsistenzen zwischen dem Text und dem Code zu erkennen, wie etwa eine Diskrepanz in der Definition einer Funktion, und bat um Klärung. In einem anderen Fall half das System einem Agenten, einen subtilen Fehler in einem digitalen Signalverarbeitungsprojekt zu finden, der von anderen Testmethoden übersehen worden war. Der Fehler bezog-sich auf eine Berechnung, die unter bestimmten Bedingungen instabil wurde, und die vom Agenten erstellten Eigenschaftstests, die als Teil des Essays geschrieben wurden, deckten den Fehler erfolgreich auf.

Dennoch beobachteten die Forscher auch, dass die Agenten nicht perfekt waren. In mehreren Fällen neigten die Agenten dazu, die deklarativen Teile des Dokuments zu vernachlässigen, wie etwa die formalen Eigenschaften und die strukturellen Regeln, und konzentrierten sich stattdessen auf die unmittelbare Aufgabe des Codewritings. Sie behandelten den Text manchmal eher als einen Vorschlag denn als eine Einschränkung, was zu Inkonsistenzen führte, die menschliches Eingreifen erforderten, um sie zu beheben. Die Forscher stellten fest, dass diese Dynamik vertraut ist für menschliche Softwareteams, bei denen erfahrene Entwickler oft einschreiten müssen, um sicherzustellen, dass die Dokumentation und der Code übereinstimmen bleiben. Die Studie legt nahe, dass diese Sprachmodelle zwar leistungsstark sind, aber dennoch eine Struktur benötigen, die den Code und die Erklärung in engem Kontakt hält. Die notlob-Umgebung bietet diese Struktur und bietet einen Weg, die Theorie des Programms und die Praxis des Codes am selben Ort zu halten.

Die Arbeit unterscheidet sich auch von anderen Ansätzen zur Verwendung von Sprachmodellen in der Programmierung. Einige Methoden behandeln die natürliche Sprachbeschreibung als eine separate Spezifikation, die vor dem Schreiben des Codes kommt – ein Prozess, der zu einer Trennung zwischen Plan und Ergebnis führen kann. Andere verlassen sich darauf, dass das Modell den Code zusammenfasst oder regeneriert, nachdem er geschrieben wurde. Notlob wählt einen anderen Weg, indem es die Spezifikation, den Code und die Tests in einem einzigen, iterativen Arbeitsraum zusammenführt. Dies ermöglicht es Menschen und Maschinen, an allen drei Elementen gemeinsam zu arbeiten und die Logik sowie die Erklärung parallel zu verfeinern. Die Forscher argumentieren, dass dieser Ansatz effektiver ist, als die natürliche Sprache lediglich als Prompt oder als separates Dokument zu behandeln. Indem sie die Prosa und den Code zu untrennbaren Teilen desselben Artefakts machen, stellt das System sicher, dass das Kontextfenster des Sprachmodells mit den relevantesten Informationen gefüllt ist.

Die Implementierung von notlob ist ein Open-Source-Projekt, das derzeit drei etablierte Programmiersprachen unterstützt: Haskell, Python und TypeScript. Das System umfasst eine Reihe von Befehlszeilenwerkzeugen, die es Benutzern ermöglichen, das Projekt zu bauen, zu testen und zu visualisieren. Ein Werkzeug kann das Dokument als eine Standard-Webseite rendern, während ein anderes in der Lage ist, eine visuelle Karte des Name-Graphen zu generieren, die zeigt, wie die verschiedenen Teile des Projekts miteinander verbunden sind. Die Forscher experimentierten auch damit, das System zur Erstellung eines „Kritiker“-Agenten zu verwenden – eines künstlichen Agenten, der damit beauftragt ist, Projekte auf logische Konsistenz und Stil zu prüfen. Dieser Agent war in der Lage, Fehler zu identifizieren und Verbesserungen vorzuschlagen, wobei er manchmal verschiedene Personas annahm, um vielfältige Perspektiven auf die Arbeit zu bieten. Diese Experimente legen nahe, dass die Umgebung nicht nur die Erstellung von Code unterstützen kann, sondern auch die kritische Überprüfung und Verfeinerung des gesamten Projekts.

Letztlich präsentiert das Paper eine Vision für eine Zukunft, in der die Softwareentwicklung ein kollaborativer Akt zwischen Menschen und Maschinen ist, der auf einer gemeinsamen Sprache aus Text und Code basiert. Die notlob-Umgebung erhebt nicht den Anspruch, alle Probleme der künstlichen Intelligenz in der Programmierung zu lösen, noch verspricht sie, dass Maschinen bald im Alleingang perfekte Software schreiben werden. Stattdessen bietet sie ein praktisches Werkzeug, das die Beziehung zwischen der Idee und der Implementierung transparenter und robuster macht. Indem sie den Essay und den ausführbaren Code als eine einzige, miteinander verbundene Einheit behandelt, hilft das System dabei, die Lücke zwischen menschlicher Intention und maschineller Ausführung zu schließen. Die Arbeit legt nahe, dass die Zukunft der Programmierung vielleicht nicht darin besteht, mehr Code zu schreiben, sondern bessere Geschichten zu schreiben, denen der Code folgen kann, um sicherzustellen, dass die Logik des Systems für die Maschine ebenso klar ist wie für den Menschen.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →