top of page
Suche
AutorenbildCode Pirate

ChatGPT & Co.: Lohnt es sich noch, Programmieren zu lernen?

Aktualisiert: 9. Aug. 2023



Hausaufgaben machen, Studienarbeiten schreiben, programmieren oder Blogartikel schreiben – all diese Aufgaben kann ChatGPT erledigen. Daher stellen sich viele Menschen die Frage, ob es sich überhaupt noch lohnt, sich hierbei selbst einzuarbeiten.


Im Bereich der Programmierer und Softwareentwickler ist dieses Thema besonders kontrovers. Im Moment handelt es sich bei diesen Tätigkeiten um einen Beruf mit einer riesigen Nachfrage und mit gutem Gehalt. Viele junge Menschen fragen sich aufgrund der enormen Fortschritte im Bereich der künstlichen Intelligenz jedoch, ob das auch weiterhin so sein wird. Dieser Artikel stellt vor, was ChatGPT in diesem Bereich im Moment leisten kann, ob das ausreicht, um menschliche Programmierer zu ersetzen und wie die weitere Entwicklung in diesem Bereich aussehen könnte. Dabei gehen wir der Frage nach, ob es sich trotz ChatGPT noch lohnt, Programmieren zu lernen.


Ein kleiner Test: Wie gut programmiert ChatGPT?


Als Erstes ist es sinnvoll, einmal zu überprüfen, was ChatGPT überhaupt kann. Dazu fordern wir das System einmal auf, ein kurzes Programm zu schreiben:


Schreibe mir ein Programm in Python, das den Anwender nach einer Zahl fragt und dann deren doppelten Wert ausgibt!”


Als Ergebnis gibt es diesen Code zurück:



zahl = input("Bitte geben Sie eine Zahl ein: ")
zahl = float(zahl)
doppelte_zahl = 2 * zahl
print("Das Doppelte Ihrer Zahl ist: ", doppelte_zahl)


Dieses Programm kannst du ja selbst einmal ausprobieren: Du wirst sehen, dass es problemlos funktioniert. Den ersten Test hat ChatGPT also problemlos bestanden.


Zusätzlich erhältst du eine kleine Erklärung, was das Programm macht und welche Befehle es dafür verwendet.


Die nächste Aufgabe ist dann schon etwas schwieriger:


“Erstelle ein Python-Programm. Dieses soll eine Liste enthalten, die die Schüler einer Klasse enthält. Der Anwender soll Schüler hinzufügen und die Liste ausgeben können. Zu jedem Schüler soll der Vorname, der Nachname und die Durchschnittsnote angegeben werden.”


Das Ergebnis sieht dabei so aus:




schueler = []

while True:
    auswahl = input("Was möchten Sie tun? (1) Schüler hinzufügen (2) Liste ausgeben (3) Programm beenden: ")

    if auswahl == "1":
        vorname = input("Vorname des Schülers: ")
        nachname = input("Nachname des Schülers: ")
        note = float(input("Durchschnittsnote des Schülers: "))
        schueler.append({"Vorname": vorname, "Nachname": nachname, "Note": note})
        print("Schüler hinzugefügt!")

    elif auswahl == "2":
        print("Liste der Schüler:")
        for s in schueler:
            print(s["Vorname"], s["Nachname"], "-", s["Note"])

    elif auswahl == "3":
        print("Programm beendet.")
        break

    else:
        print("Ungültige Eingabe. Bitte wählen Sie eine gültige Option.")
        


Wenn du das Programm ausprobierst, siehst du, dass es ebenfalls problemlos funktioniert und alle Aufgaben erfüllt.


Dennoch sind wir mit dem Ergebnis nicht ganz zufrieden. Python ist eine objektorientierte Programmiersprache. Bei dieser Aufgabenstellung bietet es sich an, ein objektorientiertes Programm zu erstellen. Diesen Einwand bringen wir nun ebenfalls vor:


“Geht das auch objektorientiert?”


Die Antwort sieht dann so aus:



class Schueler:
    def __init__(self, vorname, nachname, note):
        self.vorname = vorname
        self.nachname = nachname
        self.note = note

    def __str__(self):
        return f"{self.vorname} {self.nachname} - {self.note:.2f}"


class Klassenliste:
    def __init__(self):
        self.schueler = []

    def schueler_hinzufuegen(self):
        vorname = input("Vorname des Schülers: ")
        nachname = input("Nachname des Schülers: ")
        note = float(input("Durchschnittsnote des Schülers: "))
        schueler = Schueler(vorname, nachname, note)
        self.schueler.append(schueler)
        print("Schüler hinzugefügt!")

    def liste_ausgeben(self):
        print("Liste der Schüler:")
        for schueler in self.schueler:
            print(schueler)

k = Klassenliste()

while True:
    auswahl = input("Was möchten Sie tun? (1) Schüler hinzufügen (2) Liste ausgeben (3) Programm beenden: ")

    if auswahl == "1":
        k.schueler_hinzufuegen()

    elif auswahl == "2":
        k.liste_ausgeben()

    elif auswahl == "3":
        print("Programm beendet.")
        break

    else:
        print("Ungültige Eingabe. Bitte wählen Sie eine gültige Option.")


Zwar war hierfür eine kleine Nachfrage notwendig, doch haben wir das gewünschte Ergebnis schnell und einfach erzielt.


Nun wollen wir noch ein weiteres Detail ausprobieren: Die Programmgestaltung über grafische Benutzeroberflächen. Dazu geben wir folgende Anweisung an ChatGTP:


“Kannst du dafür auch ein GUI-Programm mit Tkinter erstellen?”


Dabei erzeugt die KI das folgende Programm:



import tkinter as tk

class Schueler:
    def __init__(self, vorname, nachname, note):
        self.vorname = vorname
        self.nachname = nachname
        self.note = note

class KlassenlisteGUI:
    def __init__(self, root):
        self.root = root
        self.schueler = []
        self.schueler_listbox = tk.Listbox(self.root, height=10, width=50)
        self.schueler_listbox.pack(padx=10, pady=10)
        self.neuer_schueler_button = tk.Button(self.root, text="Neuer Schüler", command=self.neuer_schueler)
        self.neuer_schueler_button.pack(padx=10, pady=10)
        self.liste_aktualisieren()

    def neuer_schueler(self):
        schuelerfenster = tk.Toplevel(self.root)
        vorname_label = tk.Label(schuelerfenster, text="Vorname:")
        vorname_label.grid(row=0, column=0, padx=5, pady=5)
        vorname_entry = tk.Entry(schuelerfenster)
        vorname_entry.grid(row=0, column=1, padx=5, pady=5)
        nachname_label = tk.Label(schuelerfenster, text="Nachname:")
        nachname_label.grid(row=1, column=0, padx=5, pady=5)
        nachname_entry = tk.Entry(schuelerfenster)
        nachname_entry.grid(row=1, column=1, padx=5, pady=5)
        note_label = tk.Label(schuelerfenster, text="Durchschnittsnote:")
        note_label.grid(row=2, column=0, padx=5, pady=5)
        note_entry = tk.Entry(schuelerfenster)
        note_entry.grid(row=2, column=1, padx=5, pady=5)
        ok_button = tk.Button(schuelerfenster, text="OK", command=lambda: self.schueler_hinzufuegen(vorname_entry.get(), nachname_entry.get(), note_entry.get(), schuelerfenster))
        ok_button.grid(row=3, column=1, padx=5, pady=5)

    def schueler_hinzufuegen(self, vorname, nachname, note, fenster):
        schueler = Schueler(vorname, nachname, note)
        self.schueler.append(schueler)
        fenster.destroy()
        self.liste_aktualisieren()

    def liste_aktualisieren(self):
        self.schueler_listbox.delete(0, tk.END)
        for schueler in self.schueler:
            self.schueler_listbox.insert(tk.END, f"{schueler.vorname} {schueler.nachname} - {schueler.note:.2f}")

root = tk.Tk()
root.title("Klassenliste")
klasse = KlassenlisteGUI(root)
root.mainloop()


Dieses scheint auf den ersten Blick zu funktionieren: Es erzeugt ein entsprechendes Fenster. Wenn du einen neuen Schüler hinzufügst, kommt es jedoch zu einem Fehler. Auch als wir ChatGPT darauf hingewiesen haben, dass das Programm nicht korrekt funktioniert, haben wir keine korrekte Lösung erhalten. Erst als wir die genaue Fehlermeldung übermittelt haben, hat die KI ein funktionierendes Programm erstellt:



import tkinter as tk

class Schueler:
    def __init__(self, vorname, nachname, note):
        self.vorname = vorname
        self.nachname = nachname
        self.note = note

class KlassenlisteGUI:
    def __init__(self, root):
        self.root = root
        self.schueler = []
        self.schueler_listbox = tk.Listbox(self.root, height=10, width=50)
        self.schueler_listbox.pack(padx=10, pady=10)
        self.neuer_schueler_button = tk.Button(self.root, text="Neuer Schüler", command=self.neuer_schueler)
        self.neuer_schueler_button.pack(padx=10, pady=10)
        self.liste_aktualisieren()

    def neuer_schueler(self):
        schuelerfenster = tk.Toplevel(self.root)
        vorname_label = tk.Label(schuelerfenster, text="Vorname:")
        vorname_label.grid(row=0, column=0, padx=5, pady=5)
        vorname_entry = tk.Entry(schuelerfenster)
        vorname_entry.grid(row=0, column=1, padx=5, pady=5)
        nachname_label = tk.Label(schuelerfenster, text="Nachname:")
        nachname_label.grid(row=1, column=0, padx=5, pady=5)
        nachname_entry = tk.Entry(schuelerfenster)
        nachname_entry.grid(row=1, column=1, padx=5, pady=5)
        note_label = tk.Label(schuelerfenster, text="Durchschnittsnote:")
        note_label.grid(row=2, column=0, padx=5, pady=5)
        note_entry = tk.Entry(schuelerfenster)
        note_entry.grid(row=2, column=1, padx=5, pady=5)
        ok_button = tk.Button(schuelerfenster, text="OK", command=lambda: self.schueler_hinzufuegen(vorname_entry.get(), nachname_entry.get(), note_entry.get(), schuelerfenster))
        ok_button.grid(row=3, column=1, padx=5, pady=5)

    def schueler_hinzufuegen(self, vorname, nachname, note, fenster):
        schueler = Schueler(vorname, nachname, float(note))
        self.schueler.append(schueler)
        fenster.destroy()
        self.liste_aktualisieren()

    def liste_aktualisieren(self):
        self.schueler_listbox.delete(0, tk.END)
        for schueler in self.schueler:
            self.schueler_listbox.insert(tk.END, f"{schueler.vorname} {schueler.nachname} - {schueler.note:.2f}")

root = tk.Tk()
root.title("Klassenliste")
klasse = KlassenlisteGUI(root)
root.mainloop()


Der Grund für diesen Fehler war relativ simpel: Das Programm nimmt die Eingabe des Anwenders als Zeichenkette auf. Für die Ausgabe ist es jedoch notwendig, diese in eine Zahl umzuwandeln. Das hat die KI “vergessen”.



Kann die künstliche Intelligenz Programmierer schon ersetzen?


Unser kleiner Test zeigt recht anschaulich, was die KI kann – aber auch, was sie noch nicht kann. Die erste Aufgabe hat sie problemlos gelöst. Doch selbst wenn du gerade erst mit dem Programmieren begonnen hast, wirst du ähnliche Programme bereits nach den ersten Einheiten gestalten können. Auch die nächsten Beispiele hat die künstliche Intelligenz ohne Fehler erzeugt. Wenn du diese selbst erstellen willst, ist dafür bereits etwas Übung notwendig.


Im letzten Beispiel kam es jedoch zu einigen Problemen. Hier hat das Programm zunächst nicht korrekt funktioniert. Das ist bemerkenswert, da diese Aufgabe zwar etwas komplexer ist, allerdings sicherlich nicht so schwierig, dass ein geübter Hobby-Programmierer sie nicht lösen könnte. Für einen professionellen Programmierer sollte dies keinerlei Problem darstellen. Zwar hat die KI das Programm im zweiten Anlauf korrigiert. Dafür waren jedoch bereits sehr spezifische Anweisungen notwendig, die Personen ohne Programmierkenntnisse wahrscheinlich nicht geben können.


Wenn du ChatGPT nun einmal dazu aufforderst, ein sehr komplexes Programm zu erstellen, das für die kommerzielle Anwendung geeignet ist – beispielsweise ein CRM-System für ein Unternehmen – wirft die KI sofort das Handtuch. Sie gibt dir zwar einige Ratschläge, doch sagt sie klar, dass sie dazu nicht in der Lage ist.


Das zeigt, dass professionelle Programmierer nach wie vor unverzichtbar sind. Die künstliche Intelligenz kann zwar viele Aufgaben erleichtern und deutlich beschleunigen. Dabei handelt es sich jedoch bislang nur um Programmteile mit recht geringer Komplexität. Um die einzelnen Teile zu überprüfen und zusammenzufügen, ist ein menschlicher Programmierer unverzichtbar.



Welche Entwicklungen sind für die Zukunft zu erwarten?


Die künstliche Intelligenz macht erhebliche Fortschritte. Es ist zu erwarten, dass sich auch die Programmierfähigkeiten in absehbarer Zeit deutlich weiterentwickeln werden. Programme wie die oben vorgestellten Beispiele werden dann wahrscheinlich problemlos zu erstellen sein. Auch komplexere Aufgaben werden die KI-Programme wohl erledigen können.


Dennoch gibt es Bereiche, in denen diese Systeme bislang kaum einsetzbar sind – und in denen es bislang auch keine Anzeichen dafür gibt, dass die künstliche Intelligenz dafür zum Einsatz kommen könnte. Ein wichtiger Faktor besteht darin, dass es nach wie vor notwendig ist, den KI-Programmen genau zu sagen, was sie erledigen sollen. Dafür sind umfassende Kenntnisse im Bereich der Informatik erforderlich. Außerdem fällt es der KI schwer, zu bewerten, ob ein Programm tatsächlich seinen Zweck erfüllt. Auch hierfür werden weiterhin Menschen zum Einsatz kommen. Ein weiterer wichtiger Faktor besteht darin, dass die künstliche Intelligenz bislang keine Kreativität entwickeln kann. Sie ist zwar sehr gut darin, bekannte Strategien auf neue Probleme anzuwenden. Allerdings ist sie nicht dazu in der Lage, wirklich neue Lösungsstrategien zu entwickeln. Um technischen Fortschritt zu erreichen, ist jedoch Kreativität notwendig. Daher werden auch in diesem Bereich weiterhin Menschen zum Einsatz kommen.



Fazit: ChatGPT verändert das Programmieren, macht es aber nicht überflüssig!


Dieser Artikel hat gezeigt, dass die künstliche Intelligenz bereits sehr gut darin ist, Programme mit relativ geringer Komplexität zu erstellen. Allerdings sind die Grenzen hierbei noch so eng, dass die KI professionelle Programmierer nicht ersetzen kann.


Allerdings haben die Programme bereits erheblichen Einfluss auf diese Tätigkeit. Kleinere Routineaufgaben kann die KI problemlos übernehmen. Das führt zu einer erheblichen Effizienzsteigerung. Auch die Aufgaben verändern sich dabei. Statt die einzelnen Befehle auswendig zu lernen und das Programm mit viel Mühe selbst zu schreiben, sind immer häufiger Fähigkeiten gefragt, die die Strukturen der Programme vorgeben und die Verbindungen zwischen den einzelnen Teilen herstellen. Die Kenntnis des Programmcodes ist hierfür jedoch nach wie vor eine wichtige Grundlage.


Dieses Bild wird sich wahrscheinlich auch in absehbarer Zukunft nicht ändern. Zwar sind hierbei noch erhebliche Fortschritte zu erwarten. Sehr komplexe und kreative Programme wird die KI aber wahrscheinlich auch weiterhin nicht eigenständig erstellen können.


Wir haben gesagt, dass die KI die Arbeit der Programmierer wesentlich effizienter gestaltet. Nun könntest du Bedenken haben, dass dadurch viel weniger Arbeitskräfte in diesem Bereich notwendig sein könnten – mit entsprechend schlechteren Jobperspektiven und Gehältern. Der gestiegenen Effizienz steht jedoch eine immer höhere Nachfrage gegenüber. Die Zahl der erstellten Programme steigt rasant an – auch beschleunigt durch die KI. Schließlich sind für die Weiterentwicklung der KI ebenfalls viele Programmierer notwendig. Diese Aspekte legen nahe, dass auch weiterhin die Nachfrage hoch sein wird.


Um zur Eingangsfrage zurückzukommen: Ja, es lohnt sich auch weiterhin, Programmieren zu lernen. Es ist nicht davon auszugehen, dass die Nachfrage nach Fachkräften in diesem Bereich in absehbarer Zeit nachlassen wird. Allerdings wird sich die Art des Programmierens verändern. Code-Kenntnisse werden nur noch die Grundlage der Arbeit darstellen, doch werden die Programmierer immer seltener den Code selbst schreiben. Stattdessen sind sie dafür verantwortlich, die KI anzuleiten und zu kontrollieren, um dafür zu sorgen, dass sie die gewünschten Ergebnisse erzeugt.


Dein Code Pirate Team


Verpasse keinen Blogeintrag mehr! Folge dafür einfach unserer Instagram oder Facebook Seite ✅


Schau dir auch unsere iOS und Android App zum Programmieren lernen an.



Du liest:

ChatGPT & Co.: Lohnt es sich noch, Programmieren zu lernen?


762 Ansichten0 Kommentare

Aktuelle Beiträge

Alle ansehen

Comments


bottom of page