IBM hat CodeNet für maschinelles Lernen ins Leben gerufen, um Code zu übersetzen und zu überprüfen.

IBM hat die Initiative CodeNet vorgestellt, die Forschern einen Datensatz bereitstellt, mit dem sie experimentieren können, um maschinelles Lernen zur Erstellung von Übersetzern zwischen Programmiersprachen sowie Code-Generatoren und -Analysatoren einzusetzen. CodeNet umfasst eine Sammlung von 14 Millionen Codebeispielen, die 4053 gängige Programmierprobleme lösen. Insgesamt umfasst die Sammlung etwa 500 Millionen Codezeilen und deckt 55 Programmiersprachen ab, sowohl moderne Sprachen wie C++, Java, Python und Go als auch ältere wie COBOL, Pascal und FORTRAN. Die Ergebnisse des Projekts werden unter der Lizenz Apache 2.0 verbreitet, und die Datensätze sollen als gemeinfrei zur Verfügung gestellt werden.

Die bereitgestellten Beispiele sind mit Kommentaren versehen und implementieren identische Algorithmen in verschiedenen Programmiersprachen. Es wird angenommen, dass das angebotene Set zur Schulung von Machine-Learning-Systemen und zur Förderung von Innovationen im Bereich der Übersetzung und maschinellen Codeanalyse beitragen wird, ähnlich wie das annotierte Bilddatenbank-Set ImageNet zur Entwicklung von Mustererkennungssystemen und maschinellem Sehen beigetragen hat. Als eine der Hauptquellen zur Bildung der Sammlung werden verschiedene Programmierwettbewerbe genannt.

Im Gegensatz zu traditionellen Übersetzern, die auf Regeltransformationen basieren, können Machine-Learning-Systeme den Kontext der Nutzung des Codes erfassen und berücksichtigen. Bei der Umwandlung von einer Programmiersprache in eine andere ist der Kontext ebenso wichtig wie bei der Übersetzung von einer menschlichen Sprache in eine andere. Genau das Fehlen der Kontextberücksichtigung erschwert die Umwandlung von Codes aus veralteten Sprachen wie COBOL.

Eine umfangreiche Sammlung von Implementierungen von Algorithmen in verschiedenen Programmiersprachen wird die Entwicklung universeller Systeme für maschinelles Lernen unterstützen. Anstelle einer direkten Übersetzung zwischen speziellen Sprachen wird hier mit einer abstrakteren Darstellung von Code gearbeitet, die unabhängig von bestimmten Programmiersprachen ist. Ein solches System kann als Übersetzer fungieren, der den übermittelten Code in eine interne abstrakte Darstellung überträgt, aus der dann Code in mehreren Programmiersprachen generiert werden kann.

Das System wird auch bidirektionale Transformationsmöglichkeiten bieten. Beispielsweise werden in Banken und öffentlichen Einrichtungen nach wie vor Projekte in der veralteten Programmiersprache COBOL verwendet. Ein auf maschinellem Lernen basierender Übersetzer kann COBOL-Code in eine Java-Darstellung umwandeln und bei Bedarf auch einen Teil von Java zurück in COBOL-Code übersetzen.

Neben der Übertragung zwischen Sprachen werden im CodeNet Anwendungsbereiche wie die Erstellung intelligenter Code-Suchsysteme und die Automatisierung der Klonidentifizierung erwähnt, sowie die Entwicklung von Optimierern und Systemen zur automatischen Korrektur von Code. Insbesondere sind die im CodeNet vorgestellten Beispiele mit Metadaten versehen, die die Testergebnisse zur Leistung, die resultierende Programmgröße, den Speicherverbrauch und den Zustand beschreiben, der es ermöglicht, korrekten Code von fehlerhaftem Code zu unterscheiden (um den richtigen Code von fehlerhaftem zu unterscheiden, sind Abschnitte mit Fehlern speziell in die Sammlung aufgenommen, deren Anteil 29,5 % beträgt). Das maschinelle Lernsystem kann diese Metadaten berücksichtigen, um den optimalsten Code zu generieren oder um Regressionen im analysierten Code zu identifizieren (das System kann verstehen, dass der übergebene Code nicht optimal implementiert oder fehlerhaft ist).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster