
Pourcentage de soumissions par langue (à gauche) et statut (à droite).
- L'ensemble de données contient 13 916 868 vues, divisées en 4053 tâches, dont cinq n'ont aucune vue.
- 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.
«Le logiciel mange le monde », écrivait l'entrepreneur américain Mark Andreessen en 2011. Avance rapide jusqu'à ces jours - les logiciels sont utilisés dans les services financiers et les soins de santé, les smartphones et les maisons intelligentes. Même les voitures contiennent aujourd'hui plus de 100 millions de lignes de code.
Cependant, de telles quantités de code sont difficiles à déboguer, à maintenir et à mettre à jour, en particulier lorsque les entreprises cherchent à moderniser leur infrastructure logicielle héritée. En conséquence, nous sommes dans une nouvelle ère où il est important de tirer parti des technologies modernes telles que l'intelligence artificielle et le cloud hybride pour créer de nouvelles solutions capables de moderniser les processus dans le pipeline des technologies de l'information.
Aller au projet CodeNet... Un vaste ensemble de données dédié à l'enseignement de la programmation en intelligence artificielle, il se compose d'environ 14 millions d'exemples de code et d'environ 500 millions de lignes de code dans plus de 55 langages de programmation différents, des langages modernes comme C ++, Java, Python et Go aux langages hérités. comme COBOL, Pascal et Fortran.
Mais pour comprendre la signification de cet ensemble de données, nous devons d'abord remonter le temps.
La prochaine frontière de l'IA: le langage des machines
Les informaticiens s'intéressent depuis longtemps à la possibilité d'un ordinateur de programmation d'ordinateurs. L'IA peut-elle faciliter la compréhension, le développement et le déploiement de code - le langage des machines? C'est possible, mais ce n'est pas facile d'y parvenir.
Le problème vient des systèmes basés sur des règles.
Prenons une traduction dans un langage de programmation. Si c'était facile, les systèmes basés sur des règles fonctionneraient, et les premiers langages de programmation tels que COBOL auraient été transformés maintenant. Mais les langages de programmation ont un contexte. La signification de toute déclaration est contextualisée et son obtention et sa traduction, comme pour les langues humaines, sont difficiles et prennent du temps.
Plus le programme est volumineux, plus sa traduction est difficile. En langage humain, le contexte peut être limité à un paragraphe ou deux, ici le contexte peut faire référence à plusieurs bibliothèques de code. Le contexte est un défi pour l'IA.
En gros, les systèmes basés sur des règles peuvent traduire avec succès 50 à 60 pour cent d'un programme. Une partie du programme peut être assez bien traduite, le reste doit généralement être traduit à la main en utilisant des règles complexes.
Développement IA pour le code
C'est là que l'IA peut aider car elle peut agir comme des humains.
Le projet CodeNet, en particulier, peut stimuler l'innovation algorithmique pour extraire ce contexte à l'aide de modèles séquentiels, tout comme nous l'utilisons dans les langages humains pour apporter une plus grande clarté à la compréhension machine du code ainsi que le traitement machine du code.
Project CodeNet est unique pour ses échantillons de code sélectionnés dans des concours de programmation ouverts au fil des ans. Il est unique non seulement par sa taille et son échelle, mais également par la qualité des métadonnées et des annotations avec un riche ensemble d'informations, que ce soit la taille du code, la taille de la mémoire, le temps CPU ou l'état qui indique l'acceptation ou les types d'erreurs.
Plus de 90 pour cent des problèmes sont associés à une description appropriée du problème, contenant un bref énoncé du problème, la spécification du format d'entrée et de sortie. Pour plus de la moitié des problèmes de programmation (c'est-à-dire sept millions d'échantillons de code), nous avons également organisé des échantillons d'entrée et de sortie à partir de la description du problème, qui est la clé pour déterminer l'équivalence de deux échantillons de code dans différents langages, ce qui peut stimuler le renforcement. méthodes d'apprentissage pour la traduction de code.
Nous les fournissons dans le cadre de l'ensemble de données - une fonctionnalité pratique de Project CodeNet. Les utilisateurs peuvent exécuter les exemples de code hébergé pour extraire des métadonnées supplémentaires et valider la sortie des modèles d'IA génératifs. Cela permettra aux chercheurs de programmer l'équivalence d'intention lors de la traduction d'un langage de programmation à un autre.
Les métadonnées riches et la variété d'exemples de code et les problèmes qu'ils résolvent ouvrent Project CodeNet à une multitude de cas d'utilisation. L'ensemble de données peut être utilisé pour rechercher du code et trouver des copies. Les exemples de code dans Project CodeNet sont marqués d'un statut d'acceptation, et nous pouvons explorer les techniques d'intelligence artificielle pour distinguer le code correct du code de problème.
Les métadonnées du projet CodeNet vous permettent également de suivre l'évolution d'une vue de problème vers une vue acceptée, qui peut être utilisée pour en savoir plus sur la correction automatique du code. Chaque échantillon de code est étiqueté avec le temps d'exécution du processeur et la taille de la mémoire, ce qui est utile pour les études de régression et les prédictions.
Compte tenu de l'abondance de programmes écrits dans de nombreuses langues, nous pensons que Project CodeNet peut servir de jeu de données de référence pour la traduction de la source à la source et faire pour l'IA et coder ce que le jeu de données ImageNet a fait pour la vision par ordinateur il y a de nombreuses années.
La mise à niveau et la maintenance de l'infrastructure logicielle sont également importantes d'un point de vue commercial. Nous en avons parlé l'année dernière quand IBM a annoncé plusieurs de nouvelles fonctionnalités , notamment IBM WatsonAIOps et Accelerator pour la modernisation des applications qui automatisent le pipeline des technologies de l'information.
Par exemple, un grand client automobile a demandé à IBM de l'aider à mettre à niveau un actif de 200 millions de dollars de 3 500 fichiers Java multi-générations. Ces fichiers se composaient de plus d'un million de lignes de code développées en dix ans à l'aide de la technologie Java multigénérationnelle.
Il s'agissait d'un code d'application complexe et monolithique qui ne convenait pas aux environnements cloud. En appliquant notre pile IA au code, nous avons réduit notre processus métier de migration de code d'un an à quatre semaines, modernisé et construit plus de 25 nouveaux microservices cloud en refactorisant le code d'application monolithique hérité.
Notre équipe est fière de fournir aux chercheurs et aux développeurs un ensemble de données et un ensemble de technologies faciles à utiliser et à comprendre, tout en aidant à concevoir des algorithmes qui piloteront l'IA pour le code. Nous espérons que le projet CodeNet apportera une valeur commerciale à mesure que les entreprises entreprendront leur aventure informatique.
Ouvrez Project CodeNet sur GitHub et lisez préimpression .

J'avais des cordes, mais maintenant je suis libre. Il n'y a pas de cordes sur moi