Vibe Coding ausprobiert

Artikel Bild
Wenn die KI unseren Programmierwettbewerb lösen soll. Ein Testbericht über die Robo-Coder.

Vibe Coding (VC) ist eine Programmiertechnik, welche sich ganz auf Künstlicher Intelligenz (KI) zum Generieren des Quellcodes verlässt und somit Programmierung auch für Unerfahrene zugänglich macht. Damit soll natürliche Sprache, bzw. Schrift, die etablierten Programmiersprachen ersetzen. Aktuell soll sich VC besonders gut für das Prototyping von Anwendungen eignen.

Andrej Karpathy, Mitbegründer von OpenAI und ehemaliger KI-Leiter bei Tesla, beschrieb am 3. Februar 2025 „Vibe Coding“ als eine konversationsbasierte Methode, bei der Sprachbefehle verwendet werden, während die KI den eigentlichen Code generiert, heisst es in der Wikipedia.

Den Begriff 'Vibe Coding' kann man 'Gefühlter Programmierung' übersetzen, worin sich der natürlichsprachliche Ansatz ausdrückt.

Neben den bekannten Large Language Models spriessen spezialisierte VC-Modelle wie die Pilze aus dem Boden. Vertreter dieser Gattung sind Replit, Lovable und Github Spark. Ich habe zwei dieser Modelle ausprobiert, indem ich ihnen die Aufgabenstellung unseres Programmierwettbewerbs Parallele Anrufe vom Februar 2022 in den Rachen geworfen habe. Da die Aufgabenstellung bereits im Artikel enthalten ist (sogar mit Beispieldaten), konnte ich mir das Prompten sparen.

Die Programmieraufgabe ist relativ einfach. Es gilt lediglich, einen nicht trivialen Algorithmus zu entwerfen. Es braucht kein UI, keine Container, keine Sicherheit, kein installierbares Paket, keine Netzwerk-Komponenten und keine Fremd-Bibliotheken.

Erster Versuch: Perplexity

Der Prompt lautete: "Schreibe den Python-Code für die Aufgabe, die auf dieser Webseite beschrieben wird: https://gnulinux.ch/wettbewerb-parallele-anrufe".

Nach einigen Sekunden lieferte Perplexity diesen Code:

import csv from datetime import datetime, timedelta def parallele_anrufe(dateipfad): anrufe = [] with open(dateipfad, 'r') as csvdatei: csv_reader = csv.reader(csvdatei) for zeile in csv_reader: startzeit_str, dauer_str = zeile startzeit = datetime.strptime(startzeit_str, '%d.%m.%Y %H:%M:%S') dauer_teile = dauer_str.split(':') dauer = timedelta(hours=int(dauer_teile[0]), minutes=int(dauer_teile[1]), seconds=int(dauer_teile[2])) anrufe.append((startzeit, startzeit + dauer)) zeitpunkte = set() for start, ende in anrufe: zeitpunkte.add(start) zeitpunkte.add(ende) zeitpunkte = sorted(list(zeitpunkte)) maximale_parallele_gespräche = {} for zeitpunkt in zeitpunkte: parallele_gespräche = 0 for start, ende in anrufe: if start <= zeitpunkt <= ende: parallele_gespräche += 1 if parallele_gespräche in maximale_parallele_gespräche: maximale_parallele_gespräche[parallele_gespräche] += 1 else: maximale_parallele_gespräche[parallele_gespräche] = 1 sortierte_parallele_gespräche = sorted(maximale_parallele_gespräche.items(), reverse=True) print("Parallele Gespräche") for anzahl, häufigkeit in sortierte_parallele_gespräche: print(anzahl) # Beispielaufruf mit der CSV-Datei dateipfad = 'gesprachsdaten.csv' parallele_anrufe(dateipfad)

Auf den ersten Blick sieht das nicht schlecht aus; einmal davon abgesehen, dass der Code in deutscher Sprache (mit Umlauten) geschrieben ist und so gut wie keine Kommentare enthält. Von einer Header-Information (Wer, Warum, Was, Lizenz, Datum, Version, usw.) ist nichts zu sehen. Nun gut: läuft das Ding? Natürlich nicht, weil der Shebang und die main() fehlt. Die habe ich hinzugefügt.

Nach dem Aufruf des 'gevibten' Python-Skripts passiert ... nichts, keine Ausgabe, keine Fehlermeldung. Habe ich Lust den Vibe zu debuggen? Nein! Ich habe es trotzdem getan. Nach ein paar kleinen Korrekturen bei der Struktur und der Ausgabe läuft das Skript:

Parallele Gespräche: Anzahl Häufigkeit 8 1 7 5 6 12 5 41 4 102 3 338 2 939 1 1349

Respekt! Das Ergebnis ist korrekt. Die Umsetzung der Aufgabe im Python-Code ist gut verständlich und unterscheidet sich nicht grundsätzlich von der Musterlösung. Die Musterlösung ist jedoch wesentlich eleganter als das KI-Geplapper.

Zweiter Versuch: Lovable

Dort muss man ein Konto erstellen, bevor man etwas generieren kann. Nachdem mein Account steht, habe ich denselben Prompt wie bei Perplexity verwendet. Lovable überlegt ca. 3 Minuten bevor eine Lösung auf dem Bildschirm erscheint.

Lovable hat die Aufgaben missverstanden und bietet überkandidelte Lösungen an. Auf der rechten Seite kann man beobachten, an welchen Stellen der Vibe Coding Service falsch abbiegt:

Dem erzeugten Code sehe ich auf den ersten Blick an, dass er nicht funktionieren wird, weshalb ich ihn nicht ausprobiert habe. Doch schauen wir einmal auf den sequenziellen Ansatz:

Was soll das sein? Ist es Azeri, Bambara, Dari, Esan, Fante, Kabardinisch, Tigrinya oder Zaza? Auf jeden Fall ist das kein Python. Auch diesen Code möchte ich nicht laufen lassen.

Nach dieser Erfahrung wollte ich mein Konto bei Lovable löschen. Leichter gesagt als getan. In letzter Zeit ist mir aufgefallen, dass sich Accounts bei neueren Webdiensten nicht ohne Weiteres löschen lassen. Bei Lovable muss man per E-Mail um die Löschung des Kontos bitten. Ich habe an abuse@lovable.dev geschrieben, weil ich keine andere E-Mail-Adresse gefunden habe. Was für eine Bruchbude!

Fazit

Nach diesen unterschiedlichen Testergebnissen sitze ich ratlos vor meiner Tastatur. Der Test mit Lovable war unterirdisch; das Ergebnis von Perplexity ganz ok. Wenn man von den fehlenden Kommentaren, der Verwendung der deutschen Sprache und den nötigen Anpassungen, um es lauffähig zu machen, einmal absieht, so stimmte zumindest der Algorithmus. Interessant fand ich, dass ich nichts prompten musste, sondern einfach den Link zum Wettbewerbsartikel auf die KI werfen konnte.

Im Gegensatz zum Referenzcode, den ich selbst für den Wettbewerb geschrieben habe, war ich zu faul, jede Zeile des generierten Codes verstehen zu wollen. Und darin sehe ich das Risiko. Wenn Du den Code nicht verstehst, bist Du nicht die Programmiererin, sondern der Programmierte.

Titelbild: https://pixabay.com/illustrations/ai-generated-robot-technology-8671121/

Quellen:

https://de.wikipedia.org/wiki/Vibe_Coding

https://www.derstandard.at/story/3000000264946/vibe-coding

https://www.perplexity.ai/

https://lovable.dev/abuse


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.