LLM-gesteuerte Programmierung: Oh, wirklich?

Feb 26 2023
So gerne ich auch sein würde, ich bin kein Informatik-Akademiker. Gar nicht.

So gerne ich auch sein würde, ich bin kein Informatik-Akademiker. Gar nicht.

Allerdings habe ich einen anderen Weg eingeschlagen.

Seit nunmehr 25 Jahren verbringe ich einen großen Teil meiner Tage damit, Computerprogramme zu lesen, zu schreiben, zu ändern und Fehler zu beheben. Während dieser Zeit habe ich einen technischen Abschluss in Datenverarbeitung erworben, mehr als drei Jahre lang an einem Informatik-Grundstudium teilgenommen (bevor ich das Studium im vierten Jahr, etwa ein Semester vor meinem Abschluss, abgebrochen habe) und es später schließlich weiterverfolgt habe einen Postgraduiertenabschluss in Data Science & Big Data und anschließend einen Bachelor in Ernährung.

Ich wette, dass ich in den letzten 25 Jahren ziemlich viele Bücher, Artikel, Blogs und so weiter gelesen habe, in dem ehrlichen Bemühen, mich weiterzubilden. Dennoch fühle ich mich so unterqualifiziert, Meinungen außerhalb meines Fachgebiets zu äußern – z. B. dem Entwerfen von Softwaresystemen für das Internet.

Deshalb suche ich immer nach Leuten, die es besser wissen als ich. Ich blamiere mich also nicht umsonst im Internet. Es ist vielleicht nicht cool, aber es ist intellektuell ehrlich. Ich nehme es.

LLM-Hype

In letzter Zeit gibt es einen Hype um das Thema LLM (große Sprachmodelle, z. B. GPT-3 ), insbesondere ChatGPT . Sie müssen unter einem Felsen leben, um noch nichts davon gehört zu haben. Dieses Ding ist überall. Die Leute machen sich darüber Gedanken. Manche lieben, manche hassen und alles dazwischen, schätze ich.

Hier bin ich.

Auch wenn ich einen Postgraduiertenabschluss im Fach Data Science habe, bin ich weit davon entfernt, ein LLM-Experte zu sein. Weit weit weg. Nicht einmal vor den Augen menschlicher Augen. Meine Gedanken dazu basieren also auf meinen Beobachtungen im Laufe der Jahre und einem angemessenen Anteil realer Erfahrungen als Softwareentwickler. Nehmen Sie es mit einem Körnchen Salz.

Was denke ich darüber?

Ich denke, es könnte ein praktisches Werkzeug in Ihrem Programmierer-Werkzeugkasten sein. Haben Sie es dort, so wie Sie Google und Stack Overflow haben. Das ist es. So einfach ist das.

https://commoncog.com/content/images/2018/12/Paper.Commonplace.37.png

Ich meine, lassen Sie mich etwas näher auf diese Behauptung eingehen.

Als ich zum ersten Mal mit dem Programmieren begann, musste ich Bücher und Zeitschriften kaufen oder sie in Schulen und öffentlichen Bibliotheken ausleihen. Außerdem hatte ich einen guten Kumpel bei der Arbeit, der mir viel über Clipper beigebracht hat , und das war’s. Dann habe ich die Online-Diskussionsforen entdeckt (z. B. GUJ ). Und dann lernte ich Benutzergruppentreffen kennen und nahm an ihnen teil (z. B. SouJava ). Und dann waren es Stack Overflow, GitHub und die Fülle an technischen Inhalten, die es überall im Internet gibt – Sie wissen, wovon ich rede, einfach googeln, was auch immer Sie über die esoterischste Programmiersprache wissen, und schon haben Sie es.

Diese Dinge schlossen sich nicht gegenseitig aus, sie fügten sich aufeinander, wie die Ziegelsteine ​​eines Gebäudes. Oder sollte ich einen Wolkenkratzer sagen? Stelle dir das vor.

Wie auch immer, ich schätze, was ich damit sagen will, ist, dass ich, obwohl ich alles auf Stack Overflow (oder besser gesagt auf Google und dann per Mausklick) durchsuchen kann, Blogs lesen und alle möglichen interessanten Vorträge auf YouTube ansehen kann , und so weiter und so weiter, ich kaufe immer noch Bücher und lese sie durch. Das eine schließt das andere nicht aus.

Dasselbe gilt auch für LLM-Tools.

Seien Sie ein bildungsorientierter Programmierer

Ich möchte hier etwas betonen: Ich glaube fest an eine „hochwertige“ Bildung. Und damit meine ich den Besuch formeller Universitätskurse und das Lesen „fleischiger“ Bücher.

Ich weiß, dass dies heutzutage keine weit verbreitete Meinung ist, da all die Bootcamps, kurzen Videokurse und Nano-Inhalte stark beworben werden, als wären sie das Penicillin des 21. Jahrhunderts, aber ehrlich gesagt ist es mir völlig egal. Um Wissen zu festigen, das die Zeit überdauert, ist eine fundierte Ausbildung erforderlich. Nehmen Sie sich also Zeit, erledigen Sie die harte Arbeit, überspringen Sie das kurze Tutorial und machen Sie sich selbst weiter.

Bedenken Sie, dass Sie mit nur oberflächlichem Wissen möglicherweise nicht einmal erkennen können, ob eine Stack Overflow-Antwort richtig oder falsch ist. und wenn es richtig ist und wie erwartet funktioniert, warum? Und was würden Sie in diesem Fall tun, wenn es nicht funktioniert? Versuch und Irrtum bis zum Überdruss , oder? Das bringt uns zu einer unbestreitbaren Tatsache.

Niemand mag den Mann/die Frau im Büro, die ständig Fragen stellt und jede einzelne Information zerkauen möchte, um sie dann einfach zu schlucken, ohne ins Schwitzen zu geraten. Das tue ich ganz bestimmt nicht.

Lassen Sie mich Ihnen sagen: Kopieren und Einfügen-gesteuertes Programmieren gibt es schon seit geraumer Zeit , zumindest seit wir für die meisten Computerprobleme, nach denen wir im Internet suchen, mögliche Lösungen finden konnten. Das ist nichts Neues. Die Leute machen das schon seit Ewigkeiten. Viel mehr nach dem Aufkommen von Open-Source-Software und leistungsstarken Suchmaschinen. Und es ist nichts Falsches daran, Code aus dem Internet zu kopieren und einzufügen. Nichts. Na ja, zumindest bis es soweit ist.

Schließlich können wir hier und da kleine Codeschnipsel kopieren und einfügen, Beispielverwendungen von APIs, mit denen wir nicht so vertraut sind, die wir noch nicht verwendet haben oder mit denen wir gerade erst anfangen. Wir alle haben das getan und werden es immer noch tun. (Regex? Cron? Ja, ich verstehe Sie.) Wenn wir jedoch keine solide Grundlage für Programmierung und Softwaredesign haben und uns nicht die Zeit nehmen, zu verstehen, was wir tun, werden wir in eine frustrierende Situation geraten Schleife aus Versuch und Irrtum. Schlimmer noch, Leute, wir werden am Ende schwer zu findende Fehler, Leistungsprobleme und Sicherheitslücken in unsere Software einbauen – wobei es sich übrigens meistens nicht einmal um unsere Software handelt, sondern um die Software unserer Arbeitgeber. Denken Sie eine Sekunde darüber nach.

In der Softwareentwicklung gibt es viel mehr als das Schreiben einer SQL-Abfrage, das Erstellen eines API-Endpunkts, das Aufrufen eines Remote-Dienstes über eine mobile App oder das Codieren einer Tiefensuche. Eine vollständige Softwarelösung besteht aus viel mehr. Hier geht es um Software-Engineering als Fachgebiet. Mein Punkt hier ist also: Wenn Sie nicht wissen, wonach Sie fragen sollen, welche Art von Antworten werden Sie dann Ihrer Meinung nach bekommen? Und werden Sie in der Lage sein, die richtige Antwort für Ihren speziellen Fall zu finden?

Wie das Sprichwort sagt: Müll rein, Müll raus

Wenn Sie sich die Antworten auf Stack Overflow durchlesen, sollten Sie sich ganz sicher sein, wonach Sie suchen, um einigermaßen durchsetzungsfähig zu sein – es gibt wohlgemerkt auch jede Menge Junk-Content; Und sie tragen nicht die Aufschrift „Müll“. Dann müssen Sie den gesamten Kontext der ursprünglichen Frage und der bereitgestellten Antworten berücksichtigen und hier und da den Müll überspringen, bevor Sie sich entscheiden können, ein Code-Snippet unverändert zu kopieren und einzufügen oder Ihre eigene Lösung basierend auf dem Build zu schreiben Wissen ⎼ z. B. das spezifische Problem, das Sie lösen möchten, besitzt seine besonderen Randfälle. Und genau das wird Ihnen immer wieder Wissen bescheren.

Sehen Sie, wohin wir gehen? Sehen Sie meinen Standpunkt hier? Sehen Sie, wie ChatGPT eine Falle sein kann? Du fragst es, du bekommst eine Antwort. Eine Antwort, die so sicher ist, dass Sie, wenn Sie nicht über umfassende und solide Programmierkenntnisse verfügen, absoluten Mist kaufen, ohne es überhaupt zu wissen. Davon habe ich ziemlich viel bei Freunden auf Twitter und so weiter gesehen. Auch mit weithin bekannten Algorithmen.

Daher ist dieses „viel mehr“ das, worauf wir uns konzentrieren sollten (neben den Grundlagen) und auf das wir uns konzentrieren müssen (vorausgesetzt, wir haben die Grundlagen geschaffen). Das bringt uns zu einer weiteren gnadenlosen Tatsache.

Wir wissen nicht, was wir nicht wissen. Und das Einzige, was wir dagegen tun können, ist, uns immer wieder neues Wissen anzueignen – zuerst breit , dann tiefgreifend .

Grundlagen der Softwarearchitektur, Mark Richards und Neal Ford

Auf diese Weise wissen wir hoffentlich, wonach wir suchen, und haben zumindest eine Ahnung von der Antwort, wenn wir sie finden.

- Umfangreiches Wissen gibt uns eine Orientierung für die Suche nach Antworten;
- Tiefes Wissen hilft uns, die gefundenen Antworten zu erkennen.

Okay. Cool. Aber wie machen wir das?

Um Ihr Wissen darüber zu erweitern, was es da draußen zu wissen gibt, finde ich Blogs und YouTube-Videos großartig. Es handelt sich um kurze Inhalte, die Sie täglich konsumieren können, ohne ins Schwitzen zu geraten. Aber für tiefes, solides Wissen gibt es meiner Meinung nach (N=1) nichts Besseres als das Lesen von Büchern und offiziellen Dokumentationen. Und wenn Sie können, falls Sie es noch nicht getan haben, sichern Sie sich einen Platz (physisch oder online) in einem Universitätskurs (entsprechend Graduierten- oder Aufbaustudiengang).

Auch hier keine populäre Meinung. Aber ich bin selbst nicht beliebt, also wen interessiert das?

Betritt LLM-Tools

Dennoch habe ich mehrere unpopuläre Meinungen, ich denke, diese wird den Durchbruch schaffen: LLM könnte ein großartiges Werkzeug sein, um Ihnen dabei zu helfen, fundiertes Wissen zu erwerben. Wie ist das? Ich sage dir wie.

Fragen Sie zunächst ChatGPT, was Sie beispielsweise über die Entwicklung mobiler Apps wissen müssen. Dann fragen Sie nach kurzen Tutorials und YouTube-Videos, um einen Überblick zu bekommen. Fragen Sie anschließend nach sehr empfehlenswerten Büchern und Vorträgen dazu. Denn letztendlich möchten Sie mehrere ausführliche Artikel von verschiedenen Autoren und mit unterschiedlichen Standpunkten lesen, um ein solides Verständnis für das Thema zu erlangen, mit dem Sie sich befassen.

Das ist zum einen so. Es kann auch hilfreich sein, wenn Sie ein Buch durchlesen und aufgrund mangelnder Kenntnisse zu einem bestimmten erforderlichen Thema stecken bleiben. Bitten Sie ChatGPT, das genannte Thema für Sie zusammenzufassen, damit Sie eine Grundlage erhalten, bevor Sie fortfahren. Das Gleiche würden Sie mit Google tun: Lesen Sie ein oder zwei Quellen, aber schnell und direkt auf den Punkt. Gehen Sie danach aber weiter und vertiefen Sie sich in das besagte Thema, wenn es etwas Wichtiges für die allgemeine Materie ist, die Sie studieren. Es ist in Ordnung, das zu tun.

Ein weiterer Umstand, der sehr hilfreich sein kann, besteht darin, dass Sie bei der Entwicklung einer Softwareanwendung für eine bestimmte Domäne nicht mit allen Einzelheiten vertraut sind. Ich habe das neulich gesehen und fand es ziemlich klug.

Nehmen wir an, Sie entwickeln eine mobile Fitness-App, weil Sie sich für Fitness interessieren und von der Idee, Menschen dabei zu helfen, gesund zu werden, und so weiter, total begeistert sind. Okay. Aber Sie kennen nicht alle Apps, die es gibt, und wissen nicht, welche Funktionen sie am meisten mögen und wie sie monetarisiert werden usw. Das sind sehr objektive Fragen. Sie können diese Fragen also an ChatGPT stellen, um schnell loszulegen. Sie fragen nach App-Anforderungen. Sie bitten ihn beispielsweise darum, die Willkommens-E-Mail zu schreiben, die Sie an neue Abonnenten Ihrer tollen Fitness-App senden möchten, weil Sie darin nicht besonders gut sind. Rechts. Was jetzt? Wenn Sie verstanden haben, worüber ich bisher gesprochen habe, haben Sie bereits eine gute Vorstellung davon, was Sie als Nächstes tun sollten. Du verbesserst es, du machst es besser, du fügst deine spezielle Soße hinzu. Mit anderen Worten, brechen Sie die Trägheit, Was in diesem Fall wohl das Wichtigste ist, dann machen Sie es zu etwas ganz Besonderem ⎼ Sonst haben Sie nur generisches Zeug, das Sie ausverkaufen können. Nicht cool, denke ich.

Wenn Sie Zugriff auf GitHub Copilot erhalten und es keinen Schaden anrichtet, es für Ihre Arbeit zu verwenden, können Sie es bitten, Ihnen Codeteile bereitzustellen, etwa eine Methode zum Parsen einer Datei, einen sich wiederholenden Testfall oder so weiter. Wissen Sie, diese langweiligen Dinge, die man hin und wieder tun muss und die sich mit dem richtigen Code-Design und intelligenten Bibliotheken nicht vollständig vermeiden lassen. Daran ist nichts auszusetzen. Andernfalls erhalten Sie keine zusätzlichen Punkte, solange es an Ihrem Arbeitsplatz keine entsprechende Regelung gibt.

Es könnte wohlgemerkt noch viele andere ähnliche Anwendungen geben. Denk darüber nach.

Oh, Moment mal. Ich dachte über den größten Nutzen nach, den uns das bringen könnte: Kennen Sie die Leute, die gerne in Foren posten und nach Lösungen für ihre Schulaufgaben fragen? Wissen Sie, Sie haben die Frage gelesen und es ist fast die wörtliche Zuweisungserklärung. Das haben Sie wahrscheinlich schon einmal gesehen. Ja, jetzt können sie ChatGPT darum bitten und uns in Ruhe lassen. Alle freuen sich darüber.

Wird LLM menschliche Programmierer ersetzen?

Nein, das glaube ich nicht. Ich bin sehr skeptisch, was die Aussage betrifft, dass „X menschliche Programmierer ersetzen wird“ . Seit ich 1997 mit dem Programmieren angefangen habe, habe ich schon einiges über solche Modeerscheinungen gehört.

Es wird wahrscheinlich die Art und Weise verändern, wie wir uns im Programmieren ausbilden, wie wir Blockaden überwinden, wenn wir beim Programmieren stecken bleiben, wie wir mit langweiligen Dingen umgehen, aber uns, Homo Sapiens, durch mehr als CRUDs und banale, weithin bekannte Apps ersetzen, nein, ich da bin ich sehr skeptisch. Ich könnte mich aber irren.

Und wissen Sie, mit diesem Artikel schließt sich endlich der Kreis zu dem, was mich motiviert hat, ihn aufzuschreiben.

Gestern hatte ich das Vergnügen, auf einen erstaunlichen Artikel von Amy J. Ko zu stoßen , dessen Lektüre eine wahre Freude war. Erstens, weil ich größtenteils mit allem übereinstimme, was sie dort geschrieben hat. Zweitens, weil sie im Gegensatz zu mir Akademikerin ist und sich seit mehr als einem Jahrzehnt mit diesem Thema beschäftigt. Sie hat also auf jeden Fall ein oder zwei Dinge, die sie bei dieser ganzen Diskussion mitmachen kann, ohne sich selbst zu blamieren.

Tun Sie sich selbst einen Gefallen, durchbrechen Sie den Hype und lesen Sie diese herausragenden Artikel, um sich einen besseren Überblick über das Thema aus verschiedenen Blickwinkeln zu verschaffen:

- Große Sprachmodelle werden die Programmierung … ein wenig verändern.
– Große Sprachmodelle werden die Programmierung … sehr verändern

Es gibt kein TLDR; Dort. Nehmen Sie sich Zeit, genießen Sie die Fahrt.

Um dieses lange Stück nun mit einer lustigen Sache zu beenden: Ich habe die ganze Zeit beobachtet, wie sich Leute über Akademiker lustig machten und sagten, die Wissenschaft sei weit von der realen Softwareentwicklung entfernt, und dann waren die Leute plötzlich erstaunt und flippten aus etwas, das direkt aus der akademischen Forschung zum Leben erweckt wurde. Was für eine große Ironie. Was für eine gute Zeit, um Akademiker zu sein.

Wie auch immer, bis zum nächsten Mal, Leute.

Seien Sie vorsichtig mit dem Hype.

⛧ Siehe auch unter Leandrosilva.com.br . Da gibt es noch viel mehr .