CodeNet, un projet IBM pour les systèmes d'apprentissage automatique 

Logo IBM

IBM a dévoilé récemment son nouveau projet appelé "CodeNet" lequel vise à fournir aux chercheurs un ensemble de données pour expérimenter l'utilisation de techniques 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'échantillons de code qui résolvent 4053 problèmes de programmation courants. Au total, la collection contient environ 500 millions de lignes de code et couvre 55 langages de programmation, les deux langages modernes tels que C ++, Java, Python et Go, ainsi que l'héritage, y compris COBOL, Pascal et FORTRAN.

«Les logiciels mangent le monde», écrivait le célèbre homme d'affaires américain Marc Andreessen en 2011. Avance rapide jusqu'à aujourd'hui: les logiciels se retrouvent dans les services financiers et la santé, les smartphones et les maisons intelligentes. Même les voitures ont maintenant plus de 100 millions de lignes de code.

Les développements du projet sont publiés sous la licence Apache 2.0 et les ensembles de données devraient être publiés dans le domaine public.

Les exemples sont annotés et implémentent des algorithmes identiques dans différents langages de programmation. L'ensemble proposé est censé aider à former des systèmes d'apprentissage automatique et à développer des innovations dans le domaine de la traduction et de l'analyse automatiques de codes, par analogie avec la manière dont la base de données ImageNet d'images annotées a aidé au développement de systèmes de reconnaissance d'images et de vision artificielle. Divers concours de programmation sont mentionnés comme l'une des principales sources de construction de la collection.

Le projet CodeNet peut spécifiquement conduire l'innovation algorithmique pour extraire ce contexte avec des modèles séquence par séquence, un peu comme ce que nous avons appliqué dans les langages humains, pour faire une brèche plus significative dans la compréhension du code par la machine plutôt que dans le traitement du code.

Contrairement aux traducteurs traditionnels basés sur des règles de traduction, les systèmes d'apprentissage automatique peuvent capturer et prendre en compte le contexte d'utilisation du code. Lors de la conversion d'un langage de programmation à un autre, le contexte est tout aussi important que lors de la traduction d'un langage humain à un autre. C'est le manque de prise en compte du contexte qui empêche le code de se convertir à partir de langages hérités comme COBOL.

La présence d'une large base d'implémentations d'algorithmes dans divers langages aidera à créer des systèmes d'apprentissage automatique universels qui, au lieu de la traduction en direct entre des langages spécifiques, manipuleront une représentation plus abstraite du code, indépendamment des langages de programmation spécifiques.

Un tel système peut être utilisé comme un traducteur qui traduit le code transmis dans l'une des langues prises en charge dans sa représentation abstraite interne, à partir de laquelle du code dans de nombreuses langues peut être généré.

Y compris le système, vous pouvez effectuer des transformations bidirectionnelles. Par exemple, les banques et les agences gouvernementales continuent d'utiliser les anciens projets COBOL. Un traducteur d'apprentissage automatique peut convertir du code COBOL en représentation Java et éventuellement traduire un extrait de code Java en code COBOL.

En plus de la traduction entre les langues, les domaines d'application CodeNet sont mentionnés comme la création de systèmes de recherche de code intelligents et l'automatisation de la détection de clones, ainsi que le développement d'optimiseurs et de systèmes de correction automatique de code.

En particulier, Les exemples présentés dans CodeNet sont fournis avec des métadonnées décrivant les résultats des tests de performance, la taille du programme résultant, la consommation de mémoire et l'état qui permet de distinguer le code correct du code erroné (pour distinguer le code correct du code incorrect, des exemples avec des erreurs sont spécialement inclus dans la collection, dont la part est de 29,5 , XNUMX%).

Un système d'apprentissage automatique peut prendre en compte 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 n'est pas implémenté de manière optimale dans le code transmis ou contient des erreurs).

Enfin Si vous souhaitez en savoir plus sur CodeNet, vous pouvez vérifier les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.