IBM a ouvert CodeNet pour les systèmes d'apprentissage automatique, traduisant et vérifiant le code.

La société IBM a présenté l'initiative CodeNet, axée sur la fourniture aux chercheurs d'un ensemble de données permettant d'expérimenter l'application de méthodes d'apprentissage automatique pour créer des traducteurs d'un langage de programmation à un autre, ainsi que des générateurs et des analyseurs de code. CodeNet comprend une collection de 14 millions d'exemples de code, résolvant 4053 problèmes de programmation classiques. Au total, la collection compte environ 500 millions de lignes de code et couvre 55 langages de programmation, allant des langages modernes comme C++, Java, Python et Go, aux langages obsolètes tels que COBOL, Pascal et FORTRAN. Les travaux du projet sont diffusés sous la licence Apache 2.0, et les ensembles de données devraient être mis à disposition dans le domaine public.

Les exemples sont accompagnés d'annotations et implémentent des algorithmes identiques dans différents langages de programmation. On suppose que l'ensemble proposé aidera à la formation de systèmes d'apprentissage automatique et au développement d'innovations dans le domaine de la traduction et de l'analyse automatique du code, à l'image de ce que la base de données d'images annotées ImageNet a fait pour le développement des systèmes de reconnaissance d'images et de vision par ordinateur. Parmi les principales sources de constitution de la collection, on cite divers concours de programmation.

Contrairement aux traducteurs traditionnels, basés sur des règles de transformation, les systèmes d'apprentissage automatique peuvent saisir et prendre en compte le contexte d'utilisation du code. Dans la transformation d'un langage de programmation à un autre, le contexte est tout aussi important que dans la traduction d'une langue humaine à une autre. C'est précisément l'absence de prise en compte du contexte qui rend difficile la transformation de code depuis des langages obsolètes comme le COBOL.

La présence d'une vaste base d'implémentations d'algorithmes dans différents langages facilitera la création de systèmes d'apprentissage automatique universels, qui, au lieu d'effectuer une traduction directe entre des langages spécifiques, manipulent une représentation plus abstraite du code, indépendamment des langages de programmation concrets. Un tel système pourrait être utilisé comme un traducteur, transformant le code transmis dans n'importe quel des langages pris en charge en sa représentation abstraite interne, à partir de laquelle le code peut ensuite être généré dans de nombreux langages.

Le système sera capable d'effectuer des transformations bidirectionnelles. Par exemple, des projets utilisant le langage obsolète COBOL continuent d'être utilisés dans les banques et les administrations publiques. Un traducteur basé sur un système d'apprentissage machine pourra convertir le code COBOL en un format Java, et, si nécessaire, traduire un extrait en Java de retour en code COBOL.

En plus de la traduction entre langages, CodeNet mentionne des domaines d'application tels que la création de systèmes intelligents de recherche de code et l'automatisation de la détection de clones, ainsi que le développement d'optimisateurs et de systèmes de correction automatique de code. En particulier, les exemples présentés dans CodeNet sont enrichis de métadonnées décrivant les résultats des tests de performance, la taille résultante du programme, la consommation de mémoire et un état permettant de distinguer le code correct du code défectueux (des exemples avec erreurs ont été spécifiquement inclus dans la collection, représentant 29,5 %). Le système d'apprentissage machine peut tenir compte de ces métadonnées pour générer le code le plus optimal ou pour détecter des régressions dans le code analysé (le système peut comprendre que l'algorithme dans le code fourni n'est pas implémenté de manière optimale ou contient des erreurs).

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster