Vibe Coding

Skriuwen · 15 apr 2025

Vibe Coding

Oer de krêft en it gefaar fan programmearjen mei AI

Mei in omset fan mear as $48K yn de moanne sette it fleantúchsimulatorspultsje fan Pieter Levels in hiele stream fan ynnovaasje yn gong. Sûnder yngeande kennis fan 3D-gameengine-technology 'vibe codearre' hy syn spultsje mei AI. Kritisy fan syn wurk wiisden op problemen mei feiligens en skalberens, wylst oaren it geweldige resultaat priizgen. Wat kinne wy hjirfan leare?

Vibe Coding

Vibe coding is in AI-oandreaune programmearmetoade dêr't do in probleem yn in pear sinnen beskriuwst as prompt foar in taalmodel dat op koade ôfstimd is. It model generearret software, wêrtroch't de rol fan de programmeur ferskoot nei it begeliede, testen en ferfine fan de útfier. Foarstanners sizze dat it begjinnende koaders yn steat stelt programma's te meitsjen sûnder wiidweidige oplieding of software-engineeringfeardigens.

Pieter Levels makke it spultsje fly.pieter.com. Op sosjale media hold er in iepen loop fan syn ynspanningen by: fan syn earste idee oant en mei de publikaasje. Hy luts sponsors oan foar advertinsjes yn it spultsje en ferkeapet premium-upgrades (lykas spesjale fleantugen) yn syn spultsje, wêrmei't er alle moannen tûzenen dollars omset.

Troch AI generearre fleantúchsimulator: fly.pieter.com
Troch AI generearre fleantúchsimulator: fly.pieter.com

Syn súkses brocht fragen op oer de takomst fan spultsjeprogrammearjen, of sels programmearjen yn it algemien. As ien keardel mei in laptop in smash hit as dizze meitsje kin, wat is dan it nut fan studio's mei grutte budzjetten? Of, oarsom frege: wat soe der barre mei studio's mei grutte budzjetten as se in fergelykbere 'vibe coding'-oanpak foar de produksje oannimme soene?

It sels besykje

Ik haw sels wat ûnderfining mei it ûntwikkeljen fan in spultsje (Snake 97, mear as 40 miljoen downloads), en it ferhaal fan Pieter ynspirearre my om te sjen nei de 3D-technology dy't er foar syn spultsje brûkte: ThreeJS. In spultsje bouwe is dreech, it yn 3D dwaan noch dreger. De wiskunde efter in wrâld yn trije dimensjes foeget in hiele útdaging ta. Op in soad manieren is it oars as gewoane programma's of ienfâldige twadimensjonale spultsjes. Hoewol't ik earder wat eksperimintearre hie, fûn ik de learkurve fan 3D-wiskunde frij steil. Dêr kin AI helpe.

3D-fisualisaasje fan trainingsgegevens
3D-fisualisaasje fan trainingsgegevens

Foar de Gran Fondo app brûkte ik AI om in trijediminsjonale wergave fan in opnommen hurdrinaktiviteit te meitsjen. Ik formulearre myn doel yn gewoan Ingelsk en it AI-model generearre de koade dy't nedich wie om ThreeJS myn training op in draaiend flak sjen te litten. De earste resultaten wiene net goed, mar ik begriep genôch fan wat der generearre wie om troch te gean mei spesifike ferfiningen freegjen. Inkelde oeren letter hie ik wat dat my oansprekke, en mear noch: ik hie it gefoel dat ik in soad leard hie oer de libbensfetberens fan myn oarspronklike konsept. De AI makke it my mooglik om gauwer te learen.

Spultsjekonseptôfbylding út 2013: HDL-dieltsjes yn de bloedstream
Spultsjekonseptôfbylding út 2013: HDL-dieltsjes yn de bloedstream

Ik besleat in oar idee te ferkennen dat ik in skoft parkearre hie: in spultsje oer minne en goede cholesterolpartikels yn de bloedstream fan in persoan. Mei aspekten fan in endless runner-styl spultsje, tocht ik dat dit in goede kandidaat wie om noch wat mear mei te eksperimintearjen, om't dizze spultsjes kompjûtergenerearre nivo's hawwe. In automatyske nivogenerator bouwe liket wat dêr't AI my mei helpe kin.

Mei de nij ûntdutsen 3D-mooglikheden tocht ik dat it spultsje de bloedfetten yn gean moast yn stee fan de sydlingse beweging dy't gewoan is by klassike 2D-spultsjes. Dat bringt útdagings mei as fisuele clipping en ferfoarme grafiken troch de posysje fan de kamera bûten de 3D-sêne. In oare útdaging is de tanommen kompleksiteit fan de botsingsdeteksje fan eleminten yn it spultsje, in eask foar de spultsjemeganika. De koade dy't it AI-model generearre groeide mei elke iteraasje oan.

3D-gameengine yn aksje, let op de grafyske glitches yn de wand fan it bloedfet
3D-gameengine yn aksje, let op de grafyske glitches yn de wand fan it bloedfet

Nei sa'n 800 rigels koade begûn ik de beheiningen fan it AI-model te belibjen, want it begûn flaters en bugs te meitsjen dy't it yn eardere iteraasjes al oplost hie. Elke nije iteraasje brocht nije problemen en it model bleau ferfiningen en reparaasjes ferjitte dy't it earder tapast hie. Dat komt troch de grinzen oan de kontekstmooglikheden (ynfiertokens) dy't foar grutte taalmodellen wichtich binne om te wurkjen. Gewoan sein: it kin net genôch ûnthâlde om it gehiel yn ien kear fierder te iterearjen.

Produktiviteitsparadoks: as it bestjoeren fan de masine dy mear muoite kostet as de wearde fan de útfier
Produktiviteitsparadoks: as it bestjoeren fan de masine dy mear muoite kostet as de wearde fan de útfier

Ik bin nei inkelde dagen yntinsyf eksperimintearjen mei de AI-ûntwikkeling fan de gameengine stoppe. Ik kaam op in punt dat ik mear muoite stuts yn it behearen fan it AI-model as yn de eigentlike gameengine. Ik tocht dat it gewoan better wie om wat boeken oer de technologyen te heljen, dy te lêzen, sels betûfter te wurden en dan de gameengine mei de hân te bouwen. As dingen yngewikkeld wurde, kinne ús minsklike harsens har blykber rjochtsje op spesifike dielen fan in kompleks taak wylst se it gehiel yn eare hâlde.

Oer de dwaasheid fan "programmearjen yn natuerlike taal"

Neist de grinzen oan de kontekst dy't in AI-model begripe kin, tink ik dat der it probleem fan ûndúdlikens is. Ik riede dy oan om de wurden fan Edsger Wybe Dijkstra te lêzen, dy't yn syn EWD667 neitinkt oer de dwaasheid fan "programmearjen yn natuerlike taal". In beskriuwing sûnder dûbele betsjutting, frij fan ûndúdlik tinken, is de basis fan betroubere koade. Mar ús memmetaal lit te folle romte foar allerhanne ûnsin en flaters. Wy moatte ús wurden dêrom behearskje, skerp tinke en moedich spesifisearje.

In formele taal, lykas in programmeartaal of in wiskundich model of in útputtende spesifikaasje fan ynfier en útfier, kin in geweldich effektyf ark wêze om ûndúdlikens en flaters út te sluten. Gewoan sein: do krijst de bêste útfier as do de bêste ynfier jout.

Prompts mei koade foar de AI

Om te testen oft de AI my bettere koade jaan soe, besleat ik myn manier fan freegjen te feroarjen. Yn stee fan te beskriuwen wat ik woe yn natuerlike taal, stjoerde ik in stik koade op dat ik earder skreaun hie, mei inkelde tige spesifike skaaimerken:

  • de koade kaam út in produksjesysteem, ik wist dat it goed wurke
  • de koade befette ferskate statements foar flaterôfhanneling, wat it stabiler makke
  • de koade befette gjin syntaksisflaters en brûkte logysk neamde fariabelen en funksjes
  • de koade hie in tige dúdlik ôfbeakene taak, mei dúdlik definiearre ynterfaces nei de bûtenwrâld

Neist de koade frege ik de AI spesifyk om ien bepaald aspekt fan de koade yn kwestje te feroarjen. It moast it gebrûk fan in bepaald ekstern programma (de NodeJS-module 'lwip') fuortsmite en ferfange troch in oar ekstern programma (ImageMagick). Om't sawol lwip as ImageMagick open-sourcekoade binne, kent it AI-model dizze programma's goed. Ik joech it it perfekte resept foar it koken.

De koade dy't ik fan de AI krige wie in 99% perfekte ferfanging foar myn eigen koade. De generearre koade hie ien bug dy't derfoar soarge dat guon parameters net goed ûntkommen waarden, wat in crash feroarsake. Ik koe de flater mei de hân fine en reparearje, want ik fielde my folslein thús en wie kundich yn de kontekst fan dit spesifike stik software. Nei noch wat testen besleat ik de troch AI generearre koade yn produksje te nimmen, om't de nije biblioteek folle better prestearre as de ferfongen biblioteek.

Konklúzje

Vibe coding mei AI makket fluch prototypen en learen mooglik, lykas it súkses fan Pieter Levels sjen lit, mar skiet tekoart by komplekse projekten dy't krektens freegje. It stelt in fraach: wreidet AI ús mooglikheden út of beheint it ús ta syn eigen grinzen? Behearsking is in miks fan minsklik tinken en de krêft fan AI. Tink nei oer fakmanskip: wannear skerpje ark dyn feardigens, en wannear meie se se ferdôvje?

← Mear ferhalen