Wie man mit LLMs programmiert
(crawshaw.io)- Ein Artikel, der die Programmiererfahrungen der letzten 12 Monate mit LLMs (Large Language Models) zusammenfasst
- LLMs haben die Produktivität gesteigert, und es ist schwer, zu einer Programmierweise ohne sie zurückzukehren
- Der Fokus liegt vor allem auf der Go-Programmierumgebung; aktuell wird ein Tool namens sketch.dev entwickelt
Hintergrund
- Begann aus Neugier auf neue Technologien.
- Fasziniert von der Fähigkeit von LLMs, komplexe Antworten auf Fragen zu erzeugen oder Programmcode zu schreiben
- Vermittelt ein ähnliches Gefühl von Spannung und Möglichkeiten wie damals, als das Internet erstmals aufkam
- Es wurde bestätigt, dass es einen Nettogewinn gibt, wenn das Tool Code erzeugt, der „meistens richtig“ ist, und es wird daran gearbeitet, dies praktisch nutzbar zu machen
Wichtige Anwendungsfälle
-
Autovervollständigung (Autocomplete)
- Häufig wiederholte Coding-Aufgaben werden per Autovervollständigung erledigt, was die Produktivität erhöht
- Besonders FIM-Modelle (Fill-In-the-Middle) sind für tägliche Aufgaben unverzichtbar
-
Als Ersatz für Suche (Search)
- Beantwortet bestimmte Programmierfragen (z. B. wie man in CSS die Transparenz eines Buttons setzt) präziser als Suchmaschinen
- Antworten von LLMs können falsch sein, aber diese Grenzen werden akzeptiert und in der Praxis berücksichtigt
-
Dialogbasiertes Programmieren (Chat-driven Programming)
- Der schwierigste und zugleich wertvollste Bereich.
- Übernimmt erste Aufgaben wie das Erstellen neuer Dateien oder das Suchen nach Bibliotheken.
- Ziel des dialogbasierten Programmierens ist es, die aktuellen Unbequemlichkeiten zu reduzieren und die Fähigkeiten von LLMs benutzerfreundlicher zu machen
Der Kern des dialogbasierten Programmierens
-
Warum Dialog verwenden?
- Nützlich, um einen ersten Entwurf zu liefern, wenn im Laufe des Tages die Energie nachlässt
- Einen ersten Entwurf zu sehen und zu überarbeiten ist effizienter, als bei null anzufangen
-
Arbeitsweise mit LLMs
- Ein klares und prägnantes Arbeitsziel festlegen
- Code lesen, verifizieren und anpassen
- Compiler-Fehler nutzen, um Probleme schnell zu lösen
-
Effektives Schreiben von Tests
- LLMs sind sehr engagiert beim Schreiben von Tests und können eine gründlichere Testumgebung aufbauen
- Über beispielbasierte Tests hinaus ist auch eine Erweiterung auf Fuzz-Tests möglich
Beispiel: Fraction Sampler
- Ziel: Einen Algorithmus in Go schreiben, der Quartile eines Datenstroms sampelt
- Ablauf
- Ersten Entwurf mit einem LLM erstellen
- Code verbessern, indem Compiler-Fehler behoben werden
- Testcode neu schreiben, um eine besser lesbare Struktur zu erhalten
Potenzial für neue Code-Strukturen
-
Kleinere Pakete, mehr Tests
- Kleine Pakete liefern klareren Code-Kontext und sind dadurch sowohl für LLMs als auch für Menschen nützlicher
- Erhöhen die Möglichkeit unabhängiger Tests und erfolgreicher Kompilierung
-
Beispiel: API-Wrapper
- Statt großer offizieller Bibliotheken wird empfohlen, dünne Wrapper zu verwenden, die nur die benötigten Teile implementieren
- Geringerer Wartungs- und Lernaufwand
Ausblick: sketch.dev
- Eine Go-IDE für LLMs
- Bietet eine auf LLMs ausgerichtete Programmierumgebung
- Unterstützt automatisiertes Test-Feedback, das Beheben von Compiler-Fehlern, die Integration von Go-Modulen und mehr
- Stärkt die Zusammenarbeit zwischen Menschen und LLMs und schafft so eine produktivere Umgebung
1 Kommentare
Hacker-News-Kommentare
Der Autor ist bereits ein Softwareingenieur von Weltrang, ehemaliger Google-Mitarbeiter und Mitgründer/CTO von Tailscale. Beeindruckend ist, dass LLMs ihn noch produktiver machen.
LLMs senken die Einstiegshürde für eine Aufgabe.
Man sollte LLMs nur in Bereichen verwenden, in denen man sich gut auskennt.
LLMs haben Potenzial als Werkzeuge für die Softwareentwicklung.
Ähnlich wie bei der Nutzung von Suchmaschinen.
Es gibt kein großes Verlangen, LLMs zu verwenden.
Für Menschen, die keine Programmierer sind, sind LLMs eine große Hilfe.
LLMs sind nützlich, um einfache Anwendungen zu schreiben.
Für Menschen, die als Hobby programmieren, sind LLMs hilfreich.
LLMs werden hauptsächlich für Autovervollständigung und Suche verwendet.