Maison > Article > Périphériques technologiques > Est-ce une réussite ou un affaiblissement ? Le différend entre les outils de génération de code d’IA et les programmeurs
Les programmeurs sont-ils destinés à être remplacés ? La communauté des programmeurs informatiques est saisie par cette question depuis que le modèle de langage à grande échelle GPT-3 d'OpenAI a démontré son étonnante capacité à créer des sites Web HTML basés sur de simples instructions écrites.
Au cours des mois qui ont suivi, des assistants de programmation automatiques sont apparus, capables d'écrire des programmes informatiques simples mais complets basés sur des descriptions en langage naturel (langage humain parlé ou écrit) et d'accélérer le travail des programmeurs. Dans quelle mesure l’IA remplacera-t-elle ou améliorera-t-elle le travail des programmeurs ?
IEEE Spectrum a interrogé certains experts à ce sujet, et la mauvaise nouvelle est que la programmation est peut-être destinée à être remplacée. Mais la bonne nouvelle est qu’il semble que la programmation informatique et le développement de logiciels resteront un travail à forte implication humaine dans un avenir prévisible. Dans le même temps, la génération automatique de code basée sur l’IA accélère de plus en plus le développement de logiciels en permettant d’écrire davantage de code en moins de temps.
Vasi Philomin, vice-président d'Amazon AI Services, a déclaré : « Je ne crois pas que l'IA remplacera complètement les développeurs humains. Les outils d'IA peuvent libérer les programmeurs des tâches quotidiennes, mais le travail créatif de la programmation informatique continuera d'exister. "
Si quelqu'un veut devenir développeur dans 10 ans, il n'a pas forcément besoin d'apprendre un langage de programmation. Au lieu de cela, ils doivent comprendre la sémantique, les concepts et les séquences logiques de la création de programmes informatiques, ce qui ouvrira le développement de logiciels à une population plus large.
Lorsque la programmation informatique électronique a commencé dans les années 1940, les programmeurs écrivaient en utilisant le code machine numérique. Ce n'est qu'au milieu des années 1950 que Grace Hopper, une éminente informaticienne américaine, et son équipe de la Remington Rand Company ont développé FLOW-MATIC, qui permettait aux programmeurs d'écrire des programmes en utilisant un vocabulaire anglais limité.
Depuis, les langages de programmation sont devenus de plus en plus efficaces, et les programmeurs sont devenus plus efficaces dans leur travail.
Le code écrit par l'IA est à l'avant-garde de changements plus larges, permettant aux gens d'écrire des logiciels sans coder du tout. Il existe désormais des plates-formes de développement d'IA sans code comme Akkio qui permettent aux utilisateurs de créer des modèles d'apprentissage automatique avec de simples fonctionnalités de glisser-déposer et de clic de bouton. La Power Platform de Microsoft comprend une série de produits low-code qui permettent aux utilisateurs de générer des applications simples simplement en les décrivant.
En juin de cette année, Amazon a lancé une version préliminaire de CodeWhisperer, un assistant de programmation basé sur l'apprentissage automatique similaire au Copilot de GitHub. Les deux outils sont basés sur des modèles de langage étendus (LLM), qui ont été formés sur des bases de code massives. Lorsque les programmeurs écrivent du code, CodeWhisperer et Copilot fournissent des suggestions de saisie semi-automatique et suggèrent des instructions exécutables basées sur des phrases simples en langage naturel.
Il y a quelques jours, GitHub a mené une enquête auprès de 2 000 développeurs et a constaté que Copilot réduisait de moitié le temps consacré à certaines tâches de codage et améliorait la satisfaction globale des développeurs à l'égard de leurs dépenses de travail.
Mais si vous voulez aller au-delà de la complétion automatique, le problème réside dans l'enseignement de l'intention à l'ordinateur. Les exigences logicielles sont souvent vagues et le langage naturel est notoirement imprécis.
Diffblue, une startup britannique d'intelligence artificielle, s'engage à utiliser l'IA pour vérifier et corriger le code Peter Schrammel, l'un de ses co-fondateurs, a déclaré que si vous souhaitez résoudre les ambiguïtés des normes d'écriture anglaises, vous devez le faire. apporter des améliorations progressives. Entamer un dialogue entre les humains et les machines.
Pour résoudre ces problèmes, des chercheurs de Microsoft ont récemment proposé d'ajouter un mécanisme de rétroaction à la génération de code basée sur LLM, afin que l'ordinateur demande au programmeur de clarifier toute ambiguïté avant de générer du code. Le système interactif de Microsoft, appelé TiCoder, affine et formalise l'intention de l'utilisateur en générant ce qu'il appelle une « formalisation de l'intention de l'utilisateur basée sur les tests » (TDUIF).
TDUIF tente d'utiliser un retour itératif pour déterminer l'intention algorithmique du programmeur, puis de générer un code cohérent avec l'intention exprimée par le programmeur. La figure ci-dessous montre le flux de travail de TDUIF.
Adresse papier : https://arxiv.org/abs/2208.05950
Selon des articles connexes, lorsqu'il est évalué sur le benchmark Mostly Basic Programming Problems (MBPP), TiCoder Amélioration de la précision du code généré automatiquement de 48 % à 85 %. Conçu pour évaluer le code généré par la machine, MBPP se compose d'environ 1 000 problèmes de programmation Python participatifs à résoudre par des programmeurs débutants.
Une unité de code peut contenir des centaines de lignes et constitue la plus petite partie d'un programme qui peut être maintenue et exécutée indépendamment. Une suite de tests unitaires se compose généralement de dizaines de tests unitaires, chacun contenant 10 à 20 lignes de code, qui vérifient que l'unité fonctionne comme prévu, de sorte que lorsque vous empilez les unités les unes sur les autres, le programme fonctionne comme prévu.
Les tests unitaires sont très utiles pour déboguer des fonctions individuelles et détecter les erreurs lors de la modification manuelle du code. De plus, un test unitaire sert de spécification pour une unité de code et sert à guider les programmeurs dans l'écriture d'un code propre et sans bug. Bien que peu de programmeurs poursuivent un véritable développement piloté par les tests, dans lequel les tests unitaires sont écrits en premier, les tests unitaires sont souvent écrits avec les unités.
Selon les résultats de l'enquête auprès des développeurs Diffblue 2019, les développeurs passent environ 35 % de leur temps à écrire des tests de contrôle qualité au lieu d'écrire pour la production. code, donc l’automatisation de cette partie du travail peut améliorer considérablement la productivité.
Dans le même temps, Copilot, CodeWhisperer et d'autres packages d'assistants de programmation IA peuvent être utilisés comme outils interactifs d'auto-complétion pour l'écriture de tests unitaires. Les programmeurs reçoivent des suggestions de codage et choisissent celles qui fonctionnent le mieux.
En février de cette année, DeepMind a encore utilisé AlphaCode pour la production de code entièrement automatisée. AlphaCode est un modèle de langage à grande échelle capable d'écrire des programmes informatiques simples basés sur des instructions en langage naturel. Il utilise une architecture Transformer codeur-décodeur qui code d'abord une description en langage naturel du problème, puis décode le vecteur résultant dans le code requis pour la solution.
Aperçu d'AlphaCode. Source de l'image : https://arxiv.org/pdf/2203.07814.pdf
Le modèle a d'abord été formé sur le référentiel GitHub jusqu'à ce qu'il soit capable de générer un code qui semblait raisonnable. Pour affiner le modèle, DeepMind a utilisé 15 000 paires de descriptions de problèmes en langage naturel et de solutions de code réussies issues de concours de programmation antérieurs pour créer un ensemble de données dédié d'exemples d'entrées-sorties.
Une fois AlphaCode formé et affiné, il peut être testé sur des problèmes qu'il n'a jamais rencontrés auparavant. La dernière étape consiste à générer un grand nombre de solutions, puis à utiliser un algorithme de filtrage pour sélectionner la meilleure. Oriol Vinyals, responsable de l'équipe d'apprentissage profond de DeepMind, estime avoir créé de nombreux programmes différents en échantillonnant le modèle de langage près d'un million de fois.
Pour optimiser le processus de sélection des échantillons, DeepMind utilise un algorithme de clustering pour regrouper les solutions. Le processus de regroupement tend à regrouper des solutions réalisables, ce qui facilite la recherche d'un petit sous-ensemble de candidats susceptibles de fonctionner comme les programmeurs les ont écrites.
Pour tester le système, DeepMind a soumis 10 programmes écrits par AlphaCode à un concours de programmation humaine sur la populaire plateforme Codeforces, avec des solutions classées dans le top 54 %.
Dans une récente interview, Oriol Vinyals a demandé rhétoriquement : « Pour générer un programme, est-ce qu'il suffit de l'écrire en langage naturel sans coder, et ensuite la solution sort à l'autre bout du fil. Vinyals et les autres sont prudents ? , arguant que la réalisation de cet objectif prendra du temps, voire des décennies.
Andrew Ng, fondateur et PDG de Landing AI, un spécialiste bien connu de l'IA, a déclaré que nous sommes encore loin d'une personne capable de dire à un ordinateur les exigences pour écrire un programme informatique arbitrairement complexe et compléter automatiquement le codage.
Cependant, étant donné la rapidité avec laquelle la génération de code d'IA a progressé en quelques années seulement, il semble une tendance évolutive inévitable que les systèmes d'IA soient finalement capables d'écrire du code basé sur des instructions en langage naturel. Et les logiciels de programmation manuelle ressembleront de plus en plus à des pulls tricotés à la main.
Afin de fournir des instructions en langage naturel aux ordinateurs, les développeurs doivent encore comprendre certains concepts logiques et fonctionnels et savoir comment structurer les choses. Même si un développeur n'apprend pas un langage de programmation spécifique ou n'écrit pas de code informatique, il doit quand même apprendre les bases de la programmation. En retour, cela permettra à davantage de programmeurs de créer des logiciels de plus en plus diversifiés.
Vasi Philomin a déclaré qu'il ne croyait pas que l'IA remplacerait les développeurs humains. L’IA peut éliminer le travail subalterne et routinier que les développeurs doivent effectuer, leur permettant ainsi de se concentrer sur des choses de plus grande valeur.
Peter Schrammel convient également que la génération automatique de code par l'IA permet aux développeurs de logiciels de se concentrer sur des tâches plus difficiles et plus exigeantes. Cependant, a-t-il ajouté, il est au moins nécessaire de confirmer si ce que la machine comprend est une intention humaine.
Il a également déclaré que les développeurs de logiciels ne perdront pas leur emploi car les outils de codage automatisés les remplaceront et qu'il y aura toujours plus de logiciels à écrire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!