Inspiriert durch einen Arbeitskollegen, habe ich mich im Dezember 2022 durch den Advent of Code gekämpft programmiert. Dies bot eine ideale Gelegenheit, um mit ChatGPT näher in Kontakt zu treten. Ein Erfahrungsbericht.
Der Advent of Code ist eine jährliche Reihe von Programmieraufgaben unterschiedlichen Schwierigkeitsgrades. Jeden Tag bekommt man zwei Aufgaben gestellt, die mit praktisch jeder Programmiersprache gelöst werden können. Ich habe mich für .NET/C# entschieden.
Datenaufbereitung
Die Bandbreite der Aufgaben ist gross: Zu Beginn löst man vor allem klassische Schleifenprobleme, später sind vermehrt clevere Datenstrukturen und Rekursion gefragt. Schon an Tag 1 wurde mir klar: Das Lesen und Verstehen der Aufgaben sowie das Formatieren der umfangreichen Inputdaten kosten mehr Zeit als das Schreiben des eigentlichen Algorithmus, der zur gesuchten Lösung führt.
Durch geschicktes Formatieren und Transformieren der Daten kann also bereits viel Programmierarbeit eingespart werden. Für diese Aufgabe habe ich mehrheitlich die ETL-Software FME von Safe eingesetzt. Dank der Vielzahl an String-Manipulatoren und weiteren Transformatoren in FME war das keine Hexerei. Sogar Notepad++ mit seiner RegEx-Unterstützung wäre eine valable Alternative gewesen, aber die ewig gleichen Search/Replace-Aktionen von Hand durchzuführen, waren für mich natürlich keine Option.
«Pair-Programming» mit Artificial Intelligence
Alleine zu programmieren, macht in der Adventszeit nicht so viel Spass. Mit ChatGPT von OpenAI findet man aber im Internet einen Freund, der immer Zeit hat 🙂 Motiviert durch einen Blogbeitrag bei Galaxus wollte ich mich selbst davon überzeugen, ob die Aussagen (und vorgeschlagenen Code Snippets) von ChatGPT Hand und Fuss haben. Anhand von zwei Beispielen zeige ich, wie ich ChatGPT befragt habe und von welcher Qualität die Resultate waren.
Beispiel 1: Ich musste für eine Aufgabe die Position von Buchstaben im Alphabet ermitteln – eine für die AI hoffentlich machbare Aufgabe, umso mehr war ich auf die Vorschläge von ChatGPT gespannt:
Naja. Das Alphabet als String ist nicht gerade die feine Art. Ich hatte mir etwas auf Ebene ASCII erhofft. Ich frage nach:
Viel besser! Gekauft.
Beispiel 2: Bisher hatte ich die Bibliothek Newtonsoft
verwendet, um JSON zu (de-)serialisieren. Mittlerweile gibt es hierfür aber taugliche Bordmittel in .NET/C#. Ich bin gespannt, was ChatGPT vorschlägt und frage:
Ok, wenig überraschend wird Newtonsoft
vorgeschlagen. Mal schauen, wie ChatGPT mit Widerworten umgeht:
Auch die von ChatGPT mitgelieferten Code-Snippets (die ich hier aus Gründen der Übersichtlichkeit weggelassen habe) sind überaus nützlich und können per Copy/Paste in den eigenen Code übernommen werden.
So what?
Mein persönliches Fazit: Ich war überrascht, wie natürlich sich die «Konversation» mit ChatGPT anfühlt. Google befrage ich viel statischer und muss aus den Resultaten auswählen, welche Lösung am besten passt. Mit ChatGPT rutscht man (fast) automatisch in eine Art Dialog.
Zu guter Letzt habe ich ChatGPT gebeten, ebenfalls ein kurzes Fazit zu ziehen:
Dem ist nichts hinzuzufügen. Ich wünsche euch allen ein erfolgreiches 2023!