Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeHaupt-Feeds

Programmieren im Zeitalter von ChatGPT

02. März 2023 um 17:55

ChatGPT ist in aller Munde. Es formuliert in flüssigem Deutsch oder Englisch Hausaufgaben, löst Philosophie-Wiederholungsfragen und fügt bei Bedarf frei erfundene Quellen hinzu, damit der Text seriöser/wissenschaftlicher wirkt. Wenn man das Programm hinweist, dass 2+3 keineswegs 5 ist, entschuldigt es sich höflich für seinen Fehler. Kurzum, Bananen-Software, reift beim Anwender? Ich bin nicht dieser Meinung.

Trotz aller Unzulänglichkeiten schätze ich das Programm mittlerweile so sehr, dass ich bereit wäre, für seine Anwendung zu zahlen. Bisher war das nicht notwendig. Mit ein paar Versuchen ist mir der Login noch jedes Mal gelungen, auch bei angeblich unerwartet hoher Auslastung.

Nun zähle ich nicht zu den Twitter- oder YouTube-Enthusiasten, die Ihnen versprechen, mit ChatGPT 10 x produktiver zu arbeiten oder 10.000 EUR pro Monat extra zu verdienen. Blödsinn! Aber ich bin mittlerweile überzeugt, dass mir ChatGPT mehr Zeit erspart, als ich brauche, um die ca. 23 EUR zu verdienen, die ChatGPT Plus aktuell pro Monat kostet. Und ich bin schon sehr gespannt, welche KI-Tools als Nächstes kommen!

ChatGPT unterstützt mich beim Programmieren

Berufsbedingt wechsle ich zwischen rund einem Dutzend Sprachen hin und her. Manche Sprachen brauche ich beinahe täglich oder zumindest wöchentlich, bei anderen vergehen schon mal etliche Monate von der einen Anwendung zu nächsten. Das bringt es mit sich, dass ich mir einfach nicht auswendig merken kann, wie ich die letzten drei Zeichen einer Zeichenkette in einem SQL-Statement, in der PowerShell oder in Java extrahiere. Wie ich einen regulären Ausdruck in PHP anwende, und welche Funktionen dagegen in Python verwendet werden.

Solange ich nicht in meinen eigenen Büchern nachschauen kann (deren Aufbau kenne ich so gut, dass die Suchzeit gegen Null geht), habe ich mir derartige Fragen bisher meist von Google beantworten lassen. Google führt dann in die Dokumentation der jeweiligen Sprache oder (bevorzugt) auf einen Beitrag von StackOverflow. Und natürlich weiß ich, welche Seiten am ehesten zum Ziel führen. Dessen ungeachtet dauert es üblicherweise ein paar Minuten, um das im Internet präsentierte Wissen auf die eigene Fragestellung anzuwenden, die Streu eines langatmigen Blog-Beitrags vom Weizen zu trennen. (Mit Videos habe ich mich dagegen nie recht anfreunden können. Es dauert einfach viel zu lange, um an die Stelle zu kommen, wo es interessant wird.)

In den letzten zwei Monaten ist die Anzahl meiner Google-Programmier-Suchen stark gesunken. ChatGPT kann auch programmieren! Warum soll ich umständlich nach Details suchen, wenn ChatGPT innerhalb von Sekunden Code liefert, der nicht nur für die ganz spezifische Fragestellung funktioniert, sondern den die KI auch noch erläutert?

Beispiele

Ein Bild sagt mehr als 1000 Worte? Nun denn:

Wie kann ich in einem PHP-Programm das Bearer Token eines GET-Requests ermitteln?
Vor kurzem habe ich einen regulären Ausdruck gebraucht, um ein Datum im US-Format (also mm/dd/yyyy) zu erkennen.
Hier geht es nur um einen Vorschlag für die Struktur (das Grundgerüst) eines Scripts. Um die Details kümmere ich mich dann selbst, d.h. ich mache das wofür ich bezahlt werde, aber verschwende keine Zeit an Trivialitäten.
Ich will in einem Python-Script eine Datei herunterladen, aber ohne Zusatzmodule zu verwenden.
In einer Folgefrage suche ich nach einem Weg, beim GET-Request einen eigenen Header anzugeben. ChatGPT antwortet im Kontext der vorigen Frage.
In einem Bash-Script will ich die Kennung einer Datei auslesen.
ChatGPT kennt auch Kotlin samt der Datenbankbibliothek Exposed. Die Antwort schießt ein wenig über das Ziel hinaus und enthält auch Code, um eine neue Tabelle einzurichten.
Extrem cool: Ich habe Code in einer Sprache (hier in der Bash) und brauche äquivalenten Code in einer anderen Sprache (hier für die PowerShell). Kein Problem für ChatGPT.
Hier hilft ChatGPT bei der Formatierung von Bildern in einem Markdown-Dokument, das mit Pandoc verarbeitet wird. ChatGPT weist auf die Pandoc-spezifische Erweiterung der Markdown-Syntax hin.
ChatGPT hilft auch bei der Linux-Administration. Hier geht es darum, mit »tar« ein inkrementelles Backup zu erstellen.

ChatGPT versus Copilot

Aus Sicht von Entwicklern ist der GitHub Copilot ein kostenpflichtiges Konkurrenzprodukt zu ChatGPT. Der Copilot soll die Code-Erstellung in Editoren wie VSCode beschleunigen. Im Prinzip geben Sie einen möglichst aussagekräftigen Funktions- oder Methodennamen an, und der Copilot schlägt dafür fertigen Code vor. Die Code-Schnipsel kommen aus dem riesigen Angebot öffentlicher Git-Repositories.

Auch der Copilot nutzt KI-Technik bei der Auswahl und Adaptierung von Code-Schnipsel. Copyright-technisch ist das bedenklicher als die Vorgehensweise von ChatGPT, die in der Regel Code wirklich neu generiert. Natürlich kann es passieren, dass der Copilot Code vorschlägt, der bekannte Fehler oder gar Sicherheitslücken enthält. Das sind aber Probleme, die auch bei ChatGPT auftreten können. Letztlich bleibt es die Verantwortung des Entwicklers / der Entwicklerin, den Code zu verstehen und zu entscheiden, ob er für das Problem taugt oder nicht.

Für mich liegt der wesentliche Unterschied zwischen ChatGPT und dem Copilot weniger im produzierten Code als in der Bedienung: Mit ChatGPT kann ich gewissermaßen sprechen, ich kann mein ganz spezifisches Problem in Deutsch oder (besser!) in Englisch beschreiben und erhalte eine Antwort, die exakt auf die Aufgabenstellung eingeht. Bei Bedarf kann ich sogar um eine Nachbesserung im einen oder anderen Punkt bitten. Die Arbeitsweise ist für mich ungleich intuitiver, angenehmer und »menschlicher« als der Ansatz des Copiloten, einfach nur Code zu einer Funktionsdeklaration zu liefern.

Mich hat der Copilot schon in der Beta-Phase nicht so recht begeistert, und mit ChatGPT sieht das Angebot — nur wenige Monate nach der Markteinführung — schon ziemlich alt aus.

Letzte Anmerkungen

  • Ich habe aktuell keine Angst, dass mich ChatGPT oder eine ähnliche Technik als Programmierer, Admin, Vortragender oder Autor ablöst. Für mich ist ChatGPT einfach ein neues Hilfsmittel bei meiner Arbeit.
  • Insofern halte ich es auch für verrückt, den Einsatz in Schulen, Unis etc. zu verbieten. Das Ziel muss es vielmehr sein, KI-Tools produktiv (und durchaus verantwortungsvoll) anwenden zu lernen. Dieser Grundsatz gilt ja auch für andere Werkzeuge, die wir heute als selbstverständlich einsetzen, von der Rechtschreibkorrektur bis zur Nutzung der Wikipedia.
  • Ich bin mir ziemlich sicher, dass der Nutzen von KI-Tools umso höher ist, je größer das eigene Wissen ist. Insofern ersetzen diese Tools weder qualifizierte Mitarbeiter noch deren Ausbildung.
  • Vielleicht bin ich altmodisch, aber ich pflege einen höflichen Umgangston mit ChatGPT und vergleichbaren Werkzeugen.
  • Zu guter Letzt habe ich das Gefühl (das ich aber nicht objektiv belegen kann), dass die Kommunikation in englischer Sprache zu besseren Ergebnissen führt als Anfragen in Deutsch. Grundsätzlich ist es verblüffend, dass ChatGPT nahezu jeder Sprache mächtig ist. Aber die IT-Welt ist englisch. StackOverflow ist englisch. Die Originaldokumentation nahezu jedes IT-Tools ist englisch. Selbst Entwickler, die eine andere Muttersprache haben, verwenden in der Regel englischsprachige Variablen-, Klassen- und Methodennamen, kommentieren ihren Code idealerweise in Englisch. Insofern erscheint es mir nahe liegend, Code-Fragen in Englisch zu formulieren, was sich auch in den meisten Screenshots dieses Texts widerspiegelt.

Links

Eine andere Meinung, etwas skeptischer, aber auch mit wesentlich spezielleren Fragen:

Shellclear - History automatisch auf sensible Inhalte untersuchen

29. Oktober 2022 um 08:31

Das kleine Tool shellclear automatisiert das Überprüfen der Shell History auf sensible Inhalte wie Passwörter oder Zugangstoken.

shellclear

Unterstützt werden Shells wie Bash, Zsh, PowerShell und Fish. Das Tool greift auf ein Pattern-File zurück, welches beliebig erweitert werden kann.

Beim Start der Shell werden die Inhalte der History automatisch über dieses YAML-Pattern-File auf Passwörter und Token geprüft.

Sind sensible Inhalte vorhanden, werden diese gelistet und können gelöscht werden.

Momentan wird auf AWS Access Keys, Github Tokens, Gitlab Tokens, Slack, Cloudflare, Twitter, Facebook und vieles mehr getestet.

Installation

curl -sS https://raw.githubusercontent.com/rusty-ferris-club/shellclear/main/install/install.sh | bash

Einbinden in die Shell

nano ~/.bashrc
eval $(shellclear --init-shell)

bzw. 

nano ~/.zshrc
eval $(shellclear --init-shell)

Powershell

$PROFILE

Invoke-Expression (&shellclear --init-shell)

Fish

nano ~/.config/fish/config.fish

shellclear --init-shell | source

shellclear-findings

Verwendung

Durch das Einbinden in beispielsweise Zsh oder Bash prüft shellclear bei jedem Start automatisch auf sensible Inhalte in der History. Dieser Vorgang kann zusätzlich manuell gestartet und konfiguriert werden. Auch das Banner "your shell is clean from sensitive data" lässt sich ausblenden.

#sensible Inhalte suchen
shellclear find

#sensible Inhalte als Tabelle ausgeben
shellclear find --format table

#sensible Inhalte bereinigen
shellclear clear

#banner ausblenden
shellclear --no-banner

#eigene Config festlegen
shellclear config

#history verstecken
shellclear stash

Fazit

Kleiner Helfer für den Alltag, der tut, was er soll. Dank des YAML Formats ist das Tool beliebig erweiterbar. Abgesehen davon sind die größten Cloud-Firmen bereits integriert und das Tool erfüllt im Hintergrund seinen Zweck.

Bash-Kommandos erklären lassen

31. Dezember 2021 um 17:08

Wer Linux intensiv nutzt, wird um die Kommandozeile nicht herumkommen. Hier läuft meist eine Shell, die kompatibel zur Bash ist oder bei der es sich direkt um die Bash handelt.

Interessant bei Bash (und vielen anderen Shells) ist die Leistungsfähigkeit. So beschränkt sich die Kommandozeile nicht auf einfache Programmaufrufe, sondern bietet einige Ausdrücke, die in Verbindung mit kleinen Hilfsprogrammen unter anderem bedingte Anweisungen oder Schleifen ermöglichen. Leider ist die Syntax im Gegensatz zu anderen Skriptsprachen manchmal ungewohnt, weswegen unregelmäßige Anwender öfter mal in der Dokumentation nachlesen müssen.

Eine interessante Unterstützung bietet hierbei explainshell.com. Hier kann man einen Bash-Ausdruck eingeben und ihn sich von der Seite erklären lassen. Dabei werden nicht nur die Manpages der verwendeten Kommandos wie find, grep oder git, sondern auch die passenden Auszüge der bash-Manpage selber eingebunden. Dies wird zusätzlich anschaulich visualisiert.

Der Quellcode von explainshell.com ist GPL-3-lizenziert und auf GitHub verfügbar.

Eine komplette Sitzung in der Shell aufnehmen

23. Oktober 2021 um 08:34

Ein Abschnitt, welcher gute Dienste leisten kann. Ich hatte den Abschnitt vorübergehend immer in die Datei /etc/bash.bashrc hinzugefügt. Ich fand Ihn perfekt, wenn ein Drittanbieter auf dem Server via SSH arbeiten verrichten musste. Vorher sollte der Drittanbieter informiert werden, dass seine Arbeit überwacht wird . Funktioniert natürlich nicht, wenn mit ansible und ähnlichen gearbeitet wird ... Weiterlesen

Der Beitrag Eine komplette Sitzung in der Shell aufnehmen erschien zuerst auf Got tty.

Das Linux Terminal Handbuch – Neues Buch von Josef Moser

14. September 2021 um 10:41

Spaß mit dem Linux Terminal Nach der bei vielen Lesern sehr beliebten Schnellanleitung für Einsteiger über das Linux Terminal erscheint nun das Linux Terminal Handbuch. Mit 336 Seiten ist es deutlich umfangreicher als der kleine Bruder. Auch dieses Buch ist für Linux Einsteiger konzipiert und veranschaulicht mit vielen konkreten Beispielen die Arbeit in der Kommandozeile.… Weiterlesen Das Linux Terminal Handbuch – Neues Buch von Josef Moser

Der Beitrag Das Linux Terminal Handbuch – Neues Buch von Josef Moser erschien zuerst auf Die Seite für LINUX UMSTEIGER.

❌
❌