Heim >Technologie-Peripheriegeräte >KI >Ist es ein Erfolg oder eine Schwächung? Der Streit zwischen KI-Codegenerierungstools und Programmierern
Sind Programmierer dazu bestimmt, ersetzt zu werden? Diese Frage beschäftigt die Computerprogrammierer-Community, seit das groß angelegte Sprachmodell GPT-3 von OpenAI seine erstaunliche Fähigkeit unter Beweis gestellt hat, HTML-Websites auf der Grundlage einfacher schriftlicher Anweisungen zu erstellen.
In den Monaten seitdem sind automatische Programmierassistenten entstanden, die einfache, aber vollständige Computerprogramme auf der Grundlage natürlichsprachlicher Beschreibungen (gesprochene oder geschriebene menschliche Sprache) schreiben und die Arbeit von Programmierern beschleunigen können. Inwieweit wird KI die Arbeit von Programmierern ersetzen oder verbessern?
IEEE Spectrum hat einige Experten dazu befragt, und die schlechte Nachricht ist, dass die Programmierung möglicherweise ersetzt werden wird. Aber die gute Nachricht ist, dass es so aussieht, als ob Computerprogrammierung und Softwareentwicklung auf absehbare Zeit ein Beruf bleiben werden, bei dem der Mensch stark involviert ist. Gleichzeitig beschleunigt die KI-gestützte automatische Codegenerierung die Softwareentwicklung zunehmend, da mehr Code in kürzerer Zeit geschrieben werden kann.
Vasi Philomin, Vizepräsident von Amazon AI Services, sagte: „Ich glaube nicht, dass KI menschliche Entwickler vollständig ersetzen wird. KI-Tools können Programmierer von täglichen Aufgaben befreien, aber die kreative Arbeit der Computerprogrammierung wird weiterhin bestehen.“ "
Wenn jemand in 10 Jahren Entwickler werden möchte, muss er nicht unbedingt eine Programmiersprache lernen. Stattdessen müssen sie die Semantik, Konzepte und logischen Abläufe bei der Erstellung von Computerprogrammen verstehen, um die Softwareentwicklung einer breiteren Bevölkerung zugänglich zu machen.
Als in den 1940er Jahren die elektronische Computerprogrammierung begann, schrieben Programmierer mit digitalem Maschinencode. Erst Mitte der 1950er Jahre entwickelten Grace Hopper, eine angesehene amerikanische Informatikerin, und ihr Team bei der Remington Rand Company FLOW-MATIC, das es Programmierern ermöglichte, Programme mit einem begrenzten englischen Vokabular zu schreiben.
Seitdem sind Programmiersprachen immer effizienter geworden und Programmierer sind bei ihrer Arbeit effizienter geworden.
Von KI geschriebener Code steht an der Spitze umfassenderer Veränderungen und ermöglicht es Menschen, Software zu schreiben, ohne überhaupt programmieren zu müssen. Mittlerweile gibt es KI-Entwicklungsplattformen ohne Code wie Akkio, die es Menschen ermöglichen, Modelle für maschinelles Lernen mit einfacher Drag-and-Drop- und Click-of-Button-Funktionalität zu erstellen. Die Power Platform von Microsoft umfasst eine Reihe von Low-Code-Produkten, die es Benutzern ermöglichen, einfache Anwendungen einfach durch ihre Beschreibung zu generieren.
Im Juni dieses Jahres brachte Amazon eine Vorschauversion von CodeWhisperer auf den Markt, einem auf maschinellem Lernen basierenden Programmierassistenten, der dem Copilot von GitHub ähnelt. Beide Tools basieren auf großen Sprachmodellen (LLMs), die auf massiven Codebasen trainiert wurden. Während Programmierer Code schreiben, bieten sowohl CodeWhisperer als auch Copilot Vorschläge zur automatischen Vervollständigung und schlagen ausführbare Anweisungen vor, die auf einfachen Phrasen in natürlicher Sprache basieren.
Vor ein paar Tagen führte GitHub eine Umfrage unter 2.000 Entwicklern durch und stellte fest, dass Copilot die Zeit für einige Codierungsaufgaben halbierte und die Gesamtzufriedenheit der Entwickler mit ihrer Arbeit verbesserte.
Aber wenn Sie über die automatische Vervollständigung hinausgehen möchten, liegt das Problem darin, dem Computer die Absicht beizubringen. Softwareanforderungen sind oft vage und natürliche Sprache ist bekanntermaßen ungenau.
Diffblue, ein britisches Startup für künstliche Intelligenz, setzt sich dafür ein, KI zur Überprüfung und Korrektur von Code einzusetzen. Peter Schrammel, einer seiner Mitbegründer, sagte, dass man die Unklarheiten in den englischen Schreibstandards lösen muss Nehmen Sie einige schrittweise Verbesserungen vor. Starten Sie einen Dialog zwischen Menschen und Maschinen.
Um diese Probleme zu lösen, haben Microsoft-Forscher kürzlich vorgeschlagen, der LLM-basierten Codegenerierung einen Feedback-Mechanismus hinzuzufügen, sodass der Computer den Programmierer auffordert, etwaige Unklarheiten zu klären, bevor er Code generiert. Das interaktive System von Microsoft namens TiCoder verfeinert und formalisiert die Benutzerabsicht, indem es eine sogenannte „testgetriebene Benutzerabsichtsformalisierung“ (TDUIF) generiert.
TDUIF versucht, iteratives Feedback zu nutzen, um die algorithmische Absicht des Programmierers zu bestimmen und dann Code zu generieren, der mit der geäußerten Absicht des Programmierers übereinstimmt. Die folgende Abbildung zeigt den Workflow von TDUIF.
Paper -Adresse: https://arxiv.org/abs/2208.05950
according zu verwandten Zeitungen Die Genauigkeit des automatisch generierten Codes wurde von 48 % auf 85 % verbessert. MBPP wurde zur Evaluierung von maschinengeneriertem Code entwickelt und besteht aus etwa 1.000 Crowdsourcing-Python-Programmierproblemen, die von Einsteigerprogrammierern gelöst werden müssen.
Eine Codeeinheit kann Hunderte von Zeilen lang sein und ist der kleinste Teil eines Programms, der unabhängig verwaltet und ausgeführt werden kann. Eine Suite von Unit-Tests besteht normalerweise aus Dutzenden von Unit-Tests, von denen jeder 10 bis 20 Codezeilen enthält. Sie prüfen, ob die Unit die erwartete Leistung erbringt, sodass das Programm wie erwartet funktioniert, wenn Sie die Units übereinander stapeln.
Unit-Tests sind sehr nützlich, um einzelne Funktionen zu debuggen und Fehler beim manuellen Ändern von Code zu erkennen. Darüber hinaus dient ein Komponententest als Spezifikation für eine Codeeinheit und dient als Anleitung für Programmierer beim Schreiben von sauberem, fehlerfreiem Code. Obwohl nicht viele Programmierer eine echte testgetriebene Entwicklung verfolgen, bei der zuerst Unit-Tests geschrieben werden, werden Unit-Tests oft zusammen mit Units geschrieben.
Laut den Ergebnissen der Diffblue Developer Survey 2019 verbringen Entwickler etwa 35 % ihrer Zeit damit, Qualitätskontrolltests zu schreiben, anstatt für Produktionszwecke zu schreiben Daher kann die Automatisierung dieses Teils der Arbeit die Produktivität erheblich steigern.
Gleichzeitig können Copilot, CodeWhisperer und andere AI-Programmierassistentenpakete als interaktive Autovervollständigungstools zum Schreiben von Unit-Tests verwendet werden. Programmierer erhalten Codierungsvorschläge und wählen diejenigen aus, die am besten funktionieren.
Im Februar dieses Jahres nutzte DeepMind AlphaCode weiterhin für die vollautomatische Codeproduktion. AlphaCode ist ein umfangreiches Sprachmodell, das einfache Computerprogramme basierend auf Anweisungen in natürlicher Sprache schreiben kann. Es verwendet eine Encoder-Decoder-Transformer-Architektur, die zunächst eine Beschreibung des Problems in natürlicher Sprache codiert und dann den resultierenden Vektor in den für die Lösung erforderlichen Code decodiert.
AlphaCode-Übersicht. Bildquelle: https://arxiv.org/pdf/2203.07814.pdf
Das Modell wurde zunächst auf dem GitHub-Repository trainiert, bis es in der Lage war, Code zu generieren, der vernünftig aussah. Zur Feinabstimmung des Modells verwendete DeepMind 15.000 Paare von Problembeschreibungen in natürlicher Sprache und erfolgreiche Codelösungen aus früheren Programmierwettbewerben, um einen speziellen Datensatz mit Eingabe-Ausgabe-Beispielen zu erstellen.
Sobald AlphaCode trainiert und verfeinert ist, kann es auf noch nie dagewesene Probleme getestet werden. Der letzte Schritt besteht darin, eine große Anzahl von Lösungen zu generieren und dann mithilfe eines Filteralgorithmus die beste auszuwählen. Oriol Vinyals, Leiter des Deep-Learning-Teams von DeepMind, glaubt, dass sie viele verschiedene Programme erstellt haben, indem sie das Sprachmodell fast eine Million Mal abgetastet haben.
Um den Stichprobenauswahlprozess zu optimieren, verwendet DeepMind einen Clustering-Algorithmus, um Lösungen zu gruppieren. Der Clustering-Prozess tendiert dazu, praktikable Lösungen zu gruppieren, was es einfacher macht, eine kleine Teilmenge von Kandidaten zu finden, die wahrscheinlich so gut funktionieren, wie der Programmierer sie geschrieben hat.
Um das System zu testen, reichte DeepMind 10 von AlphaCode geschriebene Programme bei einem menschlichen Programmierwettbewerb auf der beliebten Codeforces-Plattform ein, wobei die Lösungen unter den besten 54 % landeten.
In einem aktuellen Interview fragte Oriol Vinyals rhetorisch: „Um ein Programm zu generieren, schreibt man es einfach in natürlicher Sprache ohne Codierung, und dann kommt am anderen Ende die Lösung heraus?“ Vinyals und andere sind vorsichtig , mit der Begründung, dass die Erreichung dieses Ziels einige Zeit, möglicherweise Jahrzehnte, in Anspruch nehmen wird.
Der Gründer und CEO von Landing AI, Andrew Ng, ein bekannter KI-Wissenschaftler, sagte, dass wir noch weit davon entfernt sind, dass ein Mensch einem Computer sagen kann, er solle beliebig komplexe Computerprogramme schreiben und die Codierung automatisch abschließen.
Wenn man jedoch bedenkt, wie schnell die Generierung von KI-Code in nur wenigen Jahren vorangekommen ist, scheint es ein unvermeidlicher evolutionärer Trend zu sein, dass KI-Systeme irgendwann in der Lage sein werden, Code auf der Grundlage natürlichsprachlicher Anweisungen zu schreiben. Und handprogrammierte Softwareprogramme werden immer mehr wie handgestrickte Pullover.
Um Computern Anweisungen in natürlicher Sprache bereitzustellen, müssen Entwickler noch einige logische und funktionale Konzepte verstehen und Dinge strukturieren. Auch wenn ein Entwickler keine bestimmte Programmiersprache lernt oder keinen Computercode schreibt, muss er dennoch die Grundlagen des Programmierens erlernen. Dies wiederum wird es mehr Programmierern ermöglichen, immer vielfältigere Software zu erstellen.
Vasi Philomin sagte, er glaube nicht, dass KI menschliche Entwickler ersetzen werde. KI kann die untergeordnete Routinearbeit, die Entwickler erledigen müssen, eliminieren und ihnen ermöglichen, sich auf höherwertige Dinge zu konzentrieren.
Peter Schrammel stimmt auch zu, dass die automatische Codegenerierung durch KI es Softwareentwicklern ermöglicht, sich auf schwierigere und anspruchsvollere Aufgaben zu konzentrieren. Er fügte jedoch hinzu, dass zumindest bestätigt werden müsse, ob das, was die Maschine verstehe, menschliche Absicht sei.
Er sagte auch, dass Softwareentwickler ihre Jobs nicht verlieren werden, weil automatisierte Codierungstools sie ersetzen, und dass es immer mehr Software zu schreiben geben wird.
Das obige ist der detaillierte Inhalt vonIst es ein Erfolg oder eine Schwächung? Der Streit zwischen KI-Codegenerierungstools und Programmierern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!