Het artikel introduceert Huzzah, een experimentele editor die een alternatief paradigma biedt voor het werken met Large Language Models (LLM's) bij het programmeren. De auteur stelt dat huidige coding agents inefficiënt zijn omdat ze vertrouwen op lange, vluchtige en imperatieve prompts in natuurlijke taal, wat leidt tot een verlies aan controle en overbodig tokenverbruik.
Huzzah vervangt dit proces door het gebruik van persistente, declaratieve pseudocode. In plaats van een chat, schrijft de ontwikkelaar een .hz-bestand. Bij het opslaan genereert de tool automatisch de broncode. Wijzigingen in de pseudocode worden geregistreerd als een 'diff', die vervolgens als prompt dient voor de LLM om de code bij te werken.
De belangrijkste voordelen zijn:
- Efficiëntie: Beknoptere communicatie dan natuurlijke taal.
- Ontwerp: Het activeert een actievere ontwerpmodus bij de programmeur.
- Documentatie: De pseudocode dient als leesbaar verslag van de menselijke intentie.
- Flexibiliteit: Het is taal-agnostisch en bruikbaar voor verschillende programmeertalen.
Beperkingen: De auteur merkt op dat Huzzah vooral geschikt is voor nieuwe codebases, domeinkennis vereist en mogelijk moeite heeft met zeer grote projecten of complexe cross-file afhankelijkheden.
Huzzah: Een nieuwe experimentele manier om te coderen met AI
Als je een software engineer bent zoals ik, waren de eerste maanden van 2026 ongelooflijk. Coding agents werden plotseling goed genoeg, waardoor we geen code meer handmatig hoefden te schrijven.
Maar als je zoals ik bent, stuitte je op een gegeven moment op een muur. De honingmaand eindigde en de nieuwigheid verdween. De dopamine-stoten stopten. Het is nu augustus en ik voel me volledig uitgeput. Om eerlijk te zijn, ik ben het zat om lange teksten in het Engels te schrijven om elke wijziging die ik in mijn codebase wil, te beschrijven.
Tegelijkertijd wil ik niet terug naar het handmatig schrijven van al mijn code. Dat was een monotoon proces waar ik voor de rest van mijn leven graag vanaf blijf. Toch voel ik dat ik betere inzichten en controle nodig heb over wat mijn code precies doet. Ik wil weten dat mijn output hoogwaardige, betrouwbare software is. Ik wil me als professional goed voelen over mijn werk.
Ik ben dus op zoek naar een manier om beide voordelen te combineren.
De problemen met coding agents
Mijn problemen met huidige coding agents zijn als volgt:
- Geen betrouwbaar verslag van menselijke intentie: Prompts worden weggegooid en het is onduidelijk of de code door AI is gegenereerd. We zijn de centrale autoriteit kwijt die uitdrukt wat de mens van de machine wil, en ik denk dat het belangrijk is om die realiteit te erkennen.
- Imperatieve instructies: AI-chats zijn imperatieve, stap-voor-stap instructies die wijzigingen in de applicatie beschrijven, in plaats van de applicatie zelf. Dit betekent dat instructies vaak herhaald worden en daardoor gedurende de ontwikkeling herhaaldelijk tokens verbruiken. Dit is inefficiënt.
- Inefficiëntie van natuurlijke taal: Veel natuurlijke taal bestaat om sociale redenen, niet om informatieve. De gemiddelde zin bevat weinig werkelijke informatie. Op deze manier met een machine communiceren is omslachtig.
Een alternatief paradigma: Huzzah
Om deze problemen aan te pakken, bouw ik aan een experimentele editor. Ik noem het Huzzah, en het stelt een alternatief paradigma voor om met LLM's (Large Language Models) te werken.
Het verschil in aanpak is als volgt:
- Coding agents: Prompts zijn (a) langdurig/uitgebreid, (b) imperatief en (c) vluchtig.
- Huzzah: Prompts zijn (a) pseudocode, (b) declaratief en (c) persistent.
Vergelijking: Fizz Buzz
Laten we een eenvoudig voorbeeld nemen: het maken van "fizz buzz" met behulp van AI. We doen dit op twee verschillende manieren.
Met coding agents
Je start een chat in je favoriete tool en typt iets als het volgende: "Maak een functie die 100 keer loopt. Als het getal deelbaar is door 3, print "fizz". Als het getal deelbaar is door 5, print "buzz". Als het getal door beide deelbaar is (zoals 15), print "fizz buzz"."
Als je een aanpassing wilt maken, stuur je een vervolgbericht naar de chat: "In plaats van 100 keer te lopen, moet de functie een getal als input accepteren en dat aantal keren lopen."
Je herhaalt dit proces totdat je tevreden bent.
Met Huzzah
Je maakt een nieuw bestand aan genaamd fizz_buzz.hz. Hierin schrijf je een pseudocode-representatie, op jouw eigen manier. Persoonlijk zou ik het zo doen:
fizz_buzz()
loop 100
modulo 3 ? "fizz"
5 ? "buzz"
both ? "fizz buzz"
Zodra je het bestand opslaat, genereert Huzzah automatisch de echte code. Als je een aanpassing moet maken, update je simpelweg je bestand:
fizz_buzz(n)
loop n
modulo 3 ? "fizz"
5 ? "buzz"
both ? "fizz buzz"
Bij het opslaan van het bestand registreert Huzzah het verschil (de diff) en gebruikt dit als prompt voor de LLM. De betreffende broncode wordt vervolgens opnieuw gegenereerd.
Andere voorbeelden
Om een beter beeld te krijgen van hoe dit er in andere scenario's uit zou zien, volgen hier enkele alternatieve voorbeelden.
1. Winkelmandje (Shopping cart)
list cart
list inventory
mock_data = // include some mock data
init()
inventory.fill(mock_data)
add_item(id)
cart.add(item by id)
remove_item(id)
cart.filter(item by id)
checkout()
return cart.sum(item by price) and format as price
2. Takenlijst (Todo List)
Todo {
id: int
text: str
completed: bool
}
add_todo(text)
todos.add(text, completed = false)
toggle_todo(id)
todo = todos.get by id
todo.completed = NOT .completed
remove_todo(id)
todos.filter by id
Voordelen
Het belangrijkste voordeel is dat de pseudocode veel beknopter en leesbaarder is dan uitgebreide prompts. Daarnaast zijn er andere voordelen:
- Ontwerpproces: Het schrijven van prompts op deze manier activeert je geest, omdat het meer voelt alsof je de vorm van de code ontwerpt.
- Flexibiliteit: Je kunt zo beknopt of zo uitgebreid zijn als je zelf wilt.
- Documentatie: De pseudocode fungeert als documentatie voor ontwikkelaars, omdat een mens het heeft geschreven om zijn intentie uit te drukken.
- Taal-onafhankelijkheid: Je kunt taal-agnostische pseudocode schrijven en dit gebruiken als basis voor meerdere programmeertalen of omgevingen. Denk hierbij aan complexe algoritmen, zoals een CRDT.
Kanttekeningen
Er bestaat uiteraard geen perfecte oplossing. Enkele beperkingen zijn:
- Het is mogelijk dat er problemen ontstaan met deze aanpak bij zeer grote projecten (at scale).
- Deze methode is overduidelijk geschikter voor nieuwe codebases dan voor bestaande.
- Als je geen domeinkennis hebt, is natuurlijke taal waarschijnlijk de eenvoudigere interactiemethode.
- Sommige zaken zijn wellicht moeilijker betrouwbaar uit te drukken, zoals afhankelijkheden tussen verschillende bestanden (cross-file dependencies).
- LSP-type functies (Language Server Protocol) zouden niet beschikbaar zijn, hoewel deze plausibel gegenereerd zouden kunnen worden.
Huidige status
Huzzah is momenteel in actieve ontwikkeling en bevindt zich in een experimentele fase. De broncode en installatie-instructies zijn beschikbaar via de officiële kanalen.
Huzzah: Een nieuwe experimentele manier om te coderen met AI
Als je een software engineer bent zoals ik, waren de eerste maanden van 2026 ongelooflijk. Coding agents werden plotseling goed genoeg, waardoor we geen code meer handmatig hoefden te schrijven.
Maar als je zoals ik bent, stuitte je op een gegeven moment op een muur. De honingmaand eindigde en de nieuwigheid verdween. De dopamine-stoten stopten. Het is nu augustus en ik voel me volledig uitgeput. Om eerlijk te zijn, ik ben het zat om lange teksten in het Engels te schrijven om elke wijziging die ik in mijn codebase wil, te beschrijven.
Tegelijkertijd wil ik niet terug naar het handmatig schrijven van al mijn code. Dat was een monotoon proces waar ik voor de rest van mijn leven graag vanaf blijf. Toch voel ik dat ik betere inzichten en controle nodig heb over wat mijn code precies doet. Ik wil weten dat mijn output hoogwaardige, betrouwbare software is. Ik wil me als professional goed voelen over mijn werk.
Ik ben dus op zoek naar een manier om beide voordelen te combineren.
De problemen met coding agents
Mijn problemen met huidige coding agents zijn als volgt:
- Geen betrouwbaar verslag van menselijke intentie: Prompts worden weggegooid en het is onduidelijk of de code door AI is gegenereerd. We zijn de centrale autoriteit kwijt die uitdrukt wat de mens van de machine wil, en ik denk dat het belangrijk is om die realiteit te erkennen.
- Imperatieve instructies: AI-chats zijn imperatieve, stap-voor-stap instructies die wijzigingen in de applicatie beschrijven, in plaats van de applicatie zelf. Dit betekent dat instructies vaak herhaald worden en daardoor gedurende de ontwikkeling herhaaldelijk tokens verbruiken. Dit is inefficiënt.
- Inefficiëntie van natuurlijke taal: Veel natuurlijke taal bestaat om sociale redenen, niet om informatieve. De gemiddelde zin bevat weinig werkelijke informatie. Op deze manier met een machine communiceren is omslachtig.
Een alternatief paradigma: Huzzah
Om deze problemen aan te pakken, bouw ik aan een experimentele editor. Ik noem het Huzzah, en het stelt een alternatief paradigma voor om met LLM's (Large Language Models) te werken.
Het verschil in aanpak is als volgt:
- Coding agents: Prompts zijn (a) langdurig/uitgebreid, (b) imperatief en (c) vluchtig.
- Huzzah: Prompts zijn (a) pseudocode, (b) declaratief en (c) persistent.
Vergelijking: Fizz Buzz
Laten we een eenvoudig voorbeeld nemen: het maken van "fizz buzz" met behulp van AI. We doen dit op twee verschillende manieren.
Met coding agents
Je start een chat in je favoriete tool en typt iets als het volgende: "Maak een functie die 100 keer loopt. Als het getal deelbaar is door 3, print "fizz". Als het getal deelbaar is door 5, print "buzz". Als het getal door beide deelbaar is (zoals 15), print "fizz buzz"."
Als je een aanpassing wilt maken, stuur je een vervolgbericht naar de chat: "In plaats van 100 keer te lopen, moet de functie een getal als input accepteren en dat aantal keren lopen."
Je herhaalt dit proces totdat je tevreden bent.
Met Huzzah
Je maakt een nieuw bestand aan genaamd fizz_buzz.hz. Hierin schrijf je een pseudocode-representatie, op jouw eigen manier. Persoonlijk zou ik het zo doen:
fizz_buzz()
loop 100
modulo 3 ? "fizz"
5 ? "buzz"
both ? "fizz buzz"
Zodra je het bestand opslaat, genereert Huzzah automatisch de echte code. Als je een aanpassing moet maken, update je simpelweg je bestand:
fizz_buzz(n)
loop n
modulo 3 ? "fizz"
5 ? "buzz"
both ? "fizz buzz"
Bij het opslaan van het bestand registreert Huzzah het verschil (de diff) en gebruikt dit als prompt voor de LLM. De betreffende broncode wordt vervolgens opnieuw gegenereerd.
Andere voorbeelden
Om een beter beeld te krijgen van hoe dit er in andere scenario's uit zou zien, volgen hier enkele alternatieve voorbeelden.
1. Winkelmandje (Shopping cart)
list cart
list inventory
mock_data = // include some mock data
init()
inventory.fill(mock_data)
add_item(id)
cart.add(item by id)
remove_item(id)
cart.filter(item by id)
checkout()
return cart.sum(item by price) and format as price
2. Takenlijst (Todo List)
Todo {
id: int
text: str
completed: bool
}
add_todo(text)
todos.add(text, completed = false)
toggle_todo(id)
todo = todos.get by id
todo.completed = NOT .completed
remove_todo(id)
todos.filter by id
Voordelen
Het belangrijkste voordeel is dat de pseudocode veel beknopter en leesbaarder is dan uitgebreide prompts. Daarnaast zijn er andere voordelen:
- Ontwerpproces: Het schrijven van prompts op deze manier activeert je geest, omdat het meer voelt alsof je de vorm van de code ontwerpt.
- Flexibiliteit: Je kunt zo beknopt of zo uitgebreid zijn als je zelf wilt.
- Documentatie: De pseudocode fungeert als documentatie voor ontwikkelaars, omdat een mens het heeft geschreven om zijn intentie uit te drukken.
- Taal-onafhankelijkheid: Je kunt taal-agnostische pseudocode schrijven en dit gebruiken als basis voor meerdere programmeertalen of omgevingen. Denk hierbij aan complexe algoritmen, zoals een CRDT.
Kanttekeningen
Er bestaat uiteraard geen perfecte oplossing. Enkele beperkingen zijn:
- Het is mogelijk dat er problemen ontstaan met deze aanpak bij zeer grote projecten (at scale).
- Deze methode is overduidelijk geschikter voor nieuwe codebases dan voor bestaande.
- Als je geen domeinkennis hebt, is natuurlijke taal waarschijnlijk de eenvoudigere interactiemethode.
- Sommige zaken zijn wellicht moeilijker betrouwbaar uit te drukken, zoals afhankelijkheden tussen verschillende bestanden (cross-file dependencies).
- LSP-type functies (Language Server Protocol) zouden niet beschikbaar zijn, hoewel deze plausibel gegenereerd zouden kunnen worden.
Huidige status
Huzzah is momenteel in actieve ontwikkeling en bevindt zich in een experimentele fase. De broncode en installatie-instructies zijn beschikbaar via de officiële kanalen.