Prozentsatz der Einsendungen nach Sprache (links) und Status (rechts).
- Der Datensatz enthält 13.916.868 Ansichten, unterteilt in 4053 Aufgaben, von denen fünf keine Ansichten haben.
- Google Code Jam 2008 2020 .
- 53,6% (7 460 588) , 29,5% « », - .
- 55 ; 95% C ++, Python, Java, C, Ruby C#.
- C++ — 8 008 527 (57% ), 4 353 049.
" Software frisst die Welt ", schrieb der amerikanische Unternehmer Mark Andreessen 2011. Schneller Vorlauf bis heute - Software wird in Finanzdienstleistungen und im Gesundheitswesen, in Smartphones und Smart Homes eingesetzt. Selbst Autos enthalten heute über 100 Millionen Codezeilen.
Es ist jedoch schwierig, so große Mengen an Code zu debuggen, zu warten und zu aktualisieren, insbesondere wenn Unternehmen ihre ältere Software-Infrastruktur modernisieren möchten. Infolgedessen befinden wir uns in einer neuen Ära, in der es wichtig ist, moderne Technologien wie künstliche Intelligenz und Hybrid Cloud zu nutzen, um neue Lösungen zu entwickeln, mit denen die Prozesse in der Informationstechnologie-Pipeline modernisiert werden können.
Gehen Sie zu Project CodeNet... Es handelt sich um einen großen Datensatz, der sich dem Unterrichten der Programmierung künstlicher Intelligenz widmet. Es besteht aus ungefähr 14 Millionen Codebeispielen und ungefähr 500 Millionen Codezeilen in über 55 verschiedenen Programmiersprachen, von modernen Sprachen wie C ++, Java, Python und Go bis hin zu Legacy-Sprachen als COBOL, Pascal und Fortran.
Um die Bedeutung dieses Datensatzes zu verstehen, müssen wir zunächst in die Vergangenheit zurückblicken.
Die nächste Grenze der KI: die Sprache der Maschinen
Informatiker haben sich seit langem für die Möglichkeit eines Computers interessiert, Computer zu programmieren. Kann KI das Verstehen, Entwickeln und Bereitstellen von Code - der Sprache von Maschinen - erleichtern? Es ist möglich, aber es ist nicht einfach, es zu erreichen.
Das Problem liegt bei regelbasierten Systemen.
Nehmen wir eine Übersetzung in eine Programmiersprache. Wenn es einfach wäre, würden regelbasierte Systeme funktionieren und frühe Programmiersprachen wie COBOL wären inzwischen transformiert worden. Aber Programmiersprachen haben einen Kontext. Die Bedeutung einer Aussage ist kontextualisiert, und es ist schwierig und zeitaufwändig, sie wie bei menschlichen Sprachen zu erhalten und zu übersetzen.
Je größer das Programm wird, desto schwieriger ist die Übersetzung. In der menschlichen Sprache kann der Kontext auf einen Absatz oder so beschränkt sein, hier kann sich der Kontext auf mehrere Codebibliotheken beziehen. Der Kontext ist eine Herausforderung für die KI.
Grob gesagt können regelbasierte Systeme 50 bis 60 Prozent eines Programms erfolgreich übersetzen. Ein Teil des Programms kann recht gut übersetzt werden, der Rest muss normalerweise von Hand nach komplexen Regeln übersetzt werden.
KI-Entwicklung für Code
Hier kann KI helfen, weil sie sich wie Menschen verhalten kann.
Insbesondere Project CodeNet kann algorithmische Innovationen anregen, um diesen Kontext mithilfe von sequentiellen Modellen zu extrahieren, genau wie wir es in menschlichen Sprachen verwenden, um das maschinelle Verständnis von Code sowie die maschinelle Verarbeitung von Code klarer zu gestalten.
Project CodeNet ist einzigartig für seine Codebeispiele, die im Laufe der Jahre in offenen Programmierwettbewerben ausgewählt wurden. Es ist nicht nur in Größe und Umfang einzigartig, sondern auch in der Qualität von Metadaten und Anmerkungen mit einer Vielzahl von Informationen, sei es Codegröße, Speichergröße, CPU-Zeit oder Status, die auf Akzeptanz oder Fehlertypen hinweisen.
Mehr als 90 Prozent der Probleme sind mit einer angemessenen Beschreibung des Problems verbunden, die eine kurze Beschreibung des Problems sowie die Angabe des Eingabe- und Ausgabeformats enthält. Für mehr als die Hälfte der Programmierprobleme (dh sieben Millionen Codebeispiele) haben wir auch Eingabe- und Ausgabebeispiele aus der Problembeschreibung kuratiert. Dies ist der Schlüssel zur Bestimmung der Äquivalenz von zwei Codebeispielen in verschiedenen Sprachen, die die Verstärkung stimulieren können Lernmethoden zum Übersetzen von Code.
Wir stellen sie als Teil des Datensatzes zur Verfügung - eine praktische Funktion von Project CodeNet. Benutzer können die gehosteten Codebeispiele ausführen, um zusätzliche Metadaten zu extrahieren und die Ausgabe generativer AI-Modelle zu validieren. Auf diese Weise können Forscher die Gleichwertigkeit von Absichten bei der Übersetzung einer Programmiersprache in eine andere programmieren.
Die umfangreichen Metadaten und die Vielfalt der Codebeispiele sowie die Probleme, die sie lösen, öffnen Project CodeNet für eine Vielzahl von Anwendungsfällen. Der Datensatz kann verwendet werden, um nach Code zu suchen und Kopien zu finden. Die Codebeispiele in Project CodeNet sind mit einem Akzeptanzstatus gekennzeichnet, und wir können Techniken der künstlichen Intelligenz untersuchen, um korrekten Code von Problemcode zu unterscheiden.
Mit Project CodeNet-Metadaten können Sie auch die Entwicklung einer Problemansicht zu einer akzeptierten Ansicht verfolgen, anhand derer Sie Informationen zur automatischen Codekorrektur erhalten. Jedes Codebeispiel ist mit CPU-Laufzeit und Speichergröße gekennzeichnet, was für Regressionsstudien und Vorhersagen nützlich ist.
Angesichts der Fülle von Programmen, die in vielen Sprachen geschrieben wurden, glauben wir, dass Project CodeNet als Referenzdatensatz für die Übersetzung von Quelle zu Quelle dienen und für KI und Code das tun kann, was der ImageNet-Datensatz vor vielen Jahren für Computer Vision getan hat.
Die Aktualisierung und Wartung der Software-Infrastruktur ist auch aus geschäftlicher Sicht wichtig . Wir haben dies letztes Jahr angesprochen, als IBM mehrere angekündigt hat neue Funktionen , einschließlich IBM WatsonAIOps und Accelerator zur Modernisierung von Anwendungen, die die Pipeline der Informationstechnologie automatisieren.
Beispielsweise bat ein großer Automobilkunde IBM, bei der Aktualisierung eines 200-Millionen-Dollar-Assets von 3.500 Java-Dateien mit mehreren Generationen mitzuwirken. Diese Dateien bestanden aus über einer Million Codezeilen, die über einen Zeitraum von zehn Jahren mithilfe der generationenübergreifenden Java-Technologie entwickelt wurden.
Es war komplexer, monolithischer Anwendungscode, der nicht für Cloud-Umgebungen geeignet war. Durch die Anwendung unseres AI-Stacks auf Code haben wir unseren jahrelangen Geschäftsprozess für die Codemigration auf vier Wochen reduziert, über 25 neue Cloud-Mikrodienste modernisiert und aufgebaut, indem wir den alten monolithischen Anwendungscode überarbeitet haben.
Unser Team ist stolz darauf, Forschern und Entwicklern einen Datensatz und eine Reihe von Technologien zur Verfügung zu stellen, die einfach zu verwenden und zu verstehen sind, und dabei zu helfen, Algorithmen zu entwickeln, die die KI für Code vorantreiben. Wir hoffen, dass Project CodeNet einen geschäftlichen Mehrwert bietet, wenn Unternehmen ihre IT-Reise antreten.
Öffnen Sie Project CodeNet auf GitHub und lesen Sie Vordruck .
Ich hatte Saiten, aber jetzt bin ich frei. Es gibt keine Fäden an mir