Dieser Entwickler ist ChatGPT, und ich habe eine Hassliebe zu ihm.
Heutzutage gibt es so viele Artikel über KI, daher werde ich versuchen, mich kurz zu fassen.
Die Verwendung von ChatGPT zum Codieren ist, als ob Sie einen Junior-Entwickler unter sich hätten. Sie können den Code dort zu 80 % erhalten, aber Sie müssen praktisch jede Zeile überprüfen.
Ich muss zugeben, dass es viele Möglichkeiten gibt, ChatGPT zum Schreiben von Code zu verwenden. Bei manchen ist es wahrscheinlich besser, bei anderen schlechter.
Ich habe zum Beispiel viele Leute gehört, die es als Suchmaschine nutzen. Ich persönlich finde das etwas fragwürdig. Es ist nicht so schwer, über eine Suche Dokumentation oder sogar Antworten zu finden. Ich verwende Kagi , das hilft, die Flusen zu reduzieren.
Im Gegenteil, woher sollen Sie mit ChatGPT wissen, ob die Antwort wahr ist?
Auf der anderen Seite des Spektrums gibt es viele Leute, die es als verherrlichte automatische Vervollständigung nutzen. So etwas wie Github Copilot . Ich kann mir vorstellen, dass das nützlich ist.
Das von mir gewählte Szenario ist:
Konvertieren meines Codes von chakra-ui nach tailwindcss .
Warum?
Wenn man sich auf dem Feld umschaut, scheint es, als ob eine gute Eingabeaufforderung den Unterschied zwischen guten oder mittelmäßigen Ergebnissen ausmacht. Ich bin nicht der Beste darin, aber ich habe ein wenig recherchiert und mein Bestes gegeben.
Ich habe darauf geachtet, mehrere Eingabeaufforderungen zu verwenden, um einen guten Zustand zu erreichen. Ich füge meinen Code nur dann ein, wenn es den Anschein hat, dass es nur meinen Code konvertieren soll.
Ehrlich gesagt könnte dieser Teil verbessert werden. Zwischen der Benutzeroberfläche und der Interaktion ist die Verwendung ziemlich mühsam:
Es kann einige Zeit dauern, bis der gewünschte Zustand erreicht ist
Wenn ich darüber nachdenke, was ich schreiben soll, dann auf die Antwort warte und mit dem Schreiben fertig bin, wird es ziemlich nervig, diese Arbeit zu erledigen.
Es ist inkonsistent
Es hilft nicht, dass Sie nicht immer dieselben Eingabeaufforderungen wiederverwenden können. ChatGPT weist eine gewisse Zufälligkeit auf, daher musste ich die Eingabeaufforderung jedes Mal anpassen. Das Kopieren und Einfügen einer Eingabeaufforderung, die zuvor funktionierte, hat nicht geholfen.
Es ist sehr einfach, aus dem gewünschten Zustand herauszukommen
Das oben Genannte ist in Ordnung, wenn es sich um eine einmalige Sache handelt. Aber ich habe festgestellt, dass es für die KI sehr leicht ist, nach der ersten Codekonvertierung alles zu vergessen. Ich glaube, den wiederholtesten Erfolg hatte ich dreimal. Darüber hinaus wurden völlig unabhängige Dinge zurückgegeben, beispielsweise die Erklärung, was mein Code tut.
Token ist ein ziemlich limitierender Faktor
Aufgrund des Token-Limits kann nur eine begrenzte Menge Code produziert werden. Sie können den Tokenizer hier überprüfen, um zu sehen, wie er die Token berechnet . Es ist nicht sehr benutzerfreundlich für Code. Unten sehen Sie ein Beispiel für eine seiner Ausgaben. Jede unterschiedliche Farbe stellt einen Token dar.
Aus diesem Grund muss ich die Konvertierung in mehrere Schritte aufteilen. Andernfalls bleibt die Generation mittendrin stehen. Meistens funktioniert es nicht, ihm zu sagen, er solle fortfahren. In Kombination mit den oben genannten Punkten wird dies schnell zu einer lästigen Pflicht.
Alles in allem habe ich das Gefühl, dass ich kein Englisch schreiben möchte. Wenn ich schon etwas schreiben muss, schreibe ich lieber direkt Code, der funktioniert.
Ich kann mir vorstellen, dass schnelles Engineering eine Schlüsselkompetenz für die Zukunft sein wird. Ähnlich wie das Wissen, wie man sucht, eine Schlüsselkompetenz in der heutigen Welt ist.
Trotz all der Arbeit, die es erforderte, hat ChatGPT einen ziemlich beeindruckenden Code ausgegeben. Hier ein Vergleich zwischen Original und Ergebnis:
Wie Sie sehen, hat es seine Arbeit recht gut gemacht.
Das gute
Die Struktur wird recht gut rübergebracht
Abgesehen von den Details ist die HTML-Struktur dem Original recht ähnlich. Die Abstände sind verändert, aber das Gesamtlayout bleibt erhalten.
Der Textinhalt ändert sich nicht
Der Inhalt selbst wurde gut verarbeitet. Obwohl ich alle noch einmal überprüfen musste, wurde nichts davon geändert. Die einzige Ausnahme bilden diejenigen, die von JS abgeleitet sind.
Das Schlechte
Es gab zufällige Klassen
Es gibt viele Klassen, die nichts bewirken. Einige wurden geändert, andere waren ungültige Rückenwindklassen.
Es gibt viele kleine Unterschiede
Die Benutzeroberfläche sah aus, als ob gerade eine Bibliothek aktualisiert worden wäre und jemand vergessen hätte, den Code zu migrieren. In diesem Fall liegt es daran, dass ChatGPT die Werte der Klassen zufällig geändert hat. Zum Beispiel ein padding
von 3 auf 4 oder eine Änderung der font-weight
von Fett auf Normal. Die Angaben waren alle falsch.
In der Hälfte der Fälle klappt es nicht
Die Screenshots oben waren diejenigen, die ich direkt vergleichen kann. In Wirklichkeit waren die Ergebnisse entweder unvollständig oder einfach so falsch, dass ich viele Änderungen vornehmen musste, damit es funktionierte. Und deshalb kann ich es nicht nebeneinander vergleichen. Es gibt einfach nichts Vergleichbares, da der Code nicht läuft.
Das Tolle daran ist, dass ich etwas habe, mit dem ich arbeiten kann. Zum Glück ist die Arbeit selbst sehr einfach. Es ist leicht, Fehler zu erkennen. Die Zuordnung zwischen den Klassen Chakra-ui und Rückenwind ist nahezu eins zu eins. Es ist nur mühsam, weil die Syntax anders ist.
Dieser Ansatz ähnelt jedoch eher der Überprüfung von PRs. Ich musste den gesamten Code durchgehen, um sicherzustellen, dass alles richtig gemacht wurde.
Es sieht auf den ersten Blick in Ordnung aus. Aber es gibt viele Fallstricke, wenn man damit arbeitet und genau aufpasst. Es bringt dieses falsche Sicherheitsgefühl mit sich, das mich ein wenig frustriert hat, als ich von all den Mängeln erfuhr.
Ein großer Teil davon ist Code, der aus anderen Codebasen interpoliert wird. Es sieht nicht schrecklich aus, aber es ist nicht das, was ich wollte.
Es gibt sogar einige alarmierende Änderungen, wie zum Beispiel die Änderung der Überschrift von h2 auf h1. Ich kann aufgrund des Inhalts nur davon ausgehen, dass dies der Fall war.
Es fühlte sich an, als hätte ein Junior-Entwickler etwas zusammengebastelt und seinen Code nicht getestet . Und jetzt muss ich es überprüfen und beheben, ohne ihnen sagen zu können, dass sie es selbst beheben sollen.
Und das ist schrecklich. Ich habe bereits die Aufgabe, PRs bei der Arbeit zu überprüfen. Jetzt muss ich es auch für meine eigenen Projekte tun? Nein danke!
Auch wenn ich nicht glaube, dass es schon annähernd so weit ist, denke ich doch, dass KI irgendwann für die Entwicklung in der Zukunft hilfreich sein wird. Ob die Antwort LLMs ist, wer weiß?
Die Token-Limits nehmen ständig zu
Ich habe lange genug damit gezögert, diesen Artikel fertigzustellen. In dieser Zeit gibt es zahlreiche Ankündigungen, dass das Token-Limit erhöht wird. Ich bin mir zwar nicht sicher, ob es öffentlich, kostenpflichtig oder was auch immer ist, aber es ist großartig zu sehen.
Mit der Zeit sollte es einfacher werden, UX zur Eingabeaufforderung zu bewegen
Mit ChatGPT-Plugins und einer besseren Integration sollten Probleme wie das Erinnern von Status und Konsistenz verbessert werden. Hoffentlich verringert sich dadurch der Aufwand, der erforderlich ist, um nützliche Ergebnisse von ChatGPT zu erhalten.
In der Zwischenzeit habe ich die andere Hälfte der Migration manuell abgeschlossen. War es schneller? Nun, wer weiß. Es fühlte sich ungefähr gleich an. Aber es fühlte sich viel besser an, es manuell zu schreiben.