Ravi Rajan est un directeur de programme travaillant en Inde. Il écrit des articles sur les tendances technologiques et leur impact sur les besoins fondamentaux de l’humanité
http://markus-winkler-tGBXiHcPKrM-unsplash
L’IA peut-elle écrire du code ?
En 2015, l’informaticien slovène Andrej Karpathy a dirigé un projet utilisant l’IA pour générer du code. Voici ce qu’il a produit.
/* * If this error is set, we will need anything right after that BSD. */ static void action_new_function(struct s_stat_info *wb) { unsigned long flags; int lel_idx_bit = e->edd, *sys & ~((unsigned long) *FIRST_COMPAT); buf[0] = 0xFFFFFFFF & (bit << 4); min(inc, slist->bytes); printk(KERN_WARNING "Memory allocated %02x/%02x, " "original MLL instead\n"), min(min(multi_run - s->len, max) * num_data_in), frame_pos, sz + first_seg); div_u64_w(val, inb_p); spin_unlock(&disk->queue_lock); mutex_unlock(&s->sock->mutex); mutex_unlock(&func->mutex); return disassemble(info->pending_bh); } static void num_serial_settings(struct tty_struct *tty) { if (tty == tty) disable_single_st_p(dev); pci_disable_spool(port); return 0; } static void do_command(struct seq_file *m, void *v) { int column = 32 << (cmd[2] & 0x80); if (state) cmd = (int)(int_state ^ (in_8(&ch->ch_flags) & Cmd) ? 2 : 1); else seq = 1; for (i = 0; i < 16; i++) { if (k & (1 << 1)) pipe = (in_use & UMXTHREAD_UNCCA) + ((count & 0x00000000fffffff8) & 0x000000f) << 8; if (count == 0) sub(pid, ppc_md.kexec_handle, 0x20000000); pipe_set_bytes(i, 0); } /* Free our user pages pointer to place camera if all dash */ subsystem_info = &of_changes[PAGE_SIZE]; rek_controls(offset, idx, &soffset); /* Now we want to deliberately put it to device */ control_check_polarity(&context, val, 0); for (i = 0; i < COUNTER; i++) seq_puts(s, "policy "); }
L'IA remplacera-t-elle les programmeurs ?
Comme vous pouvez le voir, le code généré automatiquement contient tout : fonctions et déclarations de fonctions, paramètres, variables, boucles et même des retraits corrects. Il contient même des commentaires. Cependant, le code produit par l'IA comportait quelques erreurs syntaxiques. Néanmoins, cela correspondait presque au code d'un programmeur humain.
Cela nous amène donc à la question suivante : l'IA remplacera-t-elle les programmeurs ?
Avant de parler de remplacement, essayons de comprendre la vraie valeur d'un bon programmeur. La valeur d'un bon programmeur n'est pas simplement de savoir "comment coder". Les programmeurs apportent de la valeur en comprenant « quoi coder ».
En termes simples, ils doivent comprendre la valeur commerciale de chaque exigence à construire et décider et prioriser leur développement en fonction de la criticité. En un mot, ils ont un cerveau humain "pensant" entièrement fonctionnel.
Et l'IA que nous voyons aujourd'hui est basée sur les données. Oui, il peut faire des choses comme catégoriser les images sur Google, lire les plaques d'immatriculation, alimenter les routines d'Alexa et de Siri, et même utiliser des méthodes hautement sophistiquées de classification des données et de reconnaissance des modèles.
Mais il ne peut pas penser comme un cerveau humain. Pour que les systèmes d'IA soient capables de "penser", ils doivent être continuellement entraînés et alimentés par des banques de données géantes couvrant tous les scénarios humains possibles. Ce n'est pas possible à 100 %.
C'est pourquoi l'IA peut écrire du code mais ne peut pas garantir qu'elle a écrit le bon code. Il ne peut pas comprendre la valeur commerciale des fonctionnalités. Il ne peut pas refactoriser un ancien code bogué et ne peut pas décider de supprimer ou non un morceau de code.
5 avantages de l'utilisation de l'IA dans le développement de logiciels
Ainsi, l'avenir du développement de logiciels et de l'IA est la collaboration et l'intégration. L'IA aidera les programmeurs à redéfinir la programmation en prenant en charge des tâches fastidieuses et répétitives afin que les programmeurs puissent se concentrer sur la construction de quelque chose de grand.
Les programmeurs peuvent également s'associer à l'IA pour écrire de meilleurs logiciels et réduire les temps de cycle de développement. Et loin de remplacer les programmeurs, l'IA se prépare à réinventer la charge de travail d'un programmeur grâce à l'intégration et à une efficacité accrue.
Voici cinq avantages de l'utilisation de l'IA dans le développement de logiciels :
- L'IA peut valider les exigences du projet
- Débogage automatique
- Test automatique
- L'IA peut rendre les programmeurs plus efficaces
- L'IA va changer le développement logiciel
john-schnobrich-FlPc9_VocJ4-unsplash-Entreprise
1. L'IA peut valider les exigences du projet
La collecte des exigences est le processus de collecte, de validation et de suivi des exigences de tout projet de développement logiciel. Et les projets échouent principalement en raison d'exigences insuffisamment ou mal validées.
Faites défiler pour continuer
Les assistants IA peuvent désormais analyser les documents d'exigences, trouver des ambiguïtés et des incohérences et proposer des améliorations. Ces outils peuvent détecter des problèmes tels que des exigences incomplètes, une quantification incommensurable (unités ou tolérances manquantes), des exigences contradictoires et des critères d'entrée et de sortie peu clairs. Les entreprises utilisant de tels outils auraient été en mesure de réduire leur temps d'examen des exigences de plus de 50 %, selon une étude menée par Deloitte.
Et une fois les exigences gelées, l'IA peut également aider les programmeurs à hiérarchiser les exigences en fonction des besoins de l'entreprise. L'IA peut valider ces décisions en exécutant des simulations et en modélisant le comportement des utilisateurs à partir de logiciels existants ou de tendances historiques passées.
Il peut ensuite générer une hiérarchie des fonctionnalités essentielles pour l'entreprise en fonction des tendances du marché. Des outils tels que AI Canvas peuvent aider à identifier les questions clés et les défis de faisabilité de tout projet et aider les développeurs à prendre des décisions éclairées.
Ainsi, les assistants IA aident les programmeurs à livrer le produit en moins de temps en accélérant le processus du cycle de vie du développement, garantissant ainsi une augmentation des revenus de l'organisation dans un court laps de temps.
nubelson-fernandes-gTs2w7bu3Qo-unsplash-débogage
2. Débogage automatique
Des tâches telles que les tests, la détection de bogues et les correctifs occupent la majeure partie du temps du développeur.
L'IA et le ML aident les programmeurs à identifier les bogues pour garder le logiciel exempt d'erreurs. Les algorithmes d'apprentissage en profondeur peuvent signaler les erreurs connues et accélérer le processus de débogage. Il peut observer un programmeur et apprendre à réparer chacun d'eux. Et après une formation suffisante, les systèmes d'IA seront en mesure de suggérer et de corriger un large éventail de bogues, de la même manière que les fonctionnalités de correction orthographique automatique fonctionnent dans les smartphones.
Certains outils d'IA peuvent désormais également terminer des lignes de code lorsque les programmeurs commencent à taper. Ils affichent une liste d'extraits de code utilisables en fonction de leur pertinence. Les outils de révision de code alimentés par l'IA peuvent comprendre l'intention du code et rechercher les erreurs courantes, détectant ainsi les bogues et suggérant des modifications de code. Par exemple, la société de jeux vidéo Ubisoft affirme que l'apprentissage automatique l'aide à détecter 70 % des bogues avant les tests.
Ainsi, les programmeurs aidés par l'IA fournissent désormais des logiciels de haute qualité, même dans des délais stricts où le produit doit arriver sur le marché avant la concurrence.
freestocks-40k6ZqbsXuo-unsplash-test
3. Test automatique
Imaginez que vous écrivez des cas de test et que l'IA itère ces tests des millions de fois jusqu'à ce qu'elle trouve ou crée le morceau de code qui efface les tests. Et avec ce temps supplémentaire disponible maintenant après avoir libéré de nombreuses fois l'activité d'exécution de tests, vous, en tant que programmeur, pouvez vous concentrer sur la compréhension et la résolution de problèmes métier. Plus tard, l'IA pourra même apprendre à suggérer les tests à effectuer. Les possibilités sont passionnantes.
Prenez, par exemple, l'outil Functionize. Il permet aux utilisateurs de tester rapidement et de publier plus rapidement grâce aux tests cloud activés par l'IA. Les utilisateurs n'ont qu'à taper un plan de test en anglais, le convertissant automatiquement en cas de test fonctionnel. L'outil comprend également des tests d'auto-guérison qui se mettent à jour de manière autonome en temps réel.
SapFix est un autre outil hybride d'IA déployé par Facebook qui peut générer automatiquement des correctifs pour des bogues spécifiques identifiés par l'outil. Il propose ensuite ces correctifs aux ingénieurs pour approbation et déploiement en production.
Ainsi, avec les tests automatisés de l'IA, les programmeurs peuvent augmenter la couverture de la portée globale du cycle de test, ce qui améliore la qualité des applications et réduit les vulnérabilités.
andreas-klassen-gZB-i-dA6ns-unsplash-efficace
4. L'IA peut rendre les programmeurs plus efficaces
Des chercheurs de Microsoft et de l'Université de Cambridge ont développé une IA capable d'écrire du code, connue sous le nom de DeepCoder, et apprend en cherchant dans une énorme base de données de code. On pense que cela changera la donne pour les personnes qui ne sont pas des techniciens ou des développeurs qui souhaitent apprendre une nouvelle langue.
William Falk, développeur Web et créateur de contenu indépendant, a déclaré :
"L'idée est que tout ce que vous aurez à faire est de décrire votre idée de programme et il fera l'écriture pour vous. Cependant, à l'heure actuelle, DeepCoder est limité à des programmes composés de seulement cinq lignes de code."
De même, un ingénieur français connu sous le nom de BenjaminTD a enseigné à une IA comment écrire du code Python en 2016. Le code n'était pas parfait, mais c'est un bon début.
L'idée est que l'IA pourra bientôt faciliter l'apprentissage des programmeurs. Un algorithme d'apprentissage automatique peut utiliser les archives d'anciens projets, les connaissances des programmeurs et l'historique des défauts passés et des moyens plus efficaces pour les programmeurs d'écrire du code, d'identifier des modèles et de donner des commentaires en temps réel.
Cela ne signifie pas que les programmeurs seront éteints. Au lieu de cela, cela leur permet d'être plus efficaces et créatifs dans leur approche.
5. L'IA changera le développement de logiciels
Oui, pour l'instant, l'IA n'est pas aussi fiable qu'un programmeur humain. Des erreurs sont toujours commises et cela a ses limites. Alors que le développement des progrès de l'IA se poursuit, il faudra encore un certain temps avant que l'IA puisse développer plus que quelques lignes de code, et il faudra encore plus de temps pour comprendre les utilisations commerciales et la valeur de ce code.
Mais les programmeurs doivent réaliser que leurs compétences devront changer.
Andrej Karpathy, un ancien chercheur à OpenAI qui est maintenant directeur de l'IA chez Tesla, a proposé un nouveau processus de développement logiciel pour l'ère de l'IA, appelé Software 2.0, et ses composants clés incluent la définition des problèmes et des objectifs, la collecte de données, la préparation des données, l'apprentissage des modèles, le déploiement et l'intégration des modèles et la gestion des modèles. Les programmeurs du futur trouveront et composeront de grands ensembles de données pour entraîner les applications à être innovantes et à remplir les capacités souhaitées.
Et les programmeurs qui veulent rester pertinents à l'ère de l'IA doivent se considérer comme des généralistes experts et traiter l'apprentissage de nouvelles compétences comme un processus continu. Oui, ils ne peuvent pas connaître toutes les compétences en IA, mais ils ont encore besoin de prévoyance et de ténacité pour naviguer dans le paysage de l'IA et acquérir de nouvelles compétences, comme l'exigent les besoins commerciaux en évolution rapide. L'apprentissage n'est plus facultatif; c'est obligatoire pour survivre.
Comme le Dr Seuss a dit avec raison,
« Plus vous lirez, plus vous saurez de choses. Plus vous en apprendrez, plus vous irez d'endroits.
Sources
- Un guide humain sur l'intelligence artificielle : comment les algorithmes façonnent nos vies et comment nous pouvons garder le contrôle - Kartik Hosanagar
- Accélérer la qualité des logiciels : apprentissage automatique et intelligence artificielle à l'ère du DevOps - Eran Kinsbruner
- Déploiement de l'IA dans l'entreprise : approches informatiques pour la conception, le DevOps, la gouvernance, la gestion du changement, la blockchain et l'informatique quantique - Eberhard Hechler (auteur), Martin Oberhofer
- Design Thinking dans les projets de logiciels et d'IA : prouver des idées grâce au prototypage rapide - Robert Stackowiak (auteur), Tracey Kelly
- MANUEL D'AUTOMATISATION DE LA PROGRAMMATION ROBOTIQUE-Donald Eric (Auteur)
- Algorithmes : les humains à l'ère de l'IA. Programmation, sécurité, Python, piratage, cyberguerre et apprentissage automatique-Jeff Mc Frockman
- Hello World : Être humain à l'ère des algorithmes - Hannah Fry
Ce contenu est exact et fidèle au meilleur de la connaissance de l'auteur et ne vise pas à remplacer les conseils formels et individualisés d'un professionnel qualifié.
© 2022 Ravi Rajan