10 Antworten
Programmierarbeit komplett zu automatisieren, wird sicher niemals möglich sein.
Möglich ist nur, sie ständig effektiver zu gestalten (so dass ständig weniger Sourcecode notwendig sein wird, ein und denselben Zweck zu erreichen).
Jein. Sicher ist es möglich vordefinierten Code zu generieren, vordefinierte Patterns zu generieren, Syntaxregeln einzuhalten usw. Das größte Problem ist aber immer das Problem zu verstehen, was i.d.R. der Kunde nicht einmal ordentlich definieren kann.
Davon ab hast du auch mal Bugs, Bedienerfehler usw. und da am Telefon am anderen Ende jemanden, der das Problem noch weniger versteht. Ggf. ist es nur eine Fehlkonfiguration. Alles läuft bestens aber er erwartet ein anderes verhalten aber sein Kollege hat gestern irgendwo was umgestellt, damit das anders funktioniert als vorher. So Sachen kann eine KI den Kollegen am Telefon kaum aus der Nase ziehen.
Er muss ihm sagen was technisch möglich ist und was nicht, wo Vor- und Nachteile liegen. Was eine bestimmte Entscheidung jetzt und für naheliegende künftige Szenarien bedeutet.
Der Entwickler erzeugt nicht nur Code, im Zweifel ist er eben auch Übersetzter zwischen Kunden und Code. Er muss den Kunden die richtigen Fragen stellen und die Details klären.
Sprich irgendwer müsste dein System mit brauchbaren Input füttern, damit eine gewisse Art Output rauskommt. Das ist am Ende einfach eine höhere Abstraktionsschicht, wie wir sie immer wieder oben drauf bauen.
Maschinencode war umständlich, ergo haben wir Assembler. Assembler war umständlich ergo hatten wir erste Hochsprachen. Speicherverwaltung war umständlich, ergo haben wir heute meist eine Garbage Collection. Viele Teilaufgaben waren umständlich, ergo haben wir heute viele Bibliotheken und Frameworks. Viel Boilercode ist umständlich, ergo wird heute viel von der IDE selbst generiert.
So wird das auch weiter laufen. Sachen wie GitHub Co-Pilot zeigen wohin es geht aber nein, den "Programmierer" ersetzen wird so schnell nicht passieren. Seine Arbeit wird sich aber weiterhin wandeln.
Ob das nun ein Softwareentwickler ist, der Programmiersprache X verwendet oder ein "zertifizierter Businesslogikerklärer" ist, der in einen Beamtendeutsch einen Sprachassistenten füttern, worauf eine KI ein Programm ausspuckt sei mal dahingestellt.
Dieser" Businesslogikerklärer" ist dann aber auch nix anderes als ein Programmierer. Nur dass wir auf den Code nochmal eine Abstraktionsschicht oben drauf haben.
Es gibt zumindest einige Bereiche, in denen das gemacht wird, beispielsweise Generatoren für Parser und Lexer. Aber eine vollständige Automatisierung wird wohl auf absehbare Zeit nicht klappen.
Kurze Antwort, wenn Du nur die stumpfe Tatsache, Code zu schreiben, meinst: Ja.
Kurze Antwort, wenn Du tatsächliches eigenständiges Programmieren einer Anwendung meinst: Nein.
Lange Antwort: Jein.
Z.B. ein Compiler "schreibt" eine Ziel-Sprache und optimiert dabei auch, braucht dafür aber etwas, das er kompilieren kann - also eine andere Sprache.
WYSIWYG-Editoren oder grafische Sprachen (bzw. das Tool dahinter) "schreiben" Code anhand dem, was der Nutzer zusammen zieht und einstellt.
Es gibt Code-Generatoren (z.B. für C#), die anhand diverser Einstellungen noch vor dem Compiler Code "schreiben".
DBMS-Tools "schreiben" den SQL-Code anhand der Einstellungen vom Nutzer, um ihn auf der Datenbank auszuführen.
Es gibt den GitHub-Copilot, aber der braucht zig Repositories von GitHub und "kopiert" eigentlich nur Teile von bereits geschriebenen Code von anderen Programmieren/Entwicklern.
Etc...
Das alles ist "quasi" Programmieren nach einem Skript - und wer programmiert das Skript? Es gibt immer Vorgaben, die nach klar definierbaren Regeln und Anweisungen in die Ziel-Sprache umgesetzt werden können.
"Richtiges" Programmieren, also die sehr kreative Arbeit ohne klar definierbare Regeln und Anweisungen, das gibt es heute noch nicht und wird es auch eine sehr lange Zeit noch nicht geben. Der Knackpunkt sind die Fähigkeiten, kreative Lösungen zu finden und Erfahrungen einfließen zu lassen. Das, was viele heute "KI" nennen, hat genau nichts mit "Intelligenz" zu tun und diese "KIs" sind weder kreativ, noch können sie Erfahrungen geeignet auswerten und einfließen lassen.
Ist es doch imbeträchtlichen Masse schon. Betrachte einen modernen Compiler, in welchem Umfang der dazu beträgt, Quellcode vollständig automatisch in ausführbare CPU Instruktionen zu übersetzen. Oder Makefiles, Projectfiles, mit deren Hilfe auch komplexe Programme mittels Ausführung einfachster Operationen erstellt werden können. Linken von Object code mit Bibliotheken - dynamisches Laden und Einbinden von Bibliotheken. JIT Kompilation - überall hat Automatisierung bereits in gehörigem Umfang Einzug gehalten.