Eure Meinung zu KI-gestützter Programmierung

Hey Leute,

ich denke der Titel spricht im Großen und Ganzen für sich. Da der Medientrubel inzwischen abgeflacht ist und praktische Erfahrungen über einen längeren Zeitraum gewonnen werden konnten, möchte ich mich bei euch mal nach eurer Meinung und Erfahrung zur/mit KI-gestützter Softwareentwicklung, bspw. mit ChatGPT oder GitHub Copilot, erkundigen.

Ich mache auch gleich den Anfang:
Ich selbst habe GitHub Copilot noch nie verwendet, nutze aber manchmal ChatGPT. Ich würde die Qualität der Antworten in gewisser Regelmäßigkeit als „ungenügend“ (dh. falscher Code oder schlechter Coder) beschreiben. Meistens passen die Antworten aber mir persönlich ist der Anteil der Ungenügend zu hoch, um ChatGPT fest zu integrieren. An sich würde ich auch nach wie vor StackOverflow präferieren (bessere Erklärungen, Dokumentation & weitere Seiten verlinkt).
Des Weiteren ist mir aufgefallen, dass ich mit ChatGPT nicht unbedingt schneller bin, weil ich zum Einen den Code einfügen, als auch beschreiben muss, was ich möchte. (Vielleicht ist GitHub Copilot hier geschickter.) Bis ich meine Anforderungen so notiert habe, dass sie passen (+ vermeintliche Korrekturanweisungen) , habe ich es auch selbst getippt – Außerdem macht mir Programmieren Spaß, vor allem das Entwickeln und sukzessive Aufbauen der Lösung klappt bei mir gefühlt besser, wenn ich das meiste selbst erledige.

Bis jetzt bin ich auch nicht auf ein Anwendungsszenario gestoßen, bei dem mir KI „immer“/regelmäßig helfen kann außer Plots mit matplotlib konfigurieren aber das betrachte ich teilweise als Spielerei. Habt ihr vielleicht Szenarien, bei denen euch KI verlässlich und effektiv unter die Arme greifen kann?

1 „Gefällt mir“

Über mich:
Ich verwende seit ~2018 (teils selbst entwickelte) KI basierte Code „generier“ (mehr sortier) Werkzeuge, ich finde dies unheimlich praktisch. Mein Workflow ist dadurch signifikant schneller, auch wenn meine Technik nur für Sprachen mit guter Compilerinfrastruktur (bevorzugt JDK ähnlich) geht, konkret Java und auch bisschen C, C++ für Python, PHP, Lua funktioniert es überhaupt nicht.
ChatGPT und Copilot kommen in meinem Workflow, mangels Qualität und Rechtssicherheit, nicht vor, mit Ausnahme ich bin sehr verzweifelt. Spezialisierte KIs für zum Beispiel Rechtschreibprüfung hingegen kommen, seit 5 Jahren täglich, bei mir zum Einsatz.

Contra: Das Aufkommen von ChatGPT und Copilot fand ich anfangs enttäuschend, mittlerweile spiele ich ganz gerne damit herum, praktisch sind sie aber nicht einsetzbar, aus mehreren Gründen:

  • Die Qualität des generierten Codes/ Textes ist meist sehr fragwürdig.
  • Je eher es sich lohnt eh eine Bibliothek zu verwenden, desto besser wird der generierte Code, toll wieder ein Werkzeug was es erleichtert mehr redundanten Code zu schreiben, nicht gut für die Wartbarkeit, das wird einen in nur wenigen Tagen bis Jahren auf die Füße fallen.
  • Wenn das Problem noch nie von jemandem vorher bearbeitet wurde, ist es auch sehr unwahrscheinlich, dass Copilot oder ChatGPT zuverlässig qualitativ akzeptable Antworten liefern.
  • Schwer erkennbare Fehler, die Fehler in den Programm-/ Text-schnipseln gehen meist in der Masse unter, für zuverlässigen oder komplizierten Code/Text ist also das selber Schreiben gigantisch schneller.
  • Sowohl ChatGPT als auch Copilot tendieren stark dazu Urheberrechtsverletzungen zu machen, das ist für private Projekte zwar noch nicht rechtlich problematisch, sollte man aber mit seinem Code Geld verdienen wollen, bewegt man sich sofort auf dünnen Eis, weil man ja auch nicht mal weiß, wessen Code man geklaut hat. Prinzipiell ist es halt einfach nicht möglich, mit den aktuellen Sprachmodellen Urheberrecht zu würdigen, weil sie die Information, woher sie etwas gelernt haben, nicht speichern. Ja, Microsoft will in Copilot da eine Suche nachträglich aufsetzen, aber das wird, wenn sie ihre Ambitionen erfüllen, weiterhin unzuverlässig sein.
  • Es funktioniert nicht offline, das ist für viele Projekte ein unlösbares Datenschutzproblem.

Pro: Wofür man Sprachmodelle aktuell aus meiner Sicht verwenden kann:

  • Man kann mit ihnen hervorragend spielen und Spaß haben, denn ihre Antworten sind teils sehr kurios, auch Prompt Injections sind sehr interessant, man sollte aber schauen, dass man sich dabei nicht strafbar macht, wenn man an einem Produktivsystem von Dritten arbeitet.
  • Standardanschreiben aufsetzen, ChatGPT kann in praktisch keiner Zeit langweilige Standardtexte für Ansprachen und Klageschriften verfassen, das geht schneller als selbst schreiben, man sollte sie aber immer Korrektur lesen, sonst fällt einem das auf die Füße.
  • Übungsaufgaben bearbeiten, großen öffentlichen Sprachmodelle schaffen es, mit einer beeindruckenden Präzision diverse Übungsaufgaben aus unterschiedlichsten Fächern zu bearbeiten, das kann man durchaus machen, wenn man sonst nicht weiter kommt, man sollte auf keinen Fall nur die Lösungen abschreiben, weil dann verfehlt man den Punkt der Übungsaufgabe und lernt selbst nichts bei, das wird einem hoffentlich in einer Klausur, sonst aber spätestens in der Prüfung des Lebens auf die Füße fallen.

Gut, dass du die Datenschutz-Thematik erwähnst, die habe ich in meinem Beitrag vergessen!

Im Großen und Ganzen decken sich deine Eindrücke und Erfahrungen mit meinen – ich bin also nicht zu doof ChatGPT/Copilot zu bedienen oder habe den Spaß gänzlich falsch verstanden.

Mal schauen, wohin uns der Spaß noch führt, trotz meiner platonischen Unzufriedenheit bin ich schon neugierig, wie es sich im Bezug auf’s Programmieren (bei Fließ-/Freitexten kann man ChatGPT durchaus schon ganz nützlich anwenden) entwickelt.

LLMs wie ChatGPT werden die Produktivität pro Entwickler deutlich steigern. Was dazu führen wird, dass für das gleiche Projekt weniger Entwickler gebraucht werden. Ich bin gespannt wo die Reise hin geht, aber seitdem ChatGPT AuD und SP Abgaben schafft und Informatik durch explodierende Studentenzahlen zum neuen BWL geworden ist, bin ich nicht mehr ganz so sicher… Der Juniormarkt geht bereits langsam in die Sättigung.

Generative-KI beim Programmieren unterscheidet sich nicht viel zu Generativer-KI in anderen Anwendungen, d.h. es erleichter „mechanische“ Probleme zu automatisieren, wie das Schreiben von Boilerplate code. Es ist zwar möglich anders und kreativ mit LLMs zu arbeiten, aber was ich bisher im CIP gesehen hab sehen die Prompts von den meisten Leuten eher wie „Schreibe mir eine Funktion um … zu machen“, als „Diskutiere mit mir wie man das Problem … angehen kann“ (oder „… welche Randfälle eine Implementierung eines Algorithmus haben kann“, „… ob es sich Lohnt eine Architektur zu überdenken“, etc.).

Mich erinnert das Teilweise an den satirischen Artikel „I Did It For You All…“, wo Stroustrup angeblich behauptet C++ erfunden zu haben um die Arbeitsstellen von Programmieren zu sichern:

Everyone was writing ‘C’ and, the trouble was, they were pretty damn good at it… Universities got pretty good at teaching it, too. They were turning out competent - I stress the word ‘competent’ - graduates at a phenomenal rate. That’s what caused the problem… […] Well, in the beginning, these guys were like demi-gods. Their salaries were high, and they were treated like royalty… […] Right. So what happened? IBM got sick of it, and invested millions in training programmers, till they were a dime a dozen… […] Well, one day, when I was sitting in my office, I thought of this little scheme, which would redress the balance a little. I thought ‘I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers?

Es ist ein Witz, aber es ist auch etwas Wahres dran. Wenn man sich die Geschichte der Informatik anschaut, gibt es so viele interessante, kreative, schlaue und ausdrucksstarke Ideen, welche nie die Prominenz von „Mainstream“ Technologien erreicht haben, und oft quasi vergessen wurden. Natürlich ist es nicht Perfekt (das Thema „Lisp Curse“ ist ein Beispiel wie Flexibilität sich selbst beißen kann), aber ich vermute, diese Technologien hätten alles in allem einen geringeren Vorteil von LLM-artigen Technologien.

Die Frage, wie ineffiziente und unelegante Ansätze es immer wieder schaffen zu proliferieren kann ich nicht eindeutig beantworten. Teilweise hat es wohl mit Time-To-Market zu tun, teilweise mit der zugegebenen Esoterik von „höheren“ Konzepten. Ich würde aber behaupten, es scheint eine Dynamik zu geben, wo angestellte Programmierer und Low-Level Manager in der Lage sind Projekte in eine Richtung zu bewegen wo es zwar nicht viel zu machen gibt, aber man immer was zu tun hat (anekdotisch, hab ich vor kurzem gelesen, wie es Firmen gibt, welche alle sechs Monate ihre Produkte von einem Framework in ein anders umschreiben lassen). Soziologisch wäre es sicher interessant zu untersuchen wie solche Situationen entstehen und festigen, und in der Zukunft wird es sich zeigen, ob diese Tendenz stärker oder schwächer ist als die Automatisierungen von ChatGTP/Copilot/etc. Ich kann mir vorstellen, dass viele Einsteiger-stellen entfallen, aber vielleicht findet sich am Ende doch ein Weg, wie relative einfache Aufgaben weiterhin trotz Sprachmodelle erhalten bleiben?

Auf der anderen seite gibt es legale und ethische Bedenken, spezifisch bei Sachen wie Copilot welche auf Freier Software trainiert wurde, aber jetzt nicht mehr sagen kann wie es auf eine Implementierung gekommen ist. Für mich persönlich ist aber schon der Aspekt, dass man mit einer fremden, online Dienstleistung interagieren muss schon Grund genug, dass ich kein Interesse habe diese zu nutzen. Mit lokalen, offline Alternativen in der Zukunft, ggf. die nur auf Spezialgebieten funktionieren, könnte es aber eine durchaus interessante Technologie sein.


SP Abgaben schafft

Ich habe als SP Tutor in Rechnerübungen ChatGPT benutzen sehen, und es hat zwar funktionierenden Code geschrieben, aber ohne Beachtung der Randfälle, was im wesentlichen kein großer Vortschritt ist über den Stand vieler Abgaben bisher. Wer nur Fragen stell, aber was beantwortet wird, nicht hinterfragen kann, hat wie ich es wahrnehme am Ende nicht mehr viele Punkte nach der Korrektur übrig.

Generative-KI beim Programmieren unterscheidet sich nicht viel zu Generativer-KI in anderen Anwendungen, d.h. es erleichter „mechanische“ Probleme zu automatisieren, wie das Schreiben von Boilerplate code. Es ist zwar möglich anders und kreativ mit LLMs zu arbeiten,

Die akademische Forschung und Forschungs-intensive Stellen in der Wirtschaft sind wahrscheinlich noch einige Zeit sicher. Aber die ganzen Programieraffen, die nur Tickets in Code umwandeln?

Mich erinnert das Teilweise an den satirischen Artikel „I Did It For You All…“, wo Stroustrup angeblich behauptet C++ erfunden zu haben um die Arbeitsstellen von Programmieren zu sichern:

Das Aufkommen von LLMs ist ein fundamentaler Paradigmenwechsel, wie damals das Aufkommen von Hochsprachen. Andrej Karpathy hat es mit „The hottest new programming language is English“ ganz gut getroffen. Wer programmiert heute noch in Assembler? Der Job als Softwareentwickler wird sich radikal verändern. Werden wir noch komplexere Systeme bauen? Oder wie die Weber durch die Mechanisierung obsolet?

https://m-cacm.acm.org/magazines/2023/1/267976-the-end-of-programming/fulltext

Auf der anderen seite gibt es legale und ethische Bedenken, spezifisch bei Sachen wie Copilot welche auf Freier Software trainiert wurde, aber jetzt nicht mehr sagen kann wie es auf eine Implementierung gekommen ist.

Ob der Trainingsprozess, der sich am menschlichen Lernen orientiert, Urheberrechtsverletzung ist, werden die Gerichte feststellen müssen. Aber selbst, wenn, wird es für Unternehmen Instanzen trainiert auf rechtlich unproblematischen Trainingsmaterial geben.

Ich habe als SP Tutor in Rechnerübungen ChatGPT benutzen sehen, und es hat zwar funktionierenden Code geschrieben, aber ohne Beachtung der Randfälle,

Warum glaubst du, dass LLMs nicht in Zukunft mit den Randfällen umgehen können? Wenn man mehr Rechenleistung und Trainingsdaten auf das Problem wirft. Ich sehe keine konzeptuelle Limitierung.

LLMs wie ChatGPT werden die Produktivität pro Entwickler deutlich steigern. Was dazu führen wird, dass für das gleiche Projekt weniger Entwickler gebraucht werden.

Vielleicht, aber ich sehe das in meinem Alltag überhaupt nicht. Die Probleme die von den Sprachmodellen gelöst werden sind nicht die Probleme die ich in der Entwicklung habe.

Design, Interaktion von System und Debugging dauert lange. Syntax und LIbraries benutzen nicht.

Mal gucken.

1 „Gefällt mir“

Sehe ich im Moment ähnlich.


Ich habe die Antwort von @zge so interpretiert, dass er LLMs zum jetzigen Zeitpunkt für nicht ausgereift hält und keine Aussage für die Zukunft trifft. Prinzipiell stimme ich deiner Aussage zu und kann mir vorstellen, dass Randfälle in Zukunft abgedeckt werden können. Ich habe es zwar noch nicht ausprobiert aber ich wäre nicht überrascht, wenn Generative-KI Probleme mit Parallelisierung hätte. Ich habe die Randfälle in PFP als subtiler als in SP wahrgenommen.


Geht es dir bei dieser Aussage um LLMs per se oder inkludierst du auch deren aktuelle Distribution? Ich frage vor dem Hintergrund des Datenschutzes, wie ihn @Ratte bereits erwähnt hat? Dadurch, dass ChatGPT und noch mehr Copilot Zugriff auf den Quelltext haben, kann ich mir vorstellen, dass das deren Anwendung im Geschäftsumfeld stark limitiert – Warum sollte ein Unternehmen Microsoft (uneingeschränkten) Zugriff auf sein Wissen und Know-How geben? Solange diese unternehmerische Verwendung ausbleibt, kann es meiner Meinung nach nicht über eine Spielerei für private Programmierprojekte hinaus wachsen und damit sind auch Programmieraffen weiterhin notwendig. Wenn du oder jemand anderes diesbezüglich eine andere Meinung hat, gerne her damit!

Vielleicht kann man Zukunft LLMs kaufen/einsetzen ohne dass eine externe Firma Zugriff auf alle Dateien hat.

Warum sollte ein Unternehmen Microsoft (uneingeschränkten) Zugriff auf sein Wissen und Know-How geben?

Viele Unternehmen vertrauen bereits heute schon ihre Daten und Unternehmenskommunikation Amazon und Microsoft an. AWS, Azure, Teams, …

Vielleicht kann man Zukunft LLMs kaufen/einsetzen ohne dass eine externe Firma Zugriff auf alle Dateien hat.

So direkt wollte ich das nicht sagen, aber ja, stellen welche gerade nur ein Bootcamp an Ausbildung brauchen, sind eben gefährdet. Ihre Existenz ist eben bedingt durch die Fehler der Vergangenheit und der Tatsache, dass Falsche Entscheidungen getroffen wurden, die von einer kollektivem Sunken-Cost Fallacy getragen werden. Der Umstand unserer Systeme macht es ja einfacher, dass „Programmiermenschen“ Aufgaben an die „Programieraffen“ delegieren, anstatt diese schnell mal selbst zu machen, weil sie meistens nicht „schnell mal selbst zu machen“ sind.

Die Lösung welche wir scheinbar nehmen um dieses Problem zu lösen, ist es fortgeschrittene und magische stochastische Verfahren zu verwenden, um die „Programieraffen“ nachzuahmen. Meines Erachtens ein armes Verständnis davon, was das Potential eines Rechners is, aber das passt ja zu den bisherigen Motiven.

Ansonsten hat @kissen recht, sobald es nicht mehr nur darum geht zu immer wieder die gleichen Sachen zu schreiben, sinkt der Mehrwert. Vor kurzem hab ich etwas gelesen, das LLMs so etwas beschrieben hat „Technologien welche Antworten geben, die sich so anhören wie was man erwarten würde“. Das beschreibt auch elegant, wie es zu der Halluzination von Zitaten kommt. Ein Problem ist also, wenn Menschen nicht wissen, wie sich die Antwort auf eine Frage anzuhören hat, dass die Antworten auch dementsprechend fragwürdiger werden. Und sobald es nicht um Probleme geht, wo jemand ein Ticket ausgestellt hat, weil dieser zu „Faul“ war es selbst zu schreiben, dann sind die Antworten auf Fragen schon nicht mehr ganz so eindeutig. LLMs sind dann nicht mehr wertlos, wie gesagt ich finde das Konzept jemanden zu haben, mit dem man Diskutieren kann ohne Angst zu haben diesen zu nerven ja ganz toll. Aber das ist ein verantwortungsbewussteres und kritischere Verwendung der Technologie.

Ich leugne nicht, dass es möglich ist, aber wenn man bedenkt was die Kosten sind, um ChatGPT zu betreiben stellt sich die Frage wie Ressourceneffizient es ist, oder ob es doch nicht billiger ist weiter Menschen („Programieraffen“) zu benutzen. Das wird sich spätestens dann zeigen, wenn OpenAI weniger gratis anbietet und die Nutzungskosten an die Realität anpassen muss.

In dem Fall erinnert das mich ein wenig an den frühen Optimismus der AI Bewegung, wo Minsky angeblich 1970 gesagt hat:

In from three to eight years we will have a machine with the general intelligence of an average human being

Wir sind vielleicht näher dran (darüber kann man streiten, aber das ist ein ganz anderer Punkt), aber die gewählte Methode ist etwas brute force. Im schlimmsten Fall, kann das zu einem zweiten AI Winter führen.

Ich sage nicht, dass es eine inhärente Barriere gibt, das SP die Grenze zwischen Mensch und Maschine ist. Nur dass in diesem Fall, die Übungen noch nicht ganz weg automatisiert wurden. Und um den Zusammenhang mit dem davor aufzustellen, bin ich skeptisch ob der Aufwand all die kleinen Punkte richtig hinzubekommen mit einem linearem Aufwand an technologischem Fortschritt verbunden ist, oder ob es einen Punkt gibt wo es insgesamt einfacher ist, dass ein Student den unterschied zwischen automatisch und auf der Halde alloziertem Speicher versteht.

1 „Gefällt mir“