Jeder ein Programmierer dank ChatGPT?

Chatbots liefern auch mass­ge­schnei­der­ten Pro­gramm­code. Das ist eine Steil­vor­la­ge für Laien, Rou­ti­ne­auf­ga­ben zu au­to­ma­ti­sie­ren – und eine Auf­for­de­rung an die Schulen, sich dieser Chance zu stel­len.

Neulich habe ich eine gewagte Behauptung aufgestellt. Ich habe geschrieben, dank der Chatbots seien auch Nichtprogrammierer in der Lage, Computercode zu fabrizieren, um eine Routineaufgabe zu automatisieren. Meine Beispiele waren ein Applescript zum Archivieren alter Dokumente und ein VBA-Makro, das Worddokumente typografisch aufmotzt. Die Bots können auch HTML-Code fabrizieren und bei Excel-Formeln helfen.

Es bestehen keine Zweifel, dass die Bots hervorragend geeignet sind, ausgewiesene Fachleute zu unterstützen. Wer sein Javascript oder C-Sharp beherrscht, aber das Rad nicht immer neu erfinden möchte, der erhält von ChatGPT, Bing und Bard wertvolle Unterstützung. Es macht einen riesigen Unterschied, ob wir uns in die Dokumentation zu unserer Entwicklungssprache vertiefen oder Code-Beispiele ergoogeln müssen, um eine Aufgabe zu lösen, oder ob wir unser Anliegen einer KI unterbreiten, die uns einen pfannenfertigen Vorschlag liefert.

Aber kommen auch ungeübte Menschen oder blutige Laien ans Ziel? Ich habe einen Selbstversuch unternommen, um Klarheit zu schaffen: Die Idee besteht darin, mir von ChatGPT ein Powershell-Script schreiben zu lassen, das ich ohne KI-Hilfe nicht hinbekommen hätte. Denn Powershell ist nicht für Otto Normal-User gedacht, sondern für Systemadministratoren. Mit dieser Sprache schüttelt man nicht eben mal ein Script aus dem Ärmel – auch ich nicht, obwohl ich einen zaghaften Versuch unternommen habe, mich einzufuchsen.

Automatische Ordnung im Dateisystem

Der erste Versuch mit der Powershell hat nicht zum Erfolg geführt.

Die konkrete Aufgabe besteht darin, bestimmte Dateien in meinem Download-Ordner zu komprimieren. Das Script soll die resultierende ZIP-Datei nach bestimmten Kriterien benennen und sie in einen Archivordner verschieben. Diese Aufgabe entspringt direkt meinem Alltag¹.

Mein Test hat Erfolg gezeitigt: Ich bin am Ziel angekommen. Ich besitze eine Scriptdatei, die genau meinen Anforderungen² entspricht und die gestellte Aufgabe erledigt. Allerdings verlief der Weg dahin nicht reibungslos. Es hat nur geklappt, weil ich von Powershell³ abgerückt bin und in der Lage war, ChatGPTs Code von Hand zu korrigieren.

Meine Eingangsbehauptung lässt sich damit nicht aufrechterhalten: Ein blutiger Laie wäre nicht in der Lage gewesen, den Code von ChatGPT zu debuggen. Und für ein Erfolgserlebnis braucht es zumindest eine grobe Vorstellung davon, welche Automatisierungsmöglichkeiten Windows zur Verfügung stellt.

Dieses Potenzial muss ausgeschöpft werden!

Trotzdem ist unbestreitbar, dass ChatGPT die Hürden massiv senkt – sowohl zeitlich als auch vom Anspruch her.

Damit gelangen wir zu einer klaren, unbestreitbaren Erkenntnis: Rudimentäre Programmierkenntnisse werden durch ChatGPT nicht überflüssig, sondern steigen im Gegenteil enorm an Wert. Leute, die bislang nicht in der Lage waren, selbst so eine Scriptdatei herzustellen, kommen nun dank ChatGPT ans Ziel. Es braucht dafür aber ein grundsätzliches Verständnis für die Funktionsweise von Programmiersprachen.

Dieses Verständnis muss nicht tief sein, dafür so breit wie möglich. Ich meine damit, dass es nicht nötig ist, mit den Befehlen und den Details der Syntax von Javascript, C#, Python und Konsorten vertraut zu sein. Aber es ist sinnvoll, wenn wir in der Lage sind, einen Programmablauf zumindest oberflächlich zu lesen und zu verstehen, was an welcher Stelle passiert – und welche Methoden wir zur Fehlerbehebung zur Verfügung haben.

Wie es gelingt, die KI zu nutzen

Das ist das nötige Rüstzeug, das uns in die Lage versetzt, ein von ChatGPT erstelltes Script von Fehlern zu befreien und ihm den letzten Schliff zu geben. Damit sind oberflächliche Programmierkenntnisse in der Praxis nicht mehr plus/minus nutzlos, sondern der entscheidende Faktor, um dank der KI Dinge zu tun, die vorher unmöglich waren.

Aus diesen Einsichten leite ich folgende Forderungen ab:

  • In den Schulen muss der Informatikunterricht so ausgestaltet werden, dass Schülerinnen und Schüler so viel von der Sache verstehen, dass sie mittels KI ein simples Programm in einen lauffähigen Zustand bekommen.
  • Und Softwarehersteller wie Microsoft täten gut daran, ihre Betriebssysteme und Programme möglichst «KI-automatisierungsfreundlich» auszugestalten – denn wenn die Hürden noch niedriger werden, um solche Alltagsdinge zu automatisieren, dann würde das die Kompetenz und Effizienz der Nutzerinnen und Nutzer auf ungeahnte Höhen heben.

Nebenbei ist das auch eine gute Übung darin, die Grenzen und Schwächen der KI zu erkennen: Beim Einsatz als Programmierhilfe zeigt sich viel deutlicher als z.B. beim Recherchieren, dass die Antworten und Auskünfte nie vorbehaltlos geglaubt werden dürfen, sondern immer hinterfragt wreden müssen.

Fussnoten

1) Ich sichere und archiviere auf diese Weise meine Word­press-Websites. Die Details zu meiner Vorgehensweise beschreibe ich hier.

2) Das waren die Anforderungen:

  1. Das Script komprimiert eine XML-Datei als ZIP und benennt die ZIP-Datei abhängig vom Original-Dateinamen: Wenn der Originaldateiname mit «clickomania» beginnt, heisst die Zieldatei «Clickomania.zip», bei «nerdfunk» nennst du sie «Nerdfunk.zip», aus «matthiasschsslersartikelarchiv» wird «Artikelarchiv.zip» und bei einem Dateinamen beginnend mit «dorfposcht» verwendest du «Dorfposcht.zip».
  2. Der Name der Datei wird als Parameter übergeben.
  3. Die ursprüngliche Datei soll am Ende gelöscht werden.

3) Das fertige Script läuft nicht mit der Powershell, sondern als altertümliche Stapelverarbeitungsdatei. Der Grund darin besteht in den PowerShell-Ausführungsrichtlinien. Die haben mich an der Ausführung des Scripts von ChatGPT gehindert (Fehlermeldung «Die Datei kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter about_Execution_Policies»).

Da ich keine Lust hatte, mich mit diesen Richtlinien herumzuschlagen, habe ich ChatGPT angewiesen, mir eine Batch-Datei anzufertigen.

4) Im Script soll die finale Datei je nach Ausgangsdatei unterschiedlich benannt werden. Dazu hat ChatGPT richtigerweise eine bedingte Anweisung gesetzt:

REM Entscheiden des ZIP-Dateinamens basierend auf dem Originaldateinamen
if /i "%FILE_NAME:~0,10%"=="clickomania" (
    set "ZIP_NAME=Clickomania.zip"
) else if /i "%FILE_NAME:~0,8%"=="nerdfunk" (
    set "ZIP_NAME=Nerdfunk.zip"
) else if /i "%FILE_NAME:~0,26%"=="matthiasschsslersartikelarchiv" (
    set "ZIP_NAME=Artikelarchiv.zip"
) else if /i "%FILE_NAME:~0,9%"=="dorfposcht" (
    set "ZIP_NAME=Dorfposcht.zip"
) else (
    set "ZIP_NAME=Backup.zip"
)

Damit die Zuweisung bei der Variablen ZIP_NAME klappt, muss die Länge des Namensbestandteils richtig bestimmt werden. Wie man sieht, hat ChatGPT das aber nur bei nerdfunk richtig hinbekommen (acht Zeichen). Bei clickomania sind es nicht zehn, sondern elf, bei matthiasschsslersartikelarchiv nicht 26, sondern dreissig und bei dorfposcht nicht neun, sondern zehn. Die falschen Angaben führen dazu, dass die meisten der Backups nicht unter dem individuellen Namen, sondern unter dem Else-Namen Backup.zip gespeichert werden.

5) Hier das fertige, korrigierte Script:

@echo off
setlocal

REM Erstellt mit freundlicher Hilfe von ChatGPT am 12. Januar 2024

REM Setzen des Pfads zur 7-Zip-Exe-Datei
set "ZIP_TOOL=C:\Program Files\7-Zip\7z.exe"

REM Übernehmen des Dateipfades als Argument
set "ORIGINAL_FILE_PATH=%~1"

REM Überprüfen, ob ein Argument übergeben wurde
if "%ORIGINAL_FILE_PATH%"=="" (
    echo Kein Dateipfad angegeben.
    exit /b 1
)

REM Bestimmen des Dateinamens ohne Pfad
for %%I in ("%ORIGINAL_FILE_PATH%") do set "FILE_NAME=%%~nI"

REM Entscheiden des ZIP-Dateinamens basierend auf dem Originaldateinamen
if /i "%FILE_NAME:~0,11%"=="clickomania" (
    set "ZIP_NAME=Clickomania.zip"
) else if /i "%FILE_NAME:~0,8%"=="nerdfunk" (
    set "ZIP_NAME=Nerdfunk.zip"
) else if /i "%FILE_NAME:~0,30%"=="matthiasschsslersartikelarchiv" (
    set "ZIP_NAME=Artikelarchiv.zip"
) else if /i "%FILE_NAME:~0,10%"=="dorfposcht" (
    set "ZIP_NAME=Dorfposcht.zip"
) else (
    set "ZIP_NAME=Backup.zip"
)

REM Debugging!
REM Da ChatGPT die Länge der Dateinamen oben falsch bestimmt hat, hier zum Debbuing die Ausgabe zur Überprüfung
REM echo File-Name: %FILE_NAME%
REM echo Zip-Name: %ZIP_NAME%

REM Zielverzeichnis für die ZIP-Datei
set "DESTINATION_PATH=C:\Users\matth\Documents\Homepage\WP-Backup\%ZIP_NAME%"

REM Vorherige Archivdatei löschen
if exist %DESTINATION_PATH% del "%DESTINATION_PATH%"

REM Komprimieren der Datei
REM Parameter u für update
"%ZIP_TOOL%" u "%DESTINATION_PATH%" "%ORIGINAL_FILE_PATH%"

REM Überprüfen, ob die Operation erfolgreich war
if %ERRORLEVEL% neq 0 (
    echo Fehler beim Komprimieren der Datei.
    exit /b 1
)

echo Datei erfolgreich komprimiert und verschoben.

REM Löschen der Originaldatei
del "%ORIGINAL_FILE_PATH%"

echo Datei erfolgreich komprimiert und Original gelöscht.

Beitragsbild: Kompetent bei der Materie, aber didaktisch nicht über alle Zweifel erhaben (Dall-e 3).

Kommentar verfassen