Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Der praktische Einstieg in die KI-basierte Programmierung - Das Buch führt in die Kernfunktionen von KI-basierten Entwicklungswerkzeugen ein - Es stellt eine Vielzahl von Tools vor: von allgemeinen LLMs bis zu Systemen, die innerhalb von Entwicklungsumgebung genutzt werden - Es zeigt Vor- und Nachteile sowie Anwendungsfälle beliebter Systeme - Sowohl für Programmiereinsteiger*innen als auch für erfahrene Entwickler*innen geeignet Nutzen Sie das Potenzial der neuesten KI-Technologien für Ihre Arbeit: Dieser praktische Leitfaden zeigt den Einsatz von KI-Assistenten für die gesamte Softwareentwicklung – einschließlich Planung, Design und Debugging. Sie erfahren, wie Sie eine breite Palette von Werkzeugen verwenden können, um schneller und effizienter zu programmieren – von allgemeinen LLMs (ChatGPT, Gemini und Claude) bis hin zu codespezifischen Systemen (GitHub Copilot, Tabnine, Cursor und Amazon CodeWhisperer). Tom Taulli – bekannt für seinen lockeren und unterhaltsamen Schreibstil – stellt eine modulare Programmiermethodik vor, die optimal auf die Art undW eise abgestimmt ist, wie Prompts KI-generierten Code erzeugen. Er beschreibt auch, wie LLMs genutzt werden können, um eine Programmiersprache zu lernen, Code zu erklären oder Code von einer Sprache in eine andere zu konvertieren. Das Buch behandelt: - Die zentralen Funktionen von KI-basierten Entwicklungstools - Vor- und Nachteile sowie Use Cases beliebter Systeme, einschließlich GitHub Copilot - Die Einsatzmöglichkeiten von ChatGPT, Gemini, Claude und anderen LLMs für die Programmierung - KI-Entwicklungswerkzeuge für den gesamten Lebenszyklus der Softwareentwicklung, einschließlich Requirements, Fehlerbehebung und Dokumentation - Prompt Engineering für die Programmierung - Den Einsatz von KI-Assistenz für mühsame Aufgaben wie die Erstellung regulärer Ausdrücke - Die Verwendung von KI-basierten Low-Code- und No-Code-Tools
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 318
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Copyright und Urheberrechte:Die durch die dpunkt.verlag GmbH vertriebenen digitalen Inhalte sind urheberrechtlich geschützt. Der Nutzer verpflichtet sich, die Urheberrechte anzuerkennen und einzuhalten. Es werden keine Urheber-, Nutzungs- und sonstigen Schutzrechte an den Inhalten auf den Nutzer übertragen. Der Nutzer ist nur berechtigt, den abgerufenen Inhalt zu eigenen Zwecken zu nutzen. Er ist nicht berechtigt, den Inhalt im Internet, in Intranets, in Extranets oder sonst wie Dritten zur Verwertung zur Verfügung zu stellen. Eine öffentliche Wiedergabe oder sonstige Weiterveröffentlichung und eine gewerbliche Vervielfältigung der Inhalte wird ausdrücklich ausgeschlossen. Der Nutzer darf Urheberrechtsvermerke, Markenzeichen und andere Rechtsvorbehalte im abgerufenen Inhalt nicht entfernen.
Als wir Cassandra innerhalb von sechs Wochen um eine Vektorsuche ergänzt haben, hätten wir unsere Deadline ohne Copilot und ChatGPT nicht halten können. Die meisten Entwicklerinnen und Entwickler müssen sich aber noch mit solchen KI-Tools anfreunden. Toms Buch ist ein großartiger Einstieg, der Ihnen stundenlanges Ausprobieren ersparen wird.
– Jonathan Ellis, Mitbegründer und CTO von DataStax
»Programmieren mit KI« ist eine ausgezeichnete Ressource, die Toms Expertise zeigt und mit der Sie für die aktuellen Fortschritte der Softwareentwicklung, die jeden dazu befähigt, Code zu schreiben, ausgerüstet sind.
– Justin Dorfman, Open Source Community Manager bei Sourcegraph
KI sorgt dafür, dass sich die Vorgehensweise beim Bauen von Software schnell verändert. Von Codeeditoren bis zu Terminals – Unterstützung durch KI durchdringt zunehmend alle Bereiche. »Programmieren mit KI« sollte jeder Entwickler und jede Entwicklerin zuerst lesen, um die täglichen Abläufe durch KI besser zu machen.
– Zach Lloyd, CEO und Mitbegründer von Warp
Tom Taullis Buch ist eine gut strukturierte Reise, die zeigt, wie KI-Tools wie ChatGPT das Leben von Entwicklerinnen und Entwicklern verändern können – sowohl zu Beginn ihrer Karriere als auch dann, wenn sie schon Erfahrungen gesammelt haben. Es bietet nützliche Einblicke in die Vor- und Nachteile KI-gestützter Programmierung, wie auf meiner eigenen Reise von Marketing und Business bis hin zum produktiven Ausliefern von Features für unsere App. Ein tolles Buch für Programmiererinnen und Programmierer, die KI ihrem Werkzeugkasten hinzufügen wollen.
– Titus Capilnean, Mitbegründer von Private Market Labs
KI hat die Entwicklung verändert. Jeder Programmierer und jede Programmiererin muss nun wissen, wie man mit Tools wie GitHub Copilot arbeitet. Toms Buch zeigt, wie es geht.
– Muddu Sudhakar, CEO und Mitbegründer von Aisera
KI-Tools für alle Phasen der Codeerstellung nutzen
Tom Taulli
Deutsche Übersetzung von Thomas Demmig
Tom Taulli
Lektorat: Alexandra Follenius
Übersetzung: Thomas Demmig
Copy-Editing: Sibylle Feldmann, www.richtiger-text.de
Satz: III-satz, www.drei-satz.de
Herstellung: Stefanie Weidner
Umschlaggestaltung: Karen Montgomery, Michael Oréal, www.oreal.de
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
978-3-96009-258-2
978-3-96010-877-1
ePub
978-3-96010-878-8
1. Auflage 2025
Translation Copyright für die deutschsprachige Ausgabe © 2025 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Authorized German translation of the English edition of AI-Assisted Programming, ISBN 9781098164560 © 2024 Tom Taulli. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«.
O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Übersetzer noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buchs stehen.
Vorwort
Einleitung
1Eine neue Welt für die Entwicklung
Evolution und Revolution
Generative KI
Die Vorteile
Suchaufwand reduzieren
Ihr Ratgeber
IDE-Integration
Ihre Codebasis berücksichtigen
Codeintegrität
KI-gestütztes Erzeugen von Dokumentation
Modernisierung
Nachteile
Halluzinationen
Geistiges Eigentum
Datenschutz
Sicherheit
Trainingsdaten
Bias
Eine neue Art des Entwickelns
Karriere
10x-Entwicklerin oder -Entwickler?
Fähigkeiten in der Entwicklung
Zusammenfassung
2Wie KI-Coding-Technologie funktioniert
Zentrale Features
Codevorschläge und kontextsensitive Vervollständigung versus Smart Code Completion
Compiler versus KI-gestützte Programmiertools
Fertigkeitsstufen
Generative KI und Large Language Models (LLMs)
Evolution
Das Transformer-Modell
OpenAI Playground
LLMs bewerten
Arten von LLMs
Bewerten von KI-gestützten Programmiertools
Zusammenfassung
3Prompt Engineering
Kunst und Wissenschaft
Herausforderungen
Der Prompt
Kontext
Anweisungen
Zusammenfassung
Textklassifikation
Empfehlungen
Übersetzung
Eingabe von Inhalten
Format
Best Practices
Seien Sie spezifisch
Akronyme und technische Begriffe
Zero- und Few-Shot Learning
Leitende Wörter
Chain-of-Thought-(CoT-)Prompting
Leitende Fragen
Nach Beispielen und Analogien fragen
Halluzinationen verringern
Sicherheit und Datenschutz
Autonome KI-Agenten
Zusammenfassung
4GitHub Copilot
GitHub Copilot
Preise und Versionen
Anwendungsfall: Hardware programmieren
Anwendungsfall: Shopify
Anwendungsfall: Accenture
Sicherheit
Los geht’s
Codespaces und Visual Studio Code
Vorschläge
Kommentare
Chat
Inline Chat
Open Tabs
Befehlszeilenschnittstelle
Copilot Partner Program
Zusammenfassung
5Andere KI-gestützte Programmiertools
Amazon Q Developer
Google Gemini Code Assist
Tabnine
Replit
CodeGPT
Cody
CodeWP
Warp
Bito AI
Cursor
Code Llama
Andere Open-Source-Modelle
StableCode
AlphaCode
PolyCoder
CodeT5
Unternehmen für Enterprise Software
Zusammenfassung
6ChatGPT und andere universelle LLMs
ChatGPT
GPT-4
Zurechtfinden in ChatGPT
Mobile App
ChatGPT individuell konfigurieren
Browsen mit Bing
Lästige Aufgaben
Reguläre Ausdrücke
Starter Code
GitHub README
Browserübergreifende Kompatibilität
Bash-Befehle
GitHub Actions
Plug-ins
Das Codecademy-Plug-in
Das AskYourDatabase-Plug-in
Recombinant AI Plugin
GPTs
Gemini
Anwendungen
Gemini for Coding
Claude
Zusammenfassung
7Ideen, Planung und Anforderungen
Brainstorming
Marktforschung
Markttrends
Total Addressable Market
Wettbewerb
Anforderungen
Product Requirements Document
Software Requirements Specification
Interviews
Whiteboarding
Ton
Vorgehensweisen bei der Projektplanung
Test-Driven Development (TDD)
Webdesign planen
Zusammenfassung
8Programmieren
Realitäts-Check
Es liegt bei Ihnen
Lernen
Kommentare
Modulare Programmierung
Ein Projekt beginnen
Autofill
Refaktorieren
Ninja Code
Extrahieren von Methoden
Bedingte Anweisungen zerlegen
Umbenennen
Toter Code
Funktionen
Objektorientierte Programmierung
Frameworks und Bibliotheken
Daten
Frontend-Entwicklung
CSS
Grafiken erzeugen
KI-Tools
APIs
Zusammenfassung
9Debuggen, testen und deployen
Debuggen
Dokumentation
Code Review
Unit Tests
Pull Requests
Deployment
User-Feedback
Der Launch
Zusammenfassung
10Schlussfolgerungen
Die Lernkurve ist steil
Es gibt große Vorteile
Aber es gibt auch Nachteile
Prompt Engineering ist eine Kunst und eine Wissenschaft
Mehr als programmieren
KI wird Ihnen nicht den Job wegnehmen
Zusammenfassung
Index
Als ich Anfang der 1990er-Jahre an der UCLA meinen Abschluss machte, dachte ich, ich würde ein Professor werden. Aber als ich bei IBM anfing, verliebte ich mich schnell in die Technologiebranche. Es gab keinen Blick zurück. Ich würde in Zukunft noch für Firmen wie VMware, Pivotal, EMC und SGI arbeiten.
Dann gründete ich eine Reihe von Start-ups. Mein letztes ist Aisera, das generative KI-Lösungen für Unternehmen baut. Unsere Plattform hilft beim Kundenservice, unterstützt Mitarbeitende, assistiert bei der unternehmensweiten Suche, hilft dem IT-Service-Deck und AIOps.
In meinem Berufsleben habe ich viele Innovationen erlebt, zum Beispiel den Aufstieg des Internets, Cloud Computing, Mobilgeräte und Deep Learning. Es gab nur einen Technologiebereich, bei dem es wenig voranging: Softwareentwicklung.
Als Gründer fand ich das ausgesprochen frustrierend. Oft genug gab es bestimmte Dinge, die wir gern getan hätten, es aber nicht konnten, weil unsere Entwicklungsteams schon ausgelastet waren. Mit der KI-gestützten Programmierung hat sich die Situation deutlich verändert. Aisera ist agiler und flinker geworden. Die Energie, mit der unser Wachstum angetrieben wird, hat sich vervielfacht.
Wenn ich jetzt entscheiden soll, ob ich einen Entwickler oder eine Entwicklerin einstelle, will ich wissen, wie sie sich KI zunutze machen. Wie setzen sie diese leistungsfähige Technologie ein, um nervige Prozesse abzuschließen und schneller zu programmieren?
Mein Fazit: Ich glaube, dass es von entscheidender Bedeutung ist, KI-gestützte Programmiertools zu verstehen. Laut Satya Nadella (https://oreil.ly/CuREp), CEO von Microsoft, werden sie »für alle in der Entwicklung zu einem Standardtool werden …«.
Für das Verständnis KI-gestützter Programmierung ist aber ein anderes Vorgehen notwendig. Sie ist keine klassische Entwicklung. Sie müssen verstehen, wie Sie generative KI-Systeme einsetzen. Und hier kommt Toms Buch ins Spiel. Er hat ein Praxisbuch für alle Entwicklerinnen und Entwickler geschrieben, die sich mit KI-gestützter Programmierung vertraut machen wollen. Er behandelt die wichtigsten Themen und liefert viele nützliche Beispiele. Dazu macht es Spaß, das Buch zu lesen, was das Thema zugänglich macht.
Es ist zweifelsohne eine spannende Zeit, Entwickler oder Entwicklerin zu sein. Es gibt viele Möglichkeiten, in der eigenen Karriere voranzukommen. Und einer der besten Schritte dafür ist, KI-gestützte Programmierung zu erlernen.
– Muddu SudhakarCEO und Mitbegründer von Aisera
Mit dem Programmieren habe ich den frühen 1980er-Jahren angefangen. Mein erstes Schätzchen war ein Atari 400 – nicht unbedingt die schnellste Kiste unter der Sonne, mit Gummitastatur, 8 K RAM und Programmen, die von Kassetten geladen wurden. Ich lernte BASIC und erstellte einfache Spiele und kleine nützliche Apps.
Ich war total gefangen.
Mit der Zeit stieg ich zu besseren Rechnern auf. Dabei machte ich mir die Hände an Sprachen wie Pascal, C oder C++ schmutzig. Aber die IDEs haben sich nicht sehr verändert, abgesehen vom Syntax-Highlighting oder einem besseren Debugging.
Als GitHub Copilot und ChatGPT erschienen, änderte sich alles. Als ich diese Tools ausprobierte, fühlte ich mich wie in dem Moment, als ich mein erstes iPhone in den Händen hielt – ein absoluter Gamechanger.
Ich bat ChatGPT in natürlicher Sprache, Code zu schreiben. In VS Code gab ich ein Fragment einer Funktion ein, und GitHub Copilot erzeugte einen Codeblock. Oft genug war es genau das, was ich wollte. Oh, und ich habe sogar Bilder mit ChatGPT in Code umgewandelt.
Die wahre Stärke zeigte sich aber erst, als diese Tools viele der nervigen Aufgaben aus der Entwicklung übernehmen konnten. Wer hat schon Spaß daran, sich mit regulären Ausdrücken herumzuschlagen oder Bash-Befehle und GitHub-Actions zusammenzustellen? Ich sicherlich nicht. Aber diese KI-Programmiertools? Die verputzen so was zum Frühstück.
Es stellte sich heraus, dass die KI-Tools mehr können, als nur beim Programmieren zu helfen. Ich begann, ChatGPT zum Brainstormen von App-Ideen zu verwenden, zum Skizzieren von Anforderungen, ja sogar zum Erstellen von Unit Tests.
Es dauerte nicht lange, bis ich davon überzeugt war, dass KI-gestützte Programmierung eine zwingend notwendige Fähigkeit in der Entwicklung sein würde.
Daher sah ich auch die Notwendigkeit, dieses Buch zu schreiben. Ich erstellte einen Entwurf und zeigt ihn O’Reilly. Dort sah man sofort das Potenzial.
Es hat sehr viel Spaß gemacht, dieses Buch zu schreiben, und ich habe eine Menge gelernt. Auch konnte ich mit vielen klugen Entwicklerinnen und Entwickler sprechen, die mir großartige Ideen und Tipps geliefert haben.
KI-gestützte Programmierung entwickelt sich allerdings schnell weiter. Daher gibt es zu diesem Buch ein GitHub-Repository (https://github.com/ttaulli/AI-Assisted-Programming-Book). Dort finden Sie Updates zum Buch, und es werden weitere wichtige Entwicklungen in diesem aufregenden Gebiet behandelt.
Daher vielen Dank, dass Sie dieses Buch gewählt haben. Ich hoffe, Sie finden es nicht nur informativ, sondern sehen darin auch eine wertvolle Reisebegleitung.
Ein kurzer Überblick über jedes Kapitel:
Kapitel 1
,
Eine neue Welt für die Entwicklung
: Dieses Kapitel ist der Ausgangspunkt mit einem Überblick darüber, wie generative KI die Welt des Programmierens verändert. Es geht darum, wie die KI-Tools beim Entwickeln dabei helfen, mehr über das große Ganze nachdenken zu können und sich weniger mit den Details des Codes herumschlagen zu müssen. Sie erhalten hier auch einen schnellen Ritt durch die Geschichte der Programmiersprachen und finden Details über fortgeschrittene KI-Technologien wie GPT-4.
Kapitel 2
,
Wie KI-Coding-Technologie funktioniert
: In diesem Kapitel wird zunächst generative KI erläutert und erklärt, warum Transformer-Modelle und Large Language Models in der Welt der Programmierung so wichtig sind. Dazu gibt es einen Überblick über den Playground von OpenAI, und Sie erfahren, wie Sie dort mit den KI-Modellen herumspielen und sie an Ihre Programmierbedürfnisse anpassen können.
Kapitel 3
,
Prompt Engineering
: Die Informationen aus diesem Kapitel sind für den Einsatz KI-gestützter Programmiertools ausgesprochen wichtig. Sie finden hier haufenweise praktische Tipps, zum Beispiel zum Umgang mit langatmigen oder verwirrenden Prompts oder wie Sie die KI davon abhalten, sich Dinge auszudenken. Dazu lernen Sie hier die wichtigsten Komponenten eines Prompts kennen und erfahren, wie Sie diese effektiv einsetzen können.
Kapitel 4
,
GitHub Copilot
: Hier erhalten Sie einen Überblick über dieses leistungsfähige Werkzeug. Sie lernen die zentralen Features kennen, wie zum Beispiel das Erstellen von Code durch Kommentare, Chat oder die Verwendung einer KI-gestützten Befehlszeilenschnittstelle. Ich beschreibe zudem, wie Sie das System für eigene Codebasen anpassen.
Kapitel 5
,
Andere KI-gestützte Programmiertools
: In diesem Kapitel wird auf andere KI-gestützte Programmiertools wie Amazon CodeWhisperer, Duet AI von Google oder Replit eingegangen.
Kapitel 6
,
ChatGPT und andere universelle LLMs
: Hier wird beschrieben, wie Sie diese Tools einsetzen, um zum Beispiel mit regulären Ausdrücken umzugehen, initialen Code zu erstellen oder GitHub Actions aufzusetzen.
Kapitel 7
,
Ideen, Planung und Anforderungen
: Der Fokus liegt in diesem Kapitel auf dem Einsatz von Chatbots, um Softwareprojekte anzustoßen. Dazu gehören Themen wie Brainstorming, Marktforschung, Anforderungsdokumente und Test-Driven Development.
Kapitel 8
,
Programmieren
: In diesem Kapitel gehen wir häufig vorkommende Szenarien bei der Entwicklung durch – das Arbeiten mit APIs, modulare Programmierung und Refaktorierung. Sie erhalten auch einen Blick auf den Umgang mit Funktionen und objektorientierter Programmierung.
Kapitel 9
,
Debuggen, testen und deployen
: Hier kommen wir zu den weniger glamourösen Aspekten der Entwicklung. Wir reden über das Beheben von Fehlern, den Einsatz von KI-gestützten Programmiertools für Code Reviews, das Erstellen von Unit Tests und das Beschreiben von Pull Requests.
Kapitel 10
,
Schlussfolgerungen
: Hier geben wir noch einmal einen Überblick und heben die wichtigsten Punkte hervor.
In der Softwareentwicklung versuchen wir immer, Sicherheit zu erlangen. Übergeben Sie einem Programm eine bestimmte Eingabe, erhalten Sie immer die gleiche Ausgabe. Diese rein deterministische Logik war seit Anbeginn der Zeiten Leib und Seele von Software.
Aber wenn Sie KI-gestützte Programmiertools einsetzen, wird das Ganze ein bisschen auf den Kopf gestellt. Ergebnisse fühlen sich ein wenig ausgewürfelt an, weil alles auf Wahrscheinlichkeiten beruht. Bitten Sie ein KI-Tool mehrfach, mal eben Code zusammenzustellen, erhalten Sie eventuell verschiedene Ergebnisse – selbst wenn Sie immer den gleichen Prompt nutzen. Zu Beginn sorgt das sicherlich für Stirnrunzeln, aber wenn Sie sich damit arrangiert haben, lohnt es sich einfach. Darum gibt es ein Kapitel zum Prompt Engineering, das Ihnen dabei helfen wird, sich mit diesem neuen Vorgehen beim Programmieren vertraut zu machen.
Dieses Buch ist für alle Entwicklerinnen und Entwickler, egal ob sie gerade mit dem Programmieren anfangen oder ob sie schon lange im Geschäft sind.
Die folgenden typografischen Konventionen werden in diesem Buch genutzt:
Kursiv
Für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen.
Nichtproportionalschrift
Für Programmlistings, aber auch für Codefragmente in Absätzen, wie zum Beispiel Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter.
Nichtproportionalschrift fett
Zeigt Befehle oder anderen Text an, der genau so vom Benutzer eingegeben werden muss.
Nichtproportionalschrift kursiv
Zeigt Programmcode an, der durch Benutzereingaben oder durch kontextabhängige Werte ersetzt werden soll.
Dieses Zeichen steht für einen allgemeinen Hinweis.
Zusätzliches Material (Codebeispiele, Übungen und so weiter) finden Sie zum Herunterladen unter https://github.com/ttaulli/AI-Assisted-Programming-Book.
Dieses Buch soll Ihnen bei Ihrer Arbeit helfen. Ganz allgemein gilt: Wenn in diesem Buch Beispielcode angeboten wird, können Sie ihn in Ihren Programmen und Dokumentationen verwenden. Sie müssen sich dafür nicht unsere Erlaubnis einholen, es sei denn, Sie reproduzieren einen großen Teil des Codes. Schreiben Sie zum Beispiel ein Programm, das mehrere Teile des Codes aus diesem Buch benutzt, brauchen Sie keine Erlaubnis. Verkaufen oder vertreiben Sie Beispiele aus O’Reilly-Büchern, brauchen Sie eine Erlaubnis. Beantworten Sie eine Frage, indem Sie dieses Buch und Beispielcode daraus zitieren, brauchen Sie keine Erlaubnis. Binden Sie einen großen Anteil des Beispielcodes aus diesem Buch in die Dokumentation Ihres Produkts ein, brauchen Sie eine Erlaubnis.
Wir freuen uns über eine Erwähnung, verlangen sie aber nicht. Eine Erwähnung enthält üblicherweise Titel, Autor, Verlag und ISBN, zum Beispiel: »Programmieren mit KI von Tom Taulli, O’Reilly 2025, ISBN 978-3-96009-258-2.«
Falls Sie befürchten, zu viele Codebeispiele zu verwenden oder die oben genannten Befugnisse zu überschreiten, kontaktieren Sie uns unter der E-Mail-Adresse [email protected].
Ich möchte mich bei den Leuten von O’Reilly bedanken, die an dieses Buch geglaubt und viel dafür getan haben, um es Wirklichkeit werden zu lassen: Nicole Butterfield, Shira Evans und Brian Guerin. Außerdem hatte ich außerordentlich tolle Tech-Reviewer. Dazu gehören Roja Boina, Abraham Borg, Sarah Kim, Ebubechukwu (Nnenna) Oguaju-Dike und Gaurav Deshmukh.
Während Andrej Karpathy (https://oreil.ly/m4fFk) in Stanford in den Jahren 2011 bis 2016 mit Architekturen von Dense Neural Networks jonglierte und versuchte, mithilfe von Computer Vision alles aus Pixeln herauszuholen, war er gleichzeitig auch noch bei Google beschäftigt. Dort probierte er dieses und jenes und setzte ein Feature-Learning-System für YouTube-Videos auf. Dann traf er die Entscheidung, Gründungsmitglied von OpenAI und später Senior Director of AI bei Tesla zu werden, wo er ein Team zum Aufbau des Autopilotsystems leitete.
Man kann durchaus sagen, dass er einer der besten Programmierer der Welt ist. Zudem ist er ein talentierter Schreiber mit wirklich vielen Followern bei Twitter/X – nahezu 800.000. Als ChatGPT das Licht der Welt erblickte, twitterte (https://oreil.ly/9kBmX) er:
Die heißeste neue Programmiersprache ist Englisch.
Das war ernst gemeint. Es ging nicht nur um eine poetische Ode an das Programmieren, sondern um einen Gruß an eine Zukunft, in der das Tippen von Prompts in natürlicher Sprache Computercode in nahezu jeder beliebigen Sprache erzeugen könnte. Es ist so, als hätte man ein bilinguales Genie in seinem Computer, der bereitsteht, Ihre natürlichsprachigen Wünsche in Codebefehle umzusetzen.
Dann kam ein Tweet (https://oreil.ly/a_jg1), der die Stimmung viele Entwickler und Entwicklerinnen widerspiegelte:
Copilot hat mein Coding dramatisch beschleunigt. Ich mag mir nicht vorstellen, wieder zu »manuellem Coding« zurückzukehren. Noch bin ich dabei, mich damit vertraut zu machen, aber der Copilot schreibt schon nahezu 80% meines Codes mit etwa 80% Korrektheit. Ich programmiere gar nicht mehr wirklich, ich prompte und bearbeite.
Karpathy bedankte sich damit bei GitHub Copilot von Microsoft – einem neuen Werkzeug der KI-gestützten Programmierung. Aber nicht lange danach kamen viele andere Tools zum Vorschein. Der Fortschritt war atemberaubend.
Mittlerweile mag die Coding-Landschaft eher wie ein Dschungel erscheinen. Was ist diese schöne neue Welt der KI-Tools? Wo sind sie schöner Schein, und welche werden im Sande verlaufen? Und wie können Sie da durchsteigen, um ein ausgefuchstes, KI-gestütztes Programmiergenie zu werden?
Nun, dieses Buch wird Ihnen dabei helfen, diese Fragen zu beantworten – und viele mehr. Der Schwerpunkt wird darauf liegen, sich diese Tools nutzbar zu machen, um nicht nur schneller, sondern auch klüger zu programmieren – und dabei auch noch Spaß zu haben. Also krempeln wir die Ärmel hoch und steigen direkt ein in die Welt der KI-gestützten Programmierung.
Ein zentrales Thema bei der Evolution von Programmiersprachen ist Abstraktion. Das ist eine einfache Art, zu beschreiben, wie Systeme beim Entwickeln besser handhabbar werden. Werden die mühsamen Details hinter den Kulissen abgehandelt, kann man sich beim Entwickeln darauf konzentrieren, was am wichtigsten ist. Das war eine treibende Kraft hinter Innovationen, die Durchbrüche wie das Internet, Cloud Computing, Mobile oder KI ermöglicht hat.
Abbildung 1-1 zeigt die evolutionären Schritte der Abstraktion im Lauf der Jahrzehnte.
Abbildung 1-1:Die Abstraktion von Programmiersprachen und Tools hat sich im Laufe der Jahrzehnte weiterentwickelt.
Gehen wir etwas mehr ins Detail und beginnen wir in den 1940ern:
Maschinensprache zu Assemblersprache
Zu Beginn des Computerzeitalters mussten sich Programmiererinnen und Programmierer mit Nullen und Einsen herumschlagen, um sich die Maschinen untertan zu machen. Dann aber hatte die Assemblersprache ihren Auftritt. Sie bot alphanumerische Anweisungen, die das Programmieren einfacher und weniger fehleranfällig machten.
Hochsprachen
Die 1950er brachten uns Fortran und COBOL – Sprachen, mit denen man eine Art von normalem Englisch nutzen konnte, wie zum Beispiel DISPLAY, READ, WRITE und IF/THEN/ELSE. Ein Compiler wandelte diese in Nullen und Einsen um, mit denen der Computer etwas anfangen konnte. Gleichzeitig konnten Personen ohne technischen Hintergrund den Code im Allgemeinen ausreichend gut lesen, um den Workflow zu verstehen. Das Entstehen von Hochsprachen würde ein wichtiger Katalysator für die Computerrevolution werden.
Prozedurale Programmierung
Sprachen wie C oder Pascal haben die prozedurale Programmierung eingeführt, bei der komplexe Aufgaben in hübsche, kleine Schachteln namens Funktionen verpackt werden. Diese Abstraktion erlaubt eine bessere Wiederverwendbarkeit und Wartbarkeit – für das Managen riesiger Softwareprojekte waren keine übermenschlichen Fähigkeiten mehr erforderlich.
Objektorientierte Programmierung (OOP)
Zu den Stars dieser Art von Computersprache gehören C++ und Java. Mit der objektorientierten Programmierung kam eine ganz neue Abstraktionsebene ins Spiel, sodass man beim Programmieren reale Entitäten mit Klassen und Objekten modellieren konnte, wobei gleichzeitig Daten und Verhalten gekapselt wurden. Das hat die Modularität gefördert und ein intuitiveres Lösen von Problemen ermöglicht.
Skriptsprachen und Webentwicklung
Python, Ruby und JavaScript abstrahieren viele der Aufgaben auf niedrigerer Ebene, die mit dem Programmieren verbunden sind. Sie bieten umfassende Bibliotheken und eingebaute Datenstrukturen, vereinfachen häufig anzutreffende Programmieraufgaben und verringern die Menge an Code, die erforderlich ist.
Machine Learning und KI
Mit dem Aufstieg von KI und ML (Machine Learning, maschinelles Lernen) haben spezialisierte Bibliotheken und Frameworks wie TensorFlow oder PyTorch viele komplexe mathematische Details der Programmierung wegabstrahiert. Dadurch kann man sich beim Entwickeln auf das Modellieren von Architekturen und Trainieren von Prozessen konzentrieren.
KI-gestützte Programmierung
Natürlich ist das aktuellste Kapitel der Geschichte der Abstraktion die KI-gestützte Programmierung à la GPT-4 und anderen massiven Large Language Models (LLMs). Die sind vergleichbar mit einer Backstage-Crew, die darauf wartet, auf Ihren Befehl hin Code zu generieren.
Schauen wir uns ein einfaches Beispiel an. Dazu werden wir ChatGPT nutzen, das eine robuste Fähigkeit zum Erzeugen von Code bietet. Wir werden einen Prompt verwenden, mit dem wir erklären, was das System tun soll. Schauen Sie sich den folgenden Prompt an:
Prompt: Schreibe in Python ein Programm, das prüft, ob eine gegebene Ganzzahl gerade oder ungerade ist, und das Ergebnis ausgibt.
Abbildung 1-2 zeigt die Antwort von ChatGPT.
Abbildung 1-2:Wenn ChatGPT gebeten wird, Code zu erzeugen, enthält die Antwort nicht nur ein Listing, sondern auch eine Erklärung.
Wir bekommen das Codelisting, das sogar hilfreiche Kommentare enthält. Darüber hinaus wird erläutert, wie das Programm funktioniert. Sie können oben rechts auf den Button Copy code klicken, um den Code in Ihre IDE zu übernehmen und auszuführen.
Bevor wir uns genauer anschauen, wie KI-gestützte Programmiertools funktionieren, wollen wir uns einen Überblick über generative KI verschaffen. Diese ist die Grundlage solcher Systeme.
Generative KI ist ein Zweig der künstlichen Intelligenz (KI – Artificial Intelligence, AI), die das Erstellen neuer und einzigartiger Inhalte ermöglicht. Abbildung 1-3 zeigt, wie die unterschiedlichen Teile zueinander in Beziehung stehen.
Abbildung 1-3:Es gibt unterschiedliche Arten von KI, die man sich als verschachtelte Untermengen vorstellen kann. Generative KI und schließlich die Large Language Models befinden sich ganz im Zentrum.
KI ist das große Ganze: Es enthält alle Systeme, die Aufgaben erledigen können, die sich nach menschlicher Intelligenz anfühlen. Die nächste Stufe ist das Machine Learning (ML). Statt sich an explizite Regeln zu halten, liefern ML-Systeme Einblicke anhand von großen Datenmengen. ML basiert im Allgemeinen auf komplexen Algorithmen, die Vorhersagen oder Entscheidungen ohne eine feste Programmierung erlauben.
Im nächsten Schritt sehen wir Deep Learning (DL) – ein Bereich des ML, der auf neuronalen Netzen mit verborgenen Schichten basiert – daher das »Deep«. Diese geschichteten Modelle haben erstaunliche Ergebnisse in Bereichen wie Bild- oder Spracherkennung geliefert.
Ein Teilgebiet des Deep Learning ist die generative KI (oder GenAI). GenAI-Modelle schaffen aus ihren Trainingsdaten neue Daten.
Und ganz tief verschachtelt sitzen nun die LLMs, wie zum Beispiel GPT-4, Gemini, Claude oder LLaMA 2. Diese leistungsstarken Modelle – oft als Foundation Models bezeichnet – geben mithilfe aktuellster Algorithmen und einem Training mit riesigen Datenmengen menschenähnliche Texte wieder.
Aber generative KI ist mehr als nur LLMs. GenAI besitzt auch multimodale Fähigkeiten, es kann also Bilder, Audio und Video erstellen.
Im nächsten Kapitel schauen wir uns genauer an, wie generative KI funktioniert. Aber zunächst wollen wir uns mit den Vor- und Nachteilen KI-gestützter Programmiertools befassen.
KI-gestützte Programmiertools sind entstanden, um die Fähigkeiten von Entwicklerinnen und Entwicklern zu verbessern, sodass sich diese auf das Lösen schwierigerer Probleme und ausgefeilterer Innovationen konzentrieren können, statt in monotonen Aufgaben oder komplexen Codedetails zu versacken. Darum ist die Wahl des Begriffs »Copilot« bei GitHub perfekt. Es geht darum, im Cockpit einen zuverlässigen Partner an seiner Seite zu haben, der Sie durch die komplizierten und oft mühsamen Aspekte des Schreibens von Code navigiert und Ihnen damit erlaubt, sich auf die wichtigen Dinge zu fokussieren.
In den nächsten Abschnitten werden wir die Vorteile und praktischen Anwendungen dieser leistungsfähigen Systeme beschreiben.
Beim Entwickeln findet man sich oft in der Rolle eines digitalen Detektivs wieder, der nervigen Bugs hinterherjagt oder kryptischen Code zu verstehen versucht. Stößt man auf ein Hindernis, ist man instinktiv versucht, danach zu googeln oder Stack Overflow einen Besuch abzustatten. Eine schnelle Suche, ein Stückchen Code – et voilà, schon ist man wieder in seiner IDE (Integrated Development Environment).
Aber manchmal kann das auch zur Geduldsprobe werden. Die lange Diskussion bei Stack Overflow liefert kein Ergebnis. Sie suchen weiter – aber nichts scheint das Richtige zu sein. Es gibt da die eine Diskussion, die hilfreich ist, und Sie suchen nach ähnlichen Themen weiter. Sie schauen sich sogar auf YouTube nach einem Video um. Nachdem Sie dem Problem mehr als eine halbe Stunde lang hinterhergejagt sind, haben Sie es endlich gelöst.
Ja, das ist allen Entwicklern und Entwicklerinnen schon passiert. Interessanterweise unterstreicht der 2022 Developer Survey (https://oreil.ly/WQ6De) von Stack Overflow, der Antworten von mehr als 70.000 Entwicklerinnen und Entwicklern ausgewertet hat, diese Frustration. Mehr als 62% der Antwortenden hat mehr als 30 Minuten pro Tag mit der Suche nach Antworten verbracht und 25% sogar mehr als eine Stunde. Im Survey steht: »Bei einem Team aus 50 Entwicklerinnen und Entwicklern summiert sich die Zeit, die mit dem Suchen nach Antworten oder Lösungen verbracht wird, für das Team auf 333 bis 651 Stunden pro Woche.«
Was wäre nun, wenn es eine Möglichkeit gäbe, diese Suche abzukürzen und schnell zur Lösung zu kommen? Jetzt hat die KI-gestützte Programmierung ihren Auftritt – unser Ritter mit schimmernden Algorithmen. Untersuchungen von Microsoft untermauern das: Mehr als 90% der Entwickler und Entwicklerinnen, die GitHub Copilot nutzen, haben ihre Aufgaben schneller erledigen können.
Microsoft hat das sogar in einem Coder-Showdown getestet. 95 professionelle Entwicklerinnen und Entwickler wurden eingeladen und in zwei Gruppen aufgeteilt. Die Aufgabe bestand darin, einen HTTP-Server in JavaScript zu schreiben. Die Gruppe, die GitHub Copilot genutzt hat, konnte die Aufgabe um 55% schneller abschließen (https://oreil.ly/TtsA0) als die Gruppe, die ihn nicht verwendet hat.
Und es ist nicht nur Microsoft, das dieses Loblied anstimmt. McKinsey & Company hat ebenfalls eine Forschungsstudie (https://oreil.ly/xOLj3) durchgeführt. Mehr als 40 Entwickler und Entwicklerinnen aus den USA und Asien nahmen teil – mit unterschiedlich viel Erfahrung und verschiedenem Hintergrund. Über mehrere Wochen wurden drei alltägliche Softwareaufgaben abgeschlossen: Code generieren, refaktorieren und dokumentieren.
Die Ergebnisse? Bei der Dokumentation, die den Code schön und sauber halten sollte, haben KI-gestützte Tools gerockt – die benötigte Zeit reduzierte sich auf die Hälfte –, und auch für das Erstellen neuen Codes und das Refaktorieren waren die Daten ähnlich gut.
Bei komplexen Aufgaben allerdings schnitten die KI-Tools nicht ganz so gut ab. Es wurden nicht einmal 10% an Zeit eingespart (https://oreil.ly/c_7sx).
Interessanterweise hat die Untersuchung auch gezeigt, dass das Verringern der aufgewendeten Zeit die Gesamtqualität des Codes nicht negativ beeinflusst hat, wenn man sich beispielsweise Fehler, Lesbarkeit und Wartbarkeit anschaut. Tatsächlich haben die KI-gestützten Programmiertools sogar für kleine Verbesserungen gesorgt. Das lag aber oft eher daran, dass die Personen mit den Tools iterativ vorgegangen sind.
Die McKinsey-Studie hat folgende Ergebnisse geliefert:
Vereinfachen von Routineaufgaben
Die Tools können sehr gut dabei helfen, Alltagsaufgaben zu erledigen, wie zum Beispiel Funktionen mit Code vorzubereiten, in Echtzeit bei Code Completion zu assistieren oder Code automatisch zu dokumentieren. Indem solche Aufgaben übernommen werden, bekommt man beim Entwickeln mehr Zeit, um sich um komplexere Probleme zu kümmern und damit Software-Features schneller zu deployen.
Bessere Codeentwürfe
Es kann sehr einschüchternd sein, auf ein leeres Blatt Papier zu starren, aber mit generativen KI-Tools ist es beim Entwickeln möglich, mithilfe eines einfachen Prompts den kreativen Prozess durch Codevorschläge anzustupsen – entweder direkt in der IDE oder in einer eigenen Umgebung. Viele Entwicklerinnen und Entwickler wissen diese KI-basierten Vorschläge sehr zu schätzen, da sie dabei helfen, das »Leerer-Bildschirm-Problem« zu überwinden und schneller in die »Coding-Zone« zu gelangen.
Bestehenden Code schneller anpassen
Mit effektiven Prompts kann man während der Entwicklung bestehenden Code zügiger anpassen oder verbessern. So kann man beispielsweise Code aus Onlinebibliotheken kopieren, in einen Prompt stecken und dann iterativ anhand bestimmter Kriterien nach KI-gestützten Anpassungen fragen.
Besser auf neue Herausforderungen vorbereiten
Die Technologie kann als schneller Einführungskurs dienen und dabei helfen, sich mit unbekannten Entwicklungsumgebungen oder Sprachen vertraut zu machen. Wenn man etwas Neues angeht, sind diese Tools wie eine erfahrene Begleitung, die neue Konzepte hervorhebt, unterschiedliche Codebasen auseinandernimmt und Vergleiche beim Einsatz verschiedener Frameworks zieht.
Mehrere Tools einsetzen
Die Forschung zeigt, dass der Einsatz mehrerer verschiedener Tools effektiver ist. Ein Beispiel: Eine Entwicklerin kann ein Tool für Prompts und Chats nutzen, ein anderes greift auf die Codebasis zurück, um automatisches Vervollständigen zu ermöglichen und Vorschläge zu machen. Das erste Tool wird als sehr hilfreich angesehen, wenn man beim Refaktorieren von Code Fragen hat, weil es gute Gespräche führen kann. Das zweite Tool ist dagegen effektiv beim Erstellen von neuem Code, weil es so tief in die Entwicklungsumgebung integriert ist. Wenn sich diese KI-Tools für eine Aufgabe zusammengetan haben, war die Entwicklung 1,5- bis 2,5- mal so schnell.
ChatGPT können Sie bei vielen Arten von Entwicklungsaktivitäten um Rat fragen. Hier ein Prompt:
Gib mir bitte detaillierte Tipps und Best Practices für das Minimieren des Suchaufwands und das Verbessern der Produktivität beim Programmieren. Führe dabei auch Strategien zum Organisieren von Code auf, zum Dokumentieren, zu Tools und zur eigenen Mentalität.
Abbildung 1-4 zeigt das Ergebnis.
Abbildung 1-4:Sie können von ChatGPT nützliche Ratschläge zu Programmieraufgaben erhalten
ChatGPT führt drei wichtige Bereiche auf. Es empfiehlt, auf ein modulares Design zu setzen, Namen konsistent zu nutzen und Dateien logisch zu organisieren. Zudem schlägt es eine saubere Dokumentation mit Kommentaren, Docstrings und READMEs vor. Dann erwähnt es auch noch den Einsatz von Tastenkürzeln in einer IDE, das Verwenden von Tools wie Git und das Dokumentieren von Entscheidungen.
Eine nahtlose Integration in die IDE ist für die KI-gestützte Programmierung unabdingbar. So bleibt der Schwung im Entwicklungsprozess erhalten, und man muss sich nicht mit noch einer ganz neuen Plattform anfreunden. Es ist weniger Zeit für das Erklimmen der Lernkurve erforderlich, Sie können sich daher besser dem Programmieren widmen. Zudem bedeutet ein seltenerer Wechsel zwischen unterschiedlichen Plattformen auch weniger Reibung und eine angenehmere Programmiererfahrung.
Dazu gibt es den Vorteil des Echtzeitfeedbacks. Wenn man beim Entwickeln Code zusammenschreibt oder anpasst, können integrierte Tools direkt einspringen und Fehler hervorheben, Korrekturen vorschlagen oder eine bessere Möglichkeit empfehlen, um Dinge zu erledigen. Das verzögerungsfreie Hin und Her aus Schreiben, Feedback und Anpassungen fühlt sich an, als hätte man einen freundlichen Coach neben sich sitzen. So werden Sie hin zu saubererem, effizienterem Code geleitet, ohne sich mit manuellen Reviews oder externen Prüfungen herumschlagen zu müssen.
KI-gestützte Systeme können zudem eine IDE besser machen, indem sie auf die größere Coding-Struktur zugreifen. Die KI erhält Zugriff auf Variablentypen, Methodensignaturen und sogar auf die Projektstruktur, um relevante Codevorschläge machen zu können. Denn es geht nicht nur darum, Code auszuspucken.
In Tabelle 1-1 sind ein paar der besten KI-gestützten Programmiertools zusammen mit den von ihnen unterstützten IDEs aufgeführt.
Eine Studie von Microsoft (https://oreil.ly/3e2sI) hat gezeigt, dass 88% der Anwender und Anwenderinnen von GitHub Copilot weniger frustriert sind und sich besser fokussieren können. Entscheidend dafür war, dass sie innerhalb der IDE bleiben konnten und weniger Zeit mit Suchen verbringen mussten. Dadurch konnten sie bei der Entwicklung »im Fluss bleiben«.
Tabelle 1-1:Von beliebten KI-gestützten Programmiertools unterstützte IDEs
KI-gestützte Programmiertools
IDEs
GitHub Copilot
Visual Studio Code, Visual Studio, Vim, Neovim, JetBrains suite, Azure Data Studio 1
Tabnine
Visual Studio Code, WebStorm, PyCharm, Eclipse, IntelliJ Platform, PhpStorm, CLion, Neovim, JupyterLab, Rider, DataGrip, AppCode, Visual Studio 2022, Android Studio, GoLand, RubyMine, Emacs, Vim, Sublime Text, Atom.AI, Jupyter Notebook 2
CodiumAI
Visual Studio Code, JetBrains (IntelliJ, WebStorm, CLion, PyCharm)
Amazon CodeWhisperer
Visual Studio Code, IntelliJ IDEA, AWS Cloud9, AWS Lambda console, JupyterLab, Amazon SageMaker Studio, JetBrains (IntelliJ, PyCharm, CLion, GoLand, WebStorm, Rider, PhpStorm, RubyMine, DataGrip)
Bestimmte KI-gestützte Programmiertools sind darauf optimiert, sehr gut mit spezifischen Entwicklungsumgebungen zusammenzuarbeiten. Entwicklerinnen und Entwickler haben die Möglichkeit, diese Tools noch weiter zu optimieren, indem sie es ihnen ermöglichen, die internen Bibliotheken, APIs, Best Practices und architektonischen Entwürfe eines Projekts zu verstehen. Damit ist sichergestellt, dass die Ihnen empfohlenen Vorschläge nicht nur technisch solide sind, sondern auch auf die spezifischen Anforderungen Ihres Projekts eingehen.
Diese Anpassung hilft dabei, die erzeugten Codevorschläge auf die in Ihrer Organisation eingeführten Coding-Standards, Qualitätsvorgaben und Sicherheitsprotokolle abzustimmen. Das Fokussieren auf möglichst hochwertigen Code sorgt dafür, dass Teams nicht über veraltete oder unerwünschte Codeschnipsel stolpern.
Zudem ist dieses optimierte Vorgehen ein großer Vorteil für Newcomer in einem Entwicklungsteam. Klassischerweise ist es sehr zeitaufwendig, sich mit einer neuen Codebasis vertraut zu machen – Monate, in denen man Code erkundet, die Dokumentation liest und die Coding-Protokolle verinnerlicht. Ein KI-gestütztes Programmiertool kann dabei deutlich Zeit einsparen.
Die Codeintegrität ist ein Markenzeichen guter Softwareentwicklung. Sie hebt die Robustheit und Vertrauenswürdigkeit hervor, mit der der Quellcode die gewünschte Funktion umsetzt. Stellen Sie sie sich wie eine Lupe vor, mit der die Vollständigkeit, Genauigkeit, Konsistenz und Stabilität des Codes untersucht wird. Ein Schluckauf bei der Codeintegrität legt die Grundlage für Fehler und potenzielle Sicherheitsprobleme, die wiederum zu Systemabstürzen und Einbrüchen führen können.
Zu den diversen Faktoren, die die Codeintegrität gewährleisten, gehören Genauigkeit, Sorgfalt, Einheitlichkeit und Sicherheitsmaßnahmen, aber auch die Einfachheit, mit der sich der Code warten lässt. Beim Entwickeln kann man die Codeintegrität durch verschiedenste Ansätze besser machen – zum Beispiel Unit Tests und Integrationstests, Peer Code Reviews, statische Codeanalysen oder strikte Sicherheits-Assessments.
Es sei darauf hingewiesen, dass eine wachsende Zahl von KI-gestützten Programmiertools Features anbietet, die dafür gedacht sind, die Codeintegrität zu verbessern. Sie schauen sich die Details des Codes an und ebnen den Weg für zukünftige sinnvolle und exakte Unit Tests und das Berücksichtigen von Sonderfällen.
Manche dieser Tools haben »Fix-it«-Empfehlungen. Diese werden geprüft, bevor sie die Entwicklerinnen und Entwickler zu Gesicht bekommen, um sicherzustellen, dass sie keine neuen Probleme verursachen. Dann kann man sie begutachten und ihre Vorschläge direkt in der IDE übernehmen.
Ein weiterer Vorteil dieser Tools ist ihre Fähigkeit, Pull Requests schnell zu analysieren und prägnante Zusammenfassungen von Codeanpassungen zu liefern. Außerdem helfen sie dabei, die lästige Pflicht des Erstellens von Release Notes zu automatisieren, die sehr nützlich sind, um die Weiterentwicklung von Softwareversionen zu dokumentieren.
Dokumentation ist der stille Held im Softwareentwicklungsprozess. Sie hilft dabei, sicherzustellen, dass die Codebasis lesbar, wartbar und skalierbar bleibt – insbesondere wenn sich Teams verändern und Projekte durch Komplexität aufgeblasen werden. Aber sehen wir den Tatsachen ins Auge: Das Erstellen und Aktualisieren dieser Dokumentation fühlt sich oft wie das Waten durch einen bürokratischen Sumpf an – es kann Zeit fressen und gelegentlich auf eine unbestimmte Zukunft verschoben werden.
Hier kommen die KI-gestützten Programmiertools ins Spiel. Diese digitalen Schreiberlinge können in einem Bruchteil der Zeit umfassende Dokumentation zusammenstellen – mit guter Qualität und ausreichender Klarheit. Dafür werden die Fertigkeiten von LLMs genutzt, die besonders beim Umgang mit Sprache brillieren.
Marc Andreessens knackige Aussage von 2011 aus dem Wall Street Journal, »Software Is Eating the World« (https://oreil.ly/RW8e8), ist wie ein guter Wein gereift. Andreessen, bekannt für sein Talent, Technologietrends schon sehr früh zu erkennen, und für seine unerreichten Rekorde als erfolgreicher Entrepreneur und Venture Capitalist, hat auf einen entscheidenden Moment der Technologiegeschichte hingewiesen.
Er unterstrich, wie die Infrastruktur »erwachsen« geworden ist und eine Grundlage für die Metamorphose globaler Branchen gelegt hat. Der Aufstieg von Plattformen wie Amazon Web Services und das großräumige Wachstum von Breitbandinternet haben alles verändert. Klassische Hürden durch Serverkosten und Netzwerkwissen verschwanden. Dadurch konnten Disruptoren wie Uber, Netflix und ein Haufen von Social-Media-Plattformen die Bühne betreten, um die Regeln ihrer jeweiligen Branchen neu zu schreiben.
Schauen wir uns an, was seit Andreessens Artikel geschehen ist, sehen wir, dass der Innovationszug Fahrt aufgenommen hat. Die Bedrohung durch Disruptionen ist aber auch gewachsen, insbesondere für große Unternehmen. Viele dieser Giganten sind an Legacy-Systeme gebunden, die nicht nur teuer sind, sondern sich auch noch schlecht modernisieren lassen. Die hierarchische Umgebung kann bei Entscheidungen hinderlich sein, und die schiere Größe sorgt für zusätzliche Komplexität, wenn Änderungen anzugehen sind. Zudem mögen die Mitarbeitenden nicht immer von den neuesten technischen Innovationen begeistert sein.
IBM hat das Ganze trotzdem als Gelegenheit erkannt und seine umfassenden Ressourcen dazu genutzt, KI-gestützte Programmiertools für die Kundschaft zu bauen. Im Oktober 2023 wurde der watsonx Code Assistant for Z vorgestellt. Dieses System kann auf Mainframe-Systemen COBOL nach Java übersetzen, wobei der erzeugte Code eine elegante Objektorientiertheit besitzt.
Das Watsonx.ai-Modell von IBM versteht 115 Programmiersprachen, und es basiert auf 1,5 Billionen Tokens (https://oreil.ly/cfJMO). Es besitzt über 20 Parameter. Damit handelt es sich um eines der größten KI-Systeme für die Codeentwicklung.
Es gibt Hunderte von Milliarden Zeilen COBOL. Aber ein Wechsel von dieser zu einer modernen Sprache ist nicht einfach. Meist ist der Code Jahrzehnte alt, und es gibt nur wenig Dokumentation – wenn überhaupt. Wird die Migration nicht sorgfältig vorgenommen, können die Konsequenzen drastisch sein. Denken Sie daran, dass ein Großteil der weltweiten Kreditkartentransaktionen über Mainframes läuft. Das Gleiche gilt für die Verwaltung von Studienkrediten in den USA.
Leider gibt es viele Beispiele für fehlgeschlagene Migrationsprojekte. Denken Sie an das California Department of Motor Vehicles, das zwar 208 Millionen Dollar in solch ein Projekt gesteckt hat, aber trotzdem nach ein paar Jahren den Stecker ziehen musste (https://oreil.ly/_U1zG). Autsch.
Angesichts der Verantwortung verdienen Mainframe-Entwickler und -Entwicklerinnen im Allgemeinen ziemlich gut. Aber die Unternehmen haben trotzdem Probleme, neue Talente einzuwerben. Jüngere Entwickler sind im Umgang mit modernen Sprachen geübt und betrachten die Mainframe-Entwicklung als totes Gleis. Und in der Zwischenzeit gehen immer mehr erfahrene Mainframe-Entwickler in Rente.