====== 03. Code & Entwicklung ====== ==== Überblick ==== KI-Systeme wie [[glossar:chatgpt|ChatGPT]], GitHub Copilot, Amazon CodeWhisperer oder Cursor können Entwickler:innen bei zahlreichen Aufgaben unterstützen – von der Codeerstellung über das Debugging bis zur Dokumentation. Richtig eingesetztes Prompting spart Zeit, hilft beim Lernen neuer Technologien und beschleunigt Entwicklungsprozesse. Typische Einsatzbereiche: * Code generieren (Funktionen, Klassen, Module) * Fehleranalyse und -behebung * Refactoring und Performance-Tuning * Dokumentation erzeugen * Tests erstellen * Konzepte erklären lassen * Code zwischen Sprachen „übersetzen“ ==== Aufbau eines effektiven Entwickler-Prompts ==== Ein guter Entwickler-Prompt sollte enthalten: * **Sprache / Technologie:** z. B. Python, JavaScript, SQL, HTML, Docker etc. * **Ziel:** Was soll der Code tun? * **Kontext:** Gibt es Eingabedaten, Einschränkungen, bestehende Strukturen? * **Format:** Kommentar, vollständiger Codeblock, Teilfunktion, Test etc. * **Nutzungszweck:** Lernen, Prototyp, Produktivcode, Review etc. * **Stil-Vorgaben (optional):** funktional, OOP, dokumentiert, minimalistisch → Je genauer du das Ziel und den Kontext beschreibst, desto zuverlässiger die Antwort. ==== 🔧 Beispiele für Code-Prompts ==== === 🛠️ Code erstellen === **Prompt 1 – Python-Funktion schreiben** > Schreibe eine Python-Funktion, die eine Liste von Zahlen entgegennimmt und die durchschnittliche Abweichung vom Mittelwert zurückgibt. Achte auf gute Lesbarkeit und füge einen Beispielaufruf hinzu. def durchschnittliche_abweichung(zahlen): if not zahlen: return 0 mittelwert = sum(zahlen) / len(zahlen) abweichungen = [abs(x - mittelwert) for x in zahlen] return sum(abweichungen) / len(zahlen) # Beispielaufruf werte = [10, 15, 20, 25] print(durchschnittliche_abweichung(werte)) # Ausgabe: 5.0 --- **Prompt 2 – SQL-Query generieren** > Du hast eine Datenbank mit einer Tabelle „users“ (Felder: id, name, email, created_at). Schreibe eine SQL-Abfrage, die alle Nutzer:innen zeigt, die sich im letzten Monat registriert haben. SELECT id, name, email, created_at FROM users WHERE created_at >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH); --- **Prompt 3 – HTML-Formular** > Erstelle ein HTML-Formular zur Anmeldung für einen Newsletter. Es soll Felder für E-Mail, Vorname, Datenschutz-Häkchen und einen „Anmelden“-Button enthalten.








--- === 🐛 Fehleranalyse & Debugging === **Prompt 1 – Python-Fehler erklären** > `TypeError: unsupported operand type(s) for +: 'int' and 'str'` # Fehlerhafter Code liste = [1, 2, '3'] summe = sum(liste) # Fehler! # Erklärung: # sum() versucht, '3' (ein String) mit den Zahlen zu addieren. # Lösung: Stelle sicher, dass alle Elemente numerisch sind. # Korrigiert: liste = [1, 2, int('3')] summe = sum(liste) # Ergebnis: 6 --- **Prompt 2 – Code-Review anfordern** *(nur als Platzhalter: hier kann realer User-Code eingefügt werden)* // Verbesserungsvorschlag: function sumArray(arr) { if (!Array.isArray(arr)) return 0; return arr.reduce((acc, val) => acc + val, 0); } --- === 🔄 Refactoring & Optimierung === **Prompt 1 – Lesbarkeit verbessern** Vorher: def a(x): for i in x: if i>5:print(i) Nachher (refactored): def print_greater_than_five(numbers): for number in numbers: if number > 5: print(number) --- **Prompt 2 – List Comprehension** Vorher: squares = [] for i in range(10): squares.append(i * i) Nachher: squares = [i * i for i in range(10)] --- === 📋 Dokumentation erzeugen === **Prompt 1 – Python-Docstring generieren** def berechne_steuer(netto, steuersatz): """ Berechnet die Steuer und den Bruttobetrag auf Basis des Nettobetrags. Args: netto (float): Der Nettobetrag. steuersatz (float): Der Steuersatz in Prozent (z. B. 19 für 19%). Returns: tuple: Enthält den Steuerbetrag und den Bruttobetrag. """ steuer = netto * (steuersatz / 100) brutto = netto + steuer return steuer, brutto --- === ✅ Tests erzeugen === **Prompt 1 – Unit-Test** import unittest from mymodule import calculate_discount class TestDiscount(unittest.TestCase): def test_normal_case(self): self.assertEqual(calculate_discount(100, 20), 80) def test_zero_percent(self): self.assertEqual(calculate_discount(100, 0), 100) def test_full_discount(self): self.assertEqual(calculate_discount(100, 100), 0) if __name__ == '__main__': unittest.main() --- === 📘 Lernen & Erklären === **Prompt 2 – Vergleich „map“ vs. „forEach“ in JavaScript** // map: Gibt ein neues Array zurück const zahlen = [1, 2, 3]; const verdoppelt = zahlen.map(n => n * 2); // [2, 4, 6] // forEach: Führt nur eine Aktion aus zahlen.forEach(n => console.log(n * 2)); // Ausgabe: 2, 4, 6 ---- ==== Tool-Hinweise: Code- und Entwickler-KI ==== KI-Tools im Bereich Softwareentwicklung helfen beim Schreiben, Erklären, Optimieren und Testen von Code. Einige sind als Editor-Plugins verfügbar, andere arbeiten webbasiert oder als API-Dienst. === 🧰 Übersicht nützlicher Entwicklungs-KI-Tools === * **GitHub Copilot (OpenAI + GitHub)** - KI-Code-Vervollständigung in Echtzeit - Unterstützt viele Sprachen (Python, JavaScript, Go etc.) - Integriert in VS Code, JetBrains, Neovim - Gut für Boilerplate, Tests, kleine Snippets * **Cursor** - Spezialisierter KI-Code-Editor mit eingebautem Chat - Kontextuelles Prompting direkt im Codebereich - Ideal für komplexe Refactorings, Erklärungen und Paarprogrammierung - Unterstützt GPT-4, Claude & Co. * **Amazon CodeWhisperer** - Besonders für Cloud-/AWS-Projekte geeignet - Integration in Visual Studio Code und JetBrains - Guter Support für Python, Java, JavaScript * **[[glossar:chatgpt|ChatGPT]] (mit Code Interpreter / Advanced Data Analysis)** - Flexibel für Erklärungen, Debugging, Tests - Kann komplette Funktionen schreiben, umstrukturieren und erklären - Auch für Datenbearbeitung, Regex, API-Beispiele * **Tabnine** - Autovervollständigung via KI, trainiert auf Open Source - Lokal einsetzbar, mehr Datenschutz - Schneller als viele Cloud-Tools, aber weniger „intelligent“ als GPT-basiert * **Replit Ghostwriter** - Integriert in Replit IDE (online) - Besonders für schnelle Prototypen und kleine Projekte - Unterstützt Pair Programming mit KI-Coach * **Codeium** - Kostenlose Alternative zu Copilot - Gute Unterstützung für viele Sprachen - Starke Integration in VS Code und JetBrains - Datenschutzfreundlicher Ansatz * **Kite (eingestellt, aber historisch relevant)** - Früher Vorreiter im Bereich Code-KI - Hinweis: 2022 eingestellt === 📎 Hinweis === Viele Tools setzen auf GPT-Modelle im Hintergrund. Wer maximale Kontrolle und Datenschutz benötigt, sollte auf **lokale Modelle** (z. B. Tabnine, Codeium mit Offline-Modus) oder gut konfigurierbare APIs achten.