Une "nouvelle étape importante dans la programmation compétitive" a été claironnée par la filiale britannique d'IA de Google, DeepMind, plus tôt ce mois-ci, lorsqu'elle a dévoilé AlphaCode, un système qui, selon elle, peut écrire des programmes informatiques à part entière qui se comparent favorablement au travail des humains. Le développement de logiciels a longtemps été identifié comme un domaine où l'IA peut avoir un impact significatif, et avec les avancées offertes par AlphaCode et d'autres systèmes, la perspective que des machines remplacent les codeurs humains est-elle réaliste ?
Le système AlphaCode de DeepMind a battu 54 % des participants humains à un concours de codage. (Photo de Daniel Acker/Bloomberg via Getty Images)
DeepMind dit qu'AlphaCode est capable de comprendre un problème puis d'écrire un programme qui résout ce problème. Il dit avoir testé le système contre des personnes qui ont participé à des concours de codage et a constaté que ses résultats se classent parmi les 54% des meilleurs participants humains.
"Résoudre des problèmes de programmation compétitifs est une chose très difficile à faire, qui nécessite à la fois de bonnes compétences en codage et une créativité humaine en résolution de problèmes", a déclaré Petr Mitrichev, ingénieur logiciel chez Google, qui participe à des concours de codage. "J'ai été très impressionné qu'AlphaCode puisse progresser dans ce domaine et ravi de voir comment le modèle utilise sa compréhension des instructions pour produire du code et guider son exploration aléatoire pour créer des solutions."
Avec AlphaCode affichant des progrès aussi impressionnants, Mitrichev et ses collègues pourraient être pardonnés de regarder par-dessus leurs épaules.
Connexe
IA et automatisationLa reprise après une pandémie donne aux emplois à haut risque un "sursis temporaire" de l'automatisation
Quelle est l'importance d'AlphaCode de DeepMind ?
DeepMind a utilisé une combinaison d'apprentissage automatique supervisé et non supervisé pour former les modèles d'IA qui sous-tendent AlphaCode. Le système a d'abord absorbé 715 gigaoctets de données du référentiel de codage GitHub, avant que l'équipe DeepMind ne l'ajuste à l'aide d'une base de données qu'elle avait créée à partir d'énoncés de problèmes, de cas de test et de soumissions - correctes et incorrectes - à partir de concours de codage.
Des données, des idées et des analyses qui vous sont livréesVoir toutes les newsletters Par l'équipe Tech MonitorInscrivez-vous à nos newslettersLorsqu'un nouveau problème lui est présenté, AlphaCode analyse les informations dont il dispose, propose des milliers ou, dans certains cas, des millions de solutions, puis les filtre jusqu'aux dix meilleures qu'il soumet au concours. Si l'un d'entre eux s'avère correct, l'équipe le considère comme un succès.
Contenu de nos partenaires
Les banques en place doivent se transformer rapidement, ou ne pas profiter des avantages de l'open banking
Tirer parti du cloud et de l'expertise pour optimiser les engagements de l'intégration à la conclusion
Comment les entreprises peuvent mieux se préparer à la numérisation financière
Ce processus distingue AlphaCode des autres outils de codage de l'IA, tels que l'OpenAI Codex, qui sont capables de générer des extraits de code spécifiques sur commande. "Il s'agit d'une percée dans le sens où ils résolvent des problèmes de programmation beaucoup plus complexes que les systèmes précédents", déclare le professeur Ernest Davis, du département d'informatique de l'Université de New York.
Mais, selon le professeur Davis, ce n'est pas sans limites. Étant donné que sa méthode implique de trouver autant de solutions potentielles à un problème (avant de les filtrer pour trouver les meilleures), la quantité de données d'apprentissage nécessaires pour écrire des programmes plus complexes est susceptible d'être énorme. "Il est raisonnable de s'attendre à ce que le nombre d'échantillons requis augmente de façon exponentielle avec la durée du programme", déclare le professeur Davis. Il dépend également de la pertinence de ses données de formation pour proposer des solutions précises, ce qu'un programmeur humain pourrait contourner même s'il n'avait aucune connaissance du sujet.
AlphaCode est une contribution utile à la recherche sur l'IA, mais le codage de l'IA au niveau d'un humain qualifié est encore à des années-lumière.
Dzmitry Bahdanau, ServiceNow
Et par rapport aux autres réalisations d'IA de DeepMind, AlphaCode est un succès relativement mineur, affirme Dzmitry Bahdanau, chercheur scientifique chez ServiceNow, fournisseur de logiciels de flux de travail, qui a étudié le fonctionnement d'AlphaCode. "À l'heure actuelle, AlphaCode est une contribution utile à la recherche sur l'IA, mais le codage de l'IA au niveau d'un humain qualifié est encore à des années-lumière", dit-il. "Ce n'est pas AlphaGo pour battre les humains, ni AlphaFold pour révolutionner tout un domaine scientifique."
L'IA remplacera-t-elle les programmeurs humains ?
Même si une IA telle qu'AlphaCode pouvait surmonter ces limitations, les conditions dans lesquelles elle a effectué des tests sont très différentes du monde du développement de logiciels professionnels, déclare le Dr Peter Schrammel, chargé de cours en informatique à l'Université du Sussex et CTO et co-fondateur de la société de logiciels Diffblue. "Les défis de codage sont relativement spécifiques car les affectations doivent être aussi non ambiguës que possible afin de pouvoir comparer les solutions de manière équitable", explique-t-il. "La description est assez bien structurée et les exemples sont donnés de manière cohérente."
Le développement dans le monde réel est "une bête différente", affirme-t-il. "Les exigences sont vagues et déterminées par itérations incrémentielles", dit-il. "Les développeurs de logiciels négocient les exigences lors de conversations avec les parties prenantes, implémentent une première version, puis en font la démonstration et discutent avec les parties prenantes de ce qu'il faut améliorer pour la prochaine itération." Alors que dans un défi de codage "on sait parfaitement quelles sont les exigences", déclare le Dr Schrammel, "dans le développement de logiciels du monde réel, extraire les exigences des têtes des parties prenantes est le principal défi".
Bahdanau est d'accord et dit qu'il ne croit pas que beaucoup de gens dans l'industrie "considérent sérieusement [l'IA remplaçant les programmeurs humains] comme un objectif". "Les humains comprennent le contexte plus large, le véritable objectif du monde réel pour lequel le code doit être écrit", dit-il. "AlphaCode, Codex et d'autres ne sont que des méthodes statistiques très avancées qui contiennent des milliards de gigaoctets de code distillés. Cela dit, l'IA a le potentiel d'aider les développeurs de logiciels humains à accomplir leur travail plus rapidement. »
Comment l'IA aidera-t-elle le développement de logiciels ?
Mais avec la pénurie continue de compétences technologiques qui menace de ralentir le rythme de la transformation numérique, L'IA a un rôle important à jouer dans le développement de logiciels , aidant des équipes informatiques de plus en plus sollicitées. Tech Monitor a rendu compte de la popularité croissante des systèmes low-code et no-code, qui permettent au personnel non technique de créer des fonctions numériques pour faciliter leur travail, le no-code devant représenter 65 % du développement d'applications d'ici 2024, selon Gartner.
Pour les professionnels, des outils tels que GitHub CoPilot, qui suggère des lignes de code ou des fonctions pour aider au développement, sont susceptibles d'être l'utilisation la plus productive de l'IA à court et moyen terme, affirme le Dr Schrammel. "Le développement de logiciels lui-même a largement bénéficié de l'automatisation depuis sa création", déclare-t-il. "Plus personne ne crée manuellement de code machine. Les outils automatisés tels que les compilateurs et les générateurs de code transforment les spécifications formelles de haut niveau d'une application en code exécutable par la machine. »
Le développement de logiciels lui-même a largement bénéficié de l'automatisation depuis sa création.
Dr Peter Schrammel, Université du Sussex
La montée en puissance de ces compilateurs a permis d'automatiser les "tâches fastidieuses", mais n'a pas conduit à une diminution du nombre de développeurs humains, ajoute le Dr Schrammel. « L'une des raisons pourrait être que de nombreuses activités de développement de logiciels telles que l'ingénierie des exigences reposent sur un large éventail de connaissances du domaine et doivent faire face à de grands degrés d'ambiguïté », dit-il. "Ces activités sont beaucoup plus difficiles à automatiser que les activités plus régulières, telles que le codage à partir de spécifications et de tests bien définis."
En effet, une automatisation plus poussée des systèmes de test sera probablement la prochaine frontière de l'IA dans la programmation, déclare le Dr Schrammel. À mesure que l'automatisation augmente, Bahdanau pense qu'un rôle de plus en plus important pour les développeurs humains sera de s'assurer que la façon dont l'IA génère le code est comprise. "Les développeurs professionnels devront comprendre et vérifier l'algorithme proposé par l'IA", dit-il. "Pour les développeurs citoyens utilisant des interfaces de programmation low-code ou no-code, la barre de fiabilité de l'IA sera encore plus élevée, et ils auront besoin d'une expérience de développeur qui explique la logique proposée par l'IA."
Sujets dans cet article : Développeurs de logiciels