Un outil permettant au code de s’écrire tout seul ? Tous les développeurs en ont rêvé ! Grâce à l’intelligence artificielle, il est en train de voir le jour. Comment fonctionne-t-il ? Qu’apporte-t-il aux développeurs et quelles sont les solutions disponibles sur le marché ? Sonne-t-il le glas de leur métier et pose-t-il des questions éthiques ?
L’émergence de l’Intelligence Artificielle
Au cours des dernières décennies, l’intelligence artificielle a fait de grands progrès. Longtemps cantonnée au domaine de la recherche et au secteur industriel, elle s’est invitée un peu partout. Désormais, elle est embarquée dans de nombreux produits. En médecine, elle aide à diagnostiquer et soigner des maladies. C’est elle qui vous recommande les articles à lire sur votre fil d’info Facebook ou qui permet à votre téléphone de reconnaître votre visage, ou de traduire les langues étrangères. Dans votre voiture, elle vous évite les embouteillages en vous proposant des itinéraires bis, etc.
Existant depuis une soixantaine d’années, son émergence depuis 2010 est liée à celle du Big Data. En effet, L’IA a une capacité d’apprentissage automatique grâce aux grandes masses de données disponibles et aux capacités impressionnantes de calcul des ordinateurs actuels
Coder avec l’IA : comment ça marche ?
L’IA permet à un système d’apprendre tout seul, de se programmer pour que ses résultats correspondent à un grand nombre d’exemples qu’il peut analyser. Le système peut ainsi généraliser ses réactions à partir d’exemples appris.
Dans le domaine du code, l’intelligence artificielle va travailler à partir d’immenses bases de données pour s’entraîner. Elle va parcourir des milliards de lignes de code proposées en open source et peut avoir accès à des dépôts privés de sources. Grâce à la qualité et la quantité de ces datas utilisées, elle peut suggérer des bouts de code aux développeurs ou même des fonctions entières, les aider à détecter de potentielles anomalies et automatiser une partie du processus.
L’intelligence artificielle est ainsi un assistant précieux des développeurs tant au niveau de l’écriture que dans la phase de tests et de leur automatisation.
Des difficultés à recruter des profils Tech ?
Que peut apporter l’Intelligence Artificielle au code ?
Le code et sa faillibilité
Le code informatique d’une application, d’un programme, est réalisé par un développeur. Il est une production humaine et n’est donc pas infaillible. Des coquilles peuvent passer inaperçues au stade du développement, mais aussi du test et entraîner de lourdes conséquences. La complexité croissante des environnements IT n’arrange pas les choses.
Les erreurs de code coûtent cher aux entreprises ; or depuis une vingtaine d’années, très peu de solutions ont été trouvées. La productivité a augmenté grâce au compilateur qui travaille en temps réel, à l’éditeur de code qui renseigne sur la bonne syntaxe de celui-ci, et aux outils d’autocomplétion. Mais le développeur est toujours face à sa machine, seul. Dans ce contexte, l’Intelligence artificielle ouvre de larges possibilités.
L’amélioration de la qualité du code
Grâce à l’autocomplétion, à la suggestion et à l’automatisation de certaines tâches, l’IA va permettre au développeur de produire un code plus robuste en moins de temps et l’aider à écrire des tests unitaires (la plus petite unité de test existante).
La réduction du travail répétitif
La programmation reste une tâche très répétitive. En effet, même pour une application innovante une grande partie des lignes de codes est très classique. De ce fait, s’appuyer sur des outils reposant sur l’IA assure aux développeurs de ne pas réinventer la roue chaque jour. Ils peuvent se concentrer sur les tâches à haute valeur ajoutée et travailler ainsi sur des systèmes toujours plus complexes.
Quelles sont les startups qui développent ces solutions d’intelligence artificielle ?
Dès 2018, l’IDE Visual Studio et VSCode de Microsoft proposent une aide à la rédaction de code sous forme de suggestions personnalisées en cours de saisie. « IntelliCode » apprend à partir des projets open source sur GitHub.
Depuis lors, de nombreuses startups conçoivent des outils reposant sur l’IA.
- Codata, entreprise israélienne fondée en 2013, propose à l’instar de Microsoft une solution s’articulant autour de modèles de natural language processing (NLP), mais puisant à la fois dans le code public et dans des dépôts privés. Elle séduit des développeurs d’organisations renommées comme Amazon, Google ou Netflix.
En 2019, elle acquiert TabNine. Cette dernière réalise des propositions d’autocomplétion dans 22 langages de développements différents. Les deux entreprises réunies sous le nom de TabNine fonctionnent désormais avec plus d’une trentaine de langages.
- Ponicode est une startup française fondée en 2019 par Patrick Joubert et installée à Station F. Elle se spécialise dans l’automatisation des tests unitaires. Son IA s’entraine sur du code open source comme les outils d’autocomplétion.
- Functionize et Mabl sont deux organisations américaines. La première voit le jour en 2015, et la seconde en 2017. Elles travaillent à l’automatisation des tests fonctionnels à l’aide de deux approches différentes.
La disparition des développeurs ? Vers une transformation du métier
Les technologies basées sur l’IA aident les développeurs à écrire du code plus rapidement et avec moins d’erreurs. Ils sont de parfaits assistants contribuant à l’amélioration de leur productivité. Il faut cependant noter que pour le moment, le développement logiciel n’est pas complètement automatisé. Ainsi, le développeur est toujours nécessaire à la définition de l’architecture logicielle, aux choix technologiques, à la création des tests, au déploiement de son application et aux contraintes de sécurité. De plus, le traitement automatique du langage n’est pas encore mature. Il est indispensable de vérifier si le code fait bien ce que souhaite le développeur.
Ici, il faut aussi parler de la grande tendance du No-code et du Low-code et l’irruption de l’Intelligence Artificielle dans ce type de développement. Le No-Code permet à toute personne de développer une application sans écrire une seule ligne de code. Le Low-code offre la possibilité à un développeur d’améliorer un environnement No-code avec quelques lignes de codes. L’arrivée du machine learning va élargir les possibilités de ces outils et les rendre encore plus pertinents et performants. MISIM est l’exemple d’un tel outil centré sur l’optimisation des programmes. Mais là également, l’heure de la fin des développeurs n’a pas encore sonné.
Car l’interaction avec une machine a régulièrement besoin d’être optimisée et si les développeurs de projets d’application standards peuvent être à terme impactés par ces solutions, les projets plus spécifiques échappent toujours à l’IA.
Des enjeux éthiques
L’IA exploite d’immenses bases de données pour s’entraîner. Si celles-ci contiennent des erreurs, des propos déplacés, elles peuvent être apprises par l’IA qui les reproduit.
Par ailleurs, l’intervention de l’Intelligence Artificielle dans le développement peut présenter des problèmes juridiques. En effet, les développeurs peuvent introduire du code suggéré par un outil publié sous licence open source alors qu’ils travaillent dans une entreprise pour laquelle ils écrivent en code propriétaire. Si un code en open source est accessible à tout le monde gratuitement, le produit pour lequel il est utilisé doit lui aussi être accessible gratuitement.
Il manque ainsi encore un cadre juridique à l’utilisation de l’Intelligence Artificielle dans le code.