L’IA va-t-elle remplacer les développeurs/ programmeurs ?

L’utilisation de l’intelligence artificielle (IA) dans le développement de logiciels progresse de façon spectaculaire. A se demander combien de temps encore quels développeurs - programmeurs vont rester occupés…

(c) Adobe Stock
(c) Adobe Stock

Les codeurs en informatique se mettent à rêver de pouvoir travailler en binôme avec une intelligence artificielle. Ils ne manquent pas d’arguments ni d’envie - c’est presque ludique avec l’IA générative.

Parmi les outils d'IA générative qui commencent à percer chez les développeurs figurent notamment GitHub Copilot, qui s'intègre, entre autres outils, au très répandu Visual Studio de Microsoft, et ChatGPT d’Open-AI. Tous deux appartiennent à la sphère capitalistique « microsoftienne », désormais ouverte, il est vrai, au logiciel libre (open source). Des plateformes ont surgi chez Meta (Facebook) avec Code Llama ou encore, chez Salesforce (CodeT5) ou chez Amazon AWS (Code Whisperer) et d’autres d’origine française, chez Hugging Face et Mistral AI.

Au moins deux approches possibles

Pour générer automatiquement du code, au-delà de la simple saisie semi-automatique, il existe au moins deux approches. La première consiste à utiliser, sur la plateforme IA, le mode conversationnel, comme avec un chatbot. On avance pas à pas en posant une succession de questions à la machine, de façon de plus en plus concentrée, en se laissant guider jusqu’au résultat final, et jusqu’au test du code - un peu comme si vous aviez un expert à côté de vous qui répondrait à toutes vos questions. Et cela, jusqu’à l’édition automatique des commentaires ou documentation – très avantageux en temps passé.

La deuxième approche consiste à décrire une fonction bien définie, en donnant des exemples de résultats attendus, à partir de modèles de données associant des liens implicites renvoyant à une table de données. Le moteur d’IA va déduire les associations (inférence). On lui demande, alors, avec des requêtes spécifiques (‘prompts’) d’éditer le code résultant dans tel ou tel langage informatique.

Les nouvelles générations de moteurs de code par IA générative sont toutes en train de dépasser le premier modèle du conversationnel. Ainsi le nouveau GitHub Copilot, baptisé Copilot X, peut fonctionner comme un outil de saisie de codage semi-automatique capable d’anticiper ou « deviner » les lignes de code. Si le développeur saisit une ligne posant les coordonnées d’un carré en donnant la hauteur, l’assistant IA écrira automatiquement la ligne de code pour la largeur.

La nouvelle science des ‘prompts

Quelle que soit l’approche utilisée, il faut acquérir une bonne maîtrise des ‘prompts’ pour que les requêtes soient pertinentes et affichent des résultats justes. Par association de mots et de pensées, on réitère et on concentre les ‘prompts’ (formulation des requêtes par mot clés), en s’assurant qu’on utilise le bon verbe jusqu’au résultat pertinent qui fonctionne. Il faut donc apprendre à être très précis dans la description. Le ‘prompting’ devient une science ; il faut se muer en champion du ‘speed engineering’. Des outils ou tutoriels permettent de faire son apprentissage. Un point clé : il faut constamment s’assurer qu’on ne s’éloigne pas du sujet et que les résultats sont corrects et fonctionnent.

Les cas d’utilisation les plus courants

Voici les cas d’usage actuels de l’IA, les plus fréquents dans le codage ou programmation informatique :

- générer les commentaires et la documentation se rapportant au programme finalisé, fonction par fonction ;

- inversement, générer du code à partir de la documentation (ce qui, au passage, permet d’apprendre des expressions idiomatiques)
- mettre à jour, nettoyer, déboguer ou moderniser du code ancien (‘legacy’).

Ainsi, l’IA peut proposer automatiquement une syntaxe plus propre, sur le principe de « déstructuration » ou de « conversion ». Par exemple, pour convertir des données variables en constantes, on apprendra (ou on se rappellera…) que, pour ce faire, l’instruction CONST. existe bien dans Python mais pas LET, à l’inverse d’autres langages…

L’IA dans la programmation évite de réinventer la roue… Un exemple : en navigation maritime ou aérienne, comment déterminer la distance la plus courte entre deux points GPS sur une sphère (arc le plus court, ou route orthodromique ). Plutôt que de retrouver les savants calculs de trigonométrie des grands mathématiciens Stevin et Denoville (16e et 17e siècles), il suffit aujourd’hui de parvenir, par itération, ou directement à ce ‘prompt’ <algorithm code haversine, shortest distance on sphere>. En deux secondes, ChatGPT vous édite le code de programmation en langage python, comme nous l’avons demandé ! Et il vous confirme qu’il suffit de saisir les coordonnées latitude / longitude pour avoir le résultat. Et idem, si vous voulez ajouter la fonction de calcul du temps de trajet, selon le mode de transport…

Ceux qui ont commencé à utiliser ces outils constatent le gain de temps (mais sans s’engager à dire combien…). Certains vont jusqu’à penser que – bientôt ? - quand les IA seront encore mieux entraînées, on pourrait supprimer ou réduire de moitié des pools entiers de développeurs…

Pierre MANGIN