Lohnt es sich, Programmiersprachen zu lernen, wenn wir KI haben und immer besser wird?

TimmyDuese

Ensign
Registriert
Apr. 2022
Beiträge
129
Ich stelle mir in letzter Zeit immer mehr die Frage. Ist es heute noch sinnvoll, eine Programmiersprache wie Swift oder Python zu lernen?

KI-Technologien wie ChatGPT sind immer leistungsfähiger geworden und können mittlerweile sogar Code generieren. Man könnte daher doch meinen, dass es effizienter wäre, die KI den Code programmieren zu lassen, anstatt Zeit und Mühe in das Erlernen einer Programmiersprache zu investieren.

Allerdings spreche dagegen:

Der Code, den KI schreibt, ist oft nicht perfekt. Es muss immer noch ein Mensch da sein, um ihn zu überprüfen und zu verbessern.

Ich würde gerne eure Meinungen zu diesem Thema hören. Glaubt ihr, es ist noch wichtig, Programmiersprachen zu lernen? Oder denkt ihr, dass KI uns bald das Programmieren abnehmen wird?
Wie machen das die "Profis" unter euch?
 
Man lernt nicht die Programmiersprache sondern deren Konzepte dahinter. Wenn du die verinnerlicht hast dann ists mehr oder minder egal ob du nun C# oder Java vor dir hast.
Der Rest ist nur Syntax.
 
  • Gefällt mir
Reaktionen: Kalsarikännit, Raijin, Trent und eine weitere Person
@zeaK
Das war doch gar nicht das Thema.
Oder hast Du die Antwort von Chat-GPT verfassen lassen?
 
  • Gefällt mir
Reaktionen: Micke
Sehen wir es mal realistisch:

Damit eine KI ein Programm so schreibt, wie man es möchte, muss man der KI präzise Anweisungen geben.
Der Kunde konnte, kann und wird es auch in Zukunft nicht können, denn dann würde er verstehen, wie so ein Programm funktioniert und wäre nahezu selbst ein Programmierer.

Ich bin kein Programmierer, aber ich habe mir selbst die Grundlagen für eine Datenanalyse mit Python inkl. Pandas, Matplotlib und ein bisschen statsmodels, sqlalchemy, requests, etc. beigebracht.

Nur wenn ich mit entsprechendem Hintergrundwissen auch die korrekten Begriffe verwende, kann mir ChatGPT oder Bing einen funktionierenden Code nach meiner Vorstellung bereitstellen. Ansonsten kommt nur Quatsch heraus, welchen ich selbst anpassen muss.
Dennoch hilft mit Bing / ChatGPT sehr, meinen schlechten Code zu verbessern. Ich lerne teilweise viel schneller und besser, als mich durch Dokumentationen zu quälen, welche ich nur zur Hälfte oder gar nicht verstehe. Und sobald ich einen funktionierenden Code bereitgestellt bekomme und diesen analysiere, verstehe ich allmählich, was die Dokumentationen bedeuten.

Ich denke:
Es ist sehr einfach, eine Programmiersprache zu lernen.
Der "schwierige Teil" ist, die Logik dahinter zu verstehen.
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: DefconDev
Natürlich könnte man KI trainieren, immer komplexere Programme zu schreiben. Aber damit die KI dann das komplexe Programm ausspuckt, das man haben möchte, muss man aber dann penibel genau spezifizieren, was man möchte. Vielleicht sind Software-Entwickler irgendwann "nur" noch die Leute, die diese Spezifikationen machen, dass am Ende genau das rauskommt, was rauskommen soll.

Hört sich fast wie eine extreme Form von Modellgetriebener Softwareentwicklung an.

Aber zu denken, ChatGPT spuckt mir Quellcode aus, den ich einfach ohne Aufwand in eine bestehende Anwendung integrieren kann, ist naiv.
 
  • Gefällt mir
Reaktionen: DefconDev, mental.dIseASe, Raijin und eine weitere Person
Das Programmieren lernen ist doch quasi das gleiche wie Sprechen lernen.

Die Schwierigkeit liegt ja unter anderem in der Umsetzung der Konzepte bzw diese überhaupt zu erstellen. Das nimmt dir ChatGPT nicht ab.
Und einer KI alles haarklein zu erklären und dann zu hoffen, dass das alles passt? Na, ich weiß ja nicht :D Du solltest schon zwingend verstehen was die da ausspuckt, um überhaupt zu sehen, ob das passt.
 
Du hast eine sehr naive Schulsicht auf Programmierung :)

Ein winziger Teil der Softwareentwicklung ist das Schreiben von Code. Wesentlich größerer Aufwand ist die Konzeptionierung und die anschließende Produktpflege. Eine KI schreibt Code nur so gut, wie die Anfragen sind, die gestellt wurden. Und Produktpflege sowie Bugfixing sind (momentan?) noch nichts, was KIs vernünftig bewerkstelligen können.

Frag doch deine Wunsch-KI mal, ob sie dir die vollen 100.000 Zeilen Code für ein Projekt deiner Wahl produziert. KIs können dir sehr gut Codeschnipsel produzieren, aber bei größeren Zusammenhängen fehlt dann das Verständnis.

Auf absehbare Zeit sind KIs nur in der Lage Programmierer zu unterstützen, nicht zu ersetzen. Dasselbe gilt für Programmierkenntnisse: KIs können Codeschipsel wunderbar und fehlerfrei produzieren. Doch die Zusammensetzung der Codeschnipsel erfordert jemanden, der nicht nur das Konzept des großen Codes kennt, sondern der auch die Programmiersprache beherrscht.

Oder zusammengefasst: Für Programmierer bleibt es auf absehbare Zeit notwendig, Programmiersprachen zu lernen.
 
  • Gefällt mir
Reaktionen: Trent, Grede und Cardhu
TimmyDuese schrieb:
Ich würde gerne eure Meinungen zu diesem Thema hören. Glaubt ihr, es ist noch wichtig, Programmiersprachen zu lernen? Oder denkt ihr, dass KI uns bald das Programmieren abnehmen wird?
Wie machen das die "Profis" unter euch?

KI wird die Implementierung von Software in jedem Fall verändern - wir massiv kann man schwer abschätzen. Mit dem heutigen Stand kann einem KI schon sehr gut beim Schreiben des Codes helfen, aber nicht bei Design Entscheidungen.

Man muss heutige KI eher wie einen weiteren Abstraktionslevel betrachten: Anstatt Code in der Syntax der Programmiersprache zu verfassen, kann man den Code in natürlicher Sprache beschreiben. Dabei hängt es aber auch davon ab, dass man sich für die KI klar verständlich ausdrückt.

Beispiel:
Ich implementiere zur Zeit eine Lösung zum Management unsere Azure Kosten. Dabei ist eine Teilaufgabe Azure Kostendaten, die in einem Storage Account liegen, in eine Azure SQL Datenbank zu importieren. Die Implementierung aus Teil aus Microsoft T-SQL Prozeduren und Powershell Scripten zur Steuerung derselben.

Ich bin weder in Powershell noch in T-SQL sehr bewandert, und ich habe gezielt ChatGPT eingesetzt, um Coding zu schreiben. Mit meinen 30 Jahren Programmiererfahrung würde ich das natürlich auch ohne hinkriegen. Aber mit der KI geht es einfach schneller.

Ein Auszug aus meinem Frage Antwort Spiel:
"can you write a pattern for string that look like 20230401-20230430"
Antwort:
Code:
$pattern = "^\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])-\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$"

Das ist jetzt ein sehr simples Beispiel. Aber ich schreibe relativ selten Regular Expressions, also muss ich mir meist irgendwo eine Cheat-Sheet suchen, und dann den Expression zusammenpuzzeln. Dauert dann vielleicht 5-15 Minuten. So dauert es 20 Sekunden...

Ich kann hier bei Interesse gerne anspruchsvollere Interkationen posten.

Gelegentlich hat ChatGPT auch völlig daneben gelegen, z.B. bei der Verwendung von Invoke-SQLCmd, und manchmal wurde meine Frage von der KI anders verstanden als ich sie gemeint habe.

Ich denke es wird in Zukunft einen geringeren Wert haben, tiefe Expertise in irgendeiner Programmiersprache zu erlangen, als in der Vergangenheit. Das hat auch damit zu tun, das eben Softwaresysteme heute mehr aus vorgefertigten "Bauteilen" zusammengesetzt werden und nicht von Grund auf neu entwickelt werden. Die C++ Windows Anwendungen, die ich vor 20 Jahren geschrieben habe, bestanden noch zu 90% aus eigenem Code (wenn man die Standard Runtime-Lib mal ignoriert).

Und auch der eigene Code hat eine hohen Boilerplate Anteil.

Und während ich vor 20 Jahren ein ganzes Jahr praktisch nur C++ programmiert habe, nutzte ich heute C, Python, Powershell, Javascript, Lua kreuz und quer. Dazu jede Menge Frameworks und Liberaries, plus alle möglichen Tools mit diversen Konfiguration Files (z.B. Azure ARM Templates)

Die Zeit und Muße sich intensiv in einer Programmiersprache einzuarbeiten habe ich gar nicht mehr.
Ich behaupte jetzt auch nicht, dass das nur gut ist, Halbwissen birgt auch Risiken. Aber auch da ist ein zukünftig gefragte Fähigkeit, diese Risiken richtig einzuschätzen.
 
  • Gefällt mir
Reaktionen: DefconDev
TimmyDuese schrieb:
Der Code, den KI schreibt, ist oft nicht perfekt.
Das ist eine schöne Fantasie, das nur als "nicht perfekt" zu beschreiben. Aktuell können die in erster Linie das programmieren, was man als Code-Snippet auch im Internet findet. Das wiederum ist in erster Linie das, was auch jemand zusammen kopieren kann, der nicht programmieren kann.

TimmyDuese schrieb:
Ich würde gerne eure Meinungen zu diesem Thema hören.
Was willst du denn alternativ machen bzw. lernen? Die meisten Dinge, die Menschen so tagtäglich machen sind deutlich einfacher als Programmieren.

TimmyDuese schrieb:
Zeit und Mühe in das Erlernen einer Programmiersprache zu investieren.
Es gibt auch ein prinzipielles Problem, nämlich den Grund, wieso es Mühe und Zeit kostet, eine Programmiersprache zu lernen. Programmiersprachen sind nämlich erstaunlicherweise nicht einfacher geworden in den letzten 25 Jahren. Neue Programmiersprachen sind nicht simpler als die alten. Der Grund ist recht einfach: Man muss dem Computer ganz genau sagen, was er machen soll und das geht nur mit Programmiersprachen. Wenn du nun einer KI auf Deutsch oder Englisch sagst, was sie programmieren soll, dann muss die KI in allen nichttrivialen Fällen raten, was du meinst, weil eben nur syntaktisch korrekter Code frei von Mehrdeutigkeiten ist. Ob die KI aber nun richtig geraten hat kannst du nur beurteilen, wenn du programmieren kannst.
Ich sehe es noch nicht kommen, dass eine KI auch noch Code selber ausführt. Das ist viel zu ineffizient und eben trotzdem prinzipbedingt fehleranfällig, d.h. löst das zugrunde liegende Problem auch gar nicht.

TomH22 schrieb:
KI wird die Implementierung von Software in jedem Fall verändern - wir massiv kann man schwer abschätzen.
Das selbe, was die letzten Jahrzehnte immer passiert ist: Man wird noch komplexerer Softwareschreiben und noch mehr Programmierer benötigen.

TomH22 schrieb:
Ein Auszug aus meinem Frage Antwort Spiel:
"can you write a pattern for string that look like 20230401-20230430"
Ein schönes Beispiel, denn die Anfrage enthält locker ein Dutzend Mehrdeutigkeiten bei denen die KI raten muss, was womöglich gemeint ist.
 
  • Gefällt mir
Reaktionen: tollertyp und andy_m4
https://twitter.com/ID_AA_Carmack/status/1637087219591659520
Zu deutsch: nicht auf die Details versteifen.

Programmieren vor 50 Jahren sah auch anders aus als das von vor nem Jahr.
Die wenigsten Programmierer kümmern sich heutzutage noch um das ganze Low-Level Zeug oder schreiben alles von Scratch.
Bedeutet nicht das Programmierer dadurch arbeitslos geworden sind, eher hat sich die Produktivität verbessert.
In ein paar Jahren nutzen Programmierer dann routinemäßig KI wie ein "npm install super-spezifische-funktion-die-ich-brauche" um einzelne Blöcke zu generieren.

Am Ende braucht auch die beste KI ein abgestecktes Ziel. Es wird immer noch Leute geben die Kunden die Antworten aus dem Mund ziehen müssen, und selbst dann wird es noch undefinierte Logiken in riesigen Repos geben die mal Bugs auslösen.
Die aktuellen Modelle (die nunmal nicht denken) stoßen da schon an ihre Grenzen, bis wir AGI haben wird es noch genug Programmierer geben.
 
  • Gefällt mir
Reaktionen: tollertyp
andy_m4 schrieb:
@zeaK
Das war doch gar nicht das Thema.
Doch, das ist das Thema. Es geht darum, dass dir ChatGPT zwar das Programmieren, also das schreiben der Syntax abnimmt, nicht aber das Nutzen der grossen Kozepte eine Ebene hoeher. Das ist das wichtige, was man lernen muss.

Und genau darum geht es hier. Wenn man nicht programmieren kann und dann anfaengt Python zu lernen, dann lernt man nicht nur Python, sondern auch grundlegende Programmierkonzepte, die einem Sprachenuebergreifend helfen.

Da es aber fuer die meisten leute einfacher ist, diese Konzepte anhand konkreter Beispiele zu lernen, wird es auch weiterhin sinnvoll sein, Programmiersprachen zu lernen, wenn man in die Softwareentwicklung will.
 
  • Gefällt mir
Reaktionen: zeaK
Mir ist bewusst, dass die KI nicht gleich alles perfekt ausspuckt.

Es ist schon eine Herausforderung, Code so zu strukturieren, dass man nicht ständig alles neu schreiben und an vielen Stellen Änderungen vornehmen muss, sobald sich woanders wieder etwas geändert hat.

Ich habe das jetzt schon mehrfach so gemacht mit SwiftUI. Ich habe mir das UI schreiben lassen und so lange spezifiziert, bis es gepasst hat. Allerdings bin ich mir am Ende nicht ganz sicher, ob das so richtig ist oder ob ein Mensch das vielleicht anders, besser gemacht hätte.

Zurzeit verstehe ich es so, dass ich eine Funktion brauche und der KI sage: Schreib mir das, es soll folgendes machen. Wenn es funktioniert, nutze ich es. Wie verhält es sich in diesem Sinne mit Urheberrechten und Ähnlichem?
 
TimmyDuese schrieb:
Wie verhält es sich in diesem Sinne mit Urheberrechten und Ähnlichem?
Bis die Gerichte dazu geurteilt haben wird es noch eine Weile dauern.
Die einen sind der Meinung dass das rezitieren von ganzen Passagen problematisch ist.
Und die andere Seite sagt dass das "transformativ" genug ist um als neues Werk zu gelten.
 
TomH22 schrieb:
Ein Auszug aus meinem Frage Antwort Spiel:
"can you write a pattern for string that look like 20230401-20230430"
Antwort:
Code:
$pattern = "^\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])-\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$"
Das ist jetzt ein sehr simples Beispiel.
schönes beispiel, ein \d{8}-\d{8} hätte es bei dieser frage nämlich auch getan. die gelieferte antwort ist überspezifisch und unnötig komplex (zum verstehen als auch performancetechnisch). und chatgpt hat bestimmt nicht erkannt, dass du hier wohl eigentlich zwei datumsangaben hast.

ohne hintergrundwissen bleibt einem nichts anderes übrig, als dem gegenüber zu vertrauen. das ist nicht nur beim programmieren und ki so, sondern trifft auf alle bereiche zu.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: mental.dIseASe, tollertyp und KitKat::new()
0x8100 schrieb:
schönes beispiel, ein \d{8}-\d{8} hätte es bei dieser frage nämlich auch getan. die gelieferte antwort ist überspezifisch und unnötig komplex (zum verstehen als auch performancetechnisch). und chatgpt hat bestimmt nicht erkannt, dass du hier wohl eigentlich zwei datumsangaben hast.
Es sieht so aus als hätte chatGPT genau erkannt, dass es sich hier um Datumsangaben handelt und hat deswegen das Pattern auf gültige Werte eingeschränkt.
 
  • Gefällt mir
Reaktionen: TomH22
Legalev schrieb:
Hat die KI ausgespuckt^^

Ja, es lohnt sich auf jeden Fall, Programmiersprachen zu lernen, auch wenn wir KI haben. Programmiersprachen sind die Grundlage für die Entwicklung von KI-Systemen. Python ist zweifellos die Programmiersprache der Wahl, wenn es um KI-Forschung geht: Sie bietet die größte Auswahl an Machine und Deep Learning Frameworks und ist die Coding-Sprache, die innerhalb der KI-Welt tonangebend ist
Das ist so typisches ChatGPT "Geblubber"- das könnte auch von einer Marketingabteilung stammen.

TimmyDuese schrieb:
Allerdings bin ich mir am Ende nicht ganz sicher, ob das so richtig ist oder ob ein Mensch das vielleicht anders, besser gemacht hätte.
Das bist Du bei "selber" geschrieben Code auch nicht unbedingt. Wenn man in einer bestimmten Umgebung anfängt zu programmieren, wird man auch merken, das man nach einiger Zeit besser wird, und sehen, das der Code den man ganz am Anfang geschrieben hat, auch nicht optimal ist.

BeBur schrieb:
Ein schönes Beispiel, denn die Anfrage enthält locker ein Dutzend Mehrdeutigkeiten bei denen die KI raten muss, was womöglich gemeint ist.
Genau. In dem Fall hat sich mich richtig verstanden. Deswegen muss man programmieren können und den Output der KI verstehen, um das zu beurteilen. Man muss aber eben nicht mehr um syntaktische Details kümmern. Oft geben aber auch die falschen Antworten einem schon einen Tipp in die richtige Richtung.

Die nächste Frage die ich der KI stellte war übrigens:
"Suppose I have a list with a field "name" which contains the pattern above. I like to get a list of all different values matching the pattern"

Auch hier habe ich das gewünschte Ergebnis bekommen. Allerdings hat ChatGPT dann lustigerweise
Code:
$pattern = "\d{8}-\d{8}"
für den RegEx genommen. Ist natürlich nicht das gleiche, wie der erste RegEx, da die Validierung auf gültige Zahlenbereiche fehlt. Im vorliegenden Fall allerdings sogar ausreichend, denn es ging um eine Liste von Storage Blobs, die vom Azure Cost Export Tool erzeugt wird, und das erzeugt nur gültige Datumswerte (immer den ersten und letzten Tag des Abrechnungsmonats)
Das sind aber genau die Dinge, die man als KI-nutzender Programmierer erkennen muss.

BeBur schrieb:
Programmiersprachen sind nämlich erstaunlicherweise nicht einfacher geworden in den letzten 25 Jahren. Neue Programmiersprachen sind nicht simpler als die alten.
Es gibt halt viel mehr Konzepte als man früher hatte. Subjektiv habe ich nicht das Gefühl heute "schneller" programmieren zu können als mit Turbo Pascal und CP/M 1985 (Turbo Pascal war mein erste Kontakt mit einer höheren Programmiersprache, abseits von BASIC - und das Abstraktionsniveau was man damit hatte, z.B. Records zu definieren, hat mich, von Z80 Assembler kommend, damals echt umgehauen...).

Das ist natürlich eine Fehlwarnehmung, denn die Software die man heute baut, ist auch auf einem ganz anderen Niveau.
Ergänzung ()

Joshinator schrieb:
Bis die Gerichte dazu geurteilt haben wird es noch eine Weile dauern.
Die einen sind der Meinung dass das rezitieren von ganzen Passagen problematisch ist.
Und die andere Seite sagt dass das "transformativ" genug ist um als neues Werk zu gelten.
Die Frage stellt sich bei Code von Stackoverflow, etc. aber auch.
 
floq0r schrieb:
Es sieht so aus als hätte chatGPT genau erkannt, dass es sich hier um Datumsangaben handelt und hat deswegen das Pattern auf gültige Werte eingeschränkt.
verdammt, du hast recht :)
 

Anhänge

  • 1684584597305.png
    1684584597305.png
    168,8 KB · Aufrufe: 154
  • Gefällt mir
Reaktionen: mental.dIseASe, ghecko und floq0r
Zurück
Oben