Les agents de codage IA sont en train d’abattre les barrières entre langages de programmation
(railsatscale.com)- Les progrès des outils de codage IA créent un environnement où les développeurs peuvent se lancer rapidement dans de nouveaux langages
- L’auteur, développeur ayant utilisé exclusivement Ruby pendant 10 ans, peut désormais, grâce à la collaboration avec des agents de codage IA cette année (par ex. Cursor, Claude Code), contribuer concrètement à des langages système comme le C, le C++ et Rust
- Des outils comme Claude Code et Cursor apportent une aide particulièrement précieuse sur la syntaxe des langages, les idiomes et la théorie générale
- L’IA n’est pas un simple générateur de code, mais un « ingénieur pair expert du langage » qui, combiné à l’expérience existante, maximise l’efficacité de l’apprentissage via des questions en temps réel, des explications de contexte et l’analyse d’exemples
- Même si l’IA ne connaît pas entièrement le contexte propre à chaque projet ni les structures internes profondes, elle conseille immédiatement sur la syntaxe, les schémas typiques et les bibliothèques standard, ce qui permet de contribuer réellement sans plus de 100 heures d’apprentissage préalable
- L’usage des outils IA transforme rapidement la vision traditionnelle de l’expertise en langages de programmation, et ouvre un contexte où de plus en plus de développeurs peuvent travailler de manière productive dans plusieurs langages
Développeur Ruby pendant 10 ans, transition vers le multilangage
- L’auteur a travaillé de 2014 à 2024 comme développeur entièrement dédié à l’écosystème Ruby et Rails
- Il y a accumulé de l’expérience dans le développement et la maintenance d’outils clés de l’écosystème Ruby, comme Rails, IRB, RDoc et la gem
debug
- Il y a accumulé de l’expérience dans le développement et la maintenance d’outils clés de l’écosystème Ruby, comme Rails, IRB, RDoc et la gem
- À partir de 2025, il contribue à des projets de couche système hors de Ruby, comme Sorbet (C++), le parseur RBS (C) et ZJIT (Rust)
- Cette évolution a été rendue possible par l’introduction d’agents de codage IA (Cursor, Claude Code)
- En interne chez Shopify aussi, l’usage actif de ces outils IA est encouragé
Un alignement de circonstances parfait
- Ce n’est pas seulement grâce à l’IA : plusieurs conditions importantes étaient aussi réunies
- Un changement de feuille de route de l’équipe Ruby DX a rendu nécessaire la prise en charge de RBS par Sorbet → une expérience en C/C++ devenait inévitable
- Les membres de l’équipe infrastructure Ruby & Rails de Shopify ont partagé leur savoir-faire et fourni un cadre de tutorat actif
- Historiquement, il existait déjà d’excellents mentors et de vraies opportunités de projet, mais l’IA a radicalement raccourci les barrières d’apprentissage et la courbe de progression
La complexité de la programmation système
- Cas du projet ZJIT (nouveau compilateur JIT pour Ruby) :
- Il faut mobiliser en même temps de nombreuses connaissances et compétences complexes
- Rust (langage principal), C (langage d’implémentation central de Ruby), théorie des JIT/compilateurs, structure et conception propres à ZJIT, fonctionnement interne de Ruby, système de build Ruby (
autoconf,Makefile, etc.) - Une seule Pull Request peut couvrir simultanément 2 à 4 domaines
- Efficacité de Claude Code
- Grande précision sur la syntaxe, la théorie générale des compilateurs, ainsi que les grammaires de langages et schémas d’expression en Rust/C/C++
- Prise en charge plus limitée du contexte spécifique au projet, de l’implémentation interne de Ruby et des systèmes de build complexes
- Malgré cela, la barrière d’entrée dans l’apprentissage est réduite de plus de moitié
- L’IA apporte une aide immédiate pour apprendre la syntaxe, la théorie et les schémas de langage, tandis que le contexte spécifique au projet reste du ressort des humains
Pair programming avec l’IA
- L’auteur en est venu à voir l’IA non comme un simple générateur de code, mais comme un partenaire complémentaire
- Méthode de collaboration concrète
- Le développeur transmet les exigences de la tâche et son contexte
- L’IA repère les schémas et joue le rôle d’experte du langage
- Le développeur interroge les raisons de conception
- L’IA modifie le code ou explore la théorie puis fournit les résultats
- Cet apprentissage conversationnel permet d’acquérir en même temps le langage lui-même et sa mise en pratique
- Exemple : dans une tâche de profiling des instructions bytecode de Ruby, il est possible de demander à l’IA de rechercher d’anciennes PR et de les expliquer ligne par ligne
- Même des « questions bêtes » peuvent être posées sans gêne (« Pourquoi un compilateur JIT a-t-il besoin de profiling ? » par exemple)
- On obtient un retour immédiat sur une syntaxe peu familière
- Il existe aussi des cas d’échec
- Si la direction du projet est mauvaise, une correction par un mentor collègue reste finalement nécessaire
- En fin de compte, la capacité humaine à réorienter la trajectoire demeure indispensable
Démantèlement des barrières entre langages de programmation
- Nous sommes désormais dans une époque où il n’est plus nécessaire de consacrer 100 heures de préparation préalable pour contribuer à un nouveau projet en C
- Même des langages à forte barrière d’entrée comme le C ou Rust permettent une contribution immédiate avec l’aide de l’IA
- L’IA repère rapidement les erreurs de débutant (erreurs de syntaxe, erreurs de type, mauvaise compréhension des outils, etc.), permettant de contribuer utilement sans attendre
- Une expertise approfondie reste importante, mais davantage de développeurs peuvent désormais atteindre une productivité multilangage
- On peut laisser à l’IA la syntaxe, les fonctions standard et les schémas, et se concentrer soi-même sur la vraie résolution de problèmes
- Le fait qu’un développeur spécialisé Ruby comme l’auteur soit devenu développeur multilangage en moins d’un an illustre une tendance révolutionnaire
- La transition de « développeur d’un seul langage » à « producteur multilangage » devient une réalité
- Cela pourrait marquer le début d’une évolution où la notion même d’expertise par langage se transforme
Conclusion
- Les agents de codage IA abaissent brutalement la barrière d’entrée des langages de programmation et ouvrent une nouvelle ère dans laquelle les développeurs peuvent travailler immédiatement et efficacement dans plusieurs langages
5 commentaires
Pour la génération de code, sans doute, mais qui va faire la vérification ou la revue du code…
Même sans savoir vraiment utiliser un langage qu’on ne maîtrise pas, on peut souvent au moins le lire à peu près, donc il me semble logique que cela fasse gagner du temps par rapport à avant.
J’ai l’impression qu’on peut désormais progresser bien plus vite qu’avant sur des technologies qu’on n’avait jamais utilisées ou dans des domaines qu’on n’avait jamais explorés.
Avis sur Hacker News
Je me demande si l’IA est en train de changer la courbe d’apprentissage, ou si elle rend simplement l’expérience plus confortable
En réaction au témoignage de quelqu’un qui trouvait révolutionnaire d’être devenu développeur multilingue en un an après avoir fait uniquement du Ruby pendant 10 ans, je pense plutôt que c’est surtout quelque chose qu’il n’avait simplement « jamais essayé pendant 10 ans »
Apprendre son premier langage de programmation et apprendre un nouveau langage après avoir déjà accumulé plusieurs années d’expérience, ce sont deux expériences totalement différentes
Je pense exactement la même chose
J’ai du mal à m’identifier à un développeur qui n’a utilisé qu’un seul langage pendant 10 ans
Au début, j’avais une forte identité liée au langage choisi, mais c’est auprès de développeurs vraiment expérimentés que j’ai appris que « les langages ne sont que des outils »
Le fait d’être exposé à plusieurs langages élargit énormément la perspective, et cela apporte une forme de compréhension difficile à exprimer avec des mots
J’ai été vraiment heureux d’avoir vécu cette expérience
Je pense qu’il y a une part de vérité dans l’idée que « même sans IA, on pouvait apprendre plusieurs langages en un an »
D’après mon expérience, en faisant de petits projets Python avec o4, je suis tombé sur des cas particuliers intéressants, et sans IA beaucoup de tâches auraient été bloquées à cause d’eux
Par exemple, la manière dont unraid gère les XML de VM, ou certains problèmes qui apparaissent avec dockers ; creuser ça soi-même peut facilement prendre une journée
Maintenant que l’IA guide aussi sur ces points, tout se passe de manière bien plus fluide
C’est un peu effrayant, mais ça marche vraiment bien
Pour info, mon premier langage de programmation, c’était l’ancien BASIC
L’IA rend les langages dominants encore plus populaires
Les langages sur lesquels l’IA se trompe le moins sont généralement ceux qui disposent de grandes communautés et d’énormes jeux de données, comme Python, JS ou Ruby
Du coup, l’effet d’amélioration de l’accessibilité est plus limité pour les langages de niche
Parce que la plupart des programmeurs ne maîtrisent pas suffisamment ces langages de niche pour repérer les petits bugs
Comme le montre aussi le machine learning, au final, le camp qui dispose de beaucoup de données d’entraînement part avec un avantage
L’IA est forte en pattern matching
Si on fait rentrer le problème dans un schéma existant, elle peut fournir immédiatement de bons exemples de code
Mais plus le problème est complexe ou atypique, moins l’IA est utile
Les humains peuvent manier avec plus de souplesse des concepts plus abstraits et dynamiques
Ceux qui utilisent des langages de niche accordent souvent plus d’importance à d’autres valeurs que la popularité (par ex. l’efficacité, l’argent, l’apprentissage, etc.)
Si la popularité d’un langage est importante, des experts pourraient produire beaucoup de bons exemples de code idiomatiques, puis l’IA pourrait en générer diverses variantes, ce qui ferait chuter brutalement la barrière à l’entrée
Si le petit développement devient plus facile, les gens s’intéresseront davantage au langage lui-même
Les LLM ont tendance à dire plus souvent n’importe quoi avec les langages de niche
Je suis développeur Scala, et je pense que la plupart des discussions sur l’utilité de l’IA dépendent du type de langage utilisé
Avec un langage comme JS, ce sera peut-être plus utile
Je crains que, lorsqu’un nouveau langage ou framework apparaît, si l’IA n’offre pas un support précis, les gens hésitent à adopter le changement
Ils peuvent avoir l’impression que l’inconfort dépasse les bénéfices
À chaque nouvelle release, il devient alors indispensable d’avoir une documentation MCP compatible avec l’IA ou des ressources supplémentaires
Pour ma part, j’ai eu une expérience très positive avec claude et Elm
Grâce au système de types statiques, la précision était élevée et cela m’a beaucoup aidé
Bien sûr, il donne parfois aussi des réponses bizarres, mais j’imagine que tout le monde a déjà vécu ça
Je pense qu’on vit déjà à une époque où il n’existe pratiquement plus de barrières entre les langages majeurs
Si l’on regarde seulement les 10 langages les plus utilisés aujourd’hui pour développer des applications, la plupart viennent des familles C ou ALGOL et partagent une syntaxe similaire, le call-by-reference et la gestion automatique de la mémoire
Un développeur professionnel peut passer de l’un à l’autre sans trop d’effort
Apprendre la gestion mémoire pour la première fois peut être un peu difficile, mais avec de bons patterns connus, des avertissements et des linters, cela reste gérable
En réalité, les langages à forte courbe d’apprentissage sont Rust, Ada SPARK, Lisp, Forth, ML, etc., et ce ne sont pas des langages majeurs
J’utilise l’IA comme partenaire de programmation d’appoint
Je m’appuie d’abord sur son « savoir large mais superficiel » pour explorer, puis je la sollicite quand il faut creuser en profondeur un domaine précis
Je l’utilise activement moins pour de nouveaux langages de programmation que pour apprendre de nouveaux concepts ou de nouvelles technologies (par ex. un backend webauthn ou l’intégration de passkeys)
Même du point de vue d’un débutant, l’IA est d’une grande aide
Cela dit, il lui est déjà arrivé de fournir de mauvais exemples, comme des dépendances abandonnées, mais au final cela m’a permis de mieux comprendre en profondeur, donc ça a aussi été une bonne expérience
Je ne voudrais pas lui confier le développement d’une app de manière entièrement automatique
Il y a souvent de petites erreurs, donc une relecture reste indispensable
L’IA m’aide beaucoup dernièrement à étudier un codebase Swift que je découvre
Elle répond rapidement à mes questions et accélère mon apprentissage
En revanche, pour contribuer réellement à un projet complexe, il faut toujours des compétences et de l’expérience
Même dans les langages que je connais, il y a beaucoup de choses fausses ; alors dans un langage que je ne connais pas, c’est encore plus difficile à relire
Chaque fois qu’on se plonge dans un nouveau langage, relire prend énormément de temps tant qu’on ne s’y est pas familiarisé
On dit que la barrière des langages a baissé, mais en pratique on voit aussi des cas comme WhatsApp qui passe d’une app desktop à une web app, donc les barrières n’ont pas complètement disparu
Cela me rappelle l’époque où Microsoft promouvait la plateforme .Net avec l’idée de faire collaborer une même équipe en utilisant J#, Fortran.Net, Cobol# et d’autres langages
Ils disaient même qu’avec cette approche, d’excellents spécialistes de #Intercal pourraient voir leur productivité multipliée par quatre
Je m’attends à ce qu’avec l’IA, les langages de programmation évoluent vers des modèles dotés d’un puissant système de types Hindley Milner
Haskell est difficile à apprendre, mais avec un jeu de données suffisant, ce serait une cible parfaite pour les agents de codage
C’est de haut niveau, formellement vérifiable, et il est facile d’y connecter un serveur de langage avec l’IA
En réalité, on a plutôt l’impression inverse : Haskell risque au contraire d’être délaissé par le support IA
Si on aime les langages fonctionnels, il faut se demander pourquoi la programmation en langage naturel est séduisante
Le langage naturel permet d’exprimer le résultat de manière ambiguë, et la machine comble automatiquement cette partie
Pour qu’il y ait une vraie innovation, il faudrait une manière de programmer qui introduise une logique forte + de l’ambiguïté, par exemple avec une base logique de type MTL
Malheureusement, la recherche dans ce domaine est presque à l’arrêt, et les réseaux de neurones dominent
Haskell est moins accueillant du point de vue des LLM, car le langage possède beaucoup de caractéristiques profondes
Les LLM traitent surtout des motifs textuels
Les langages qui offrent des fonctionnalités simples et des erreurs de compilation conviviales (par ex. Go) sont bien mieux gérés par l’IA
Personnellement, j’aime les langages avec une bonne inférence de types, mais du point de vue de l’IA, c’est différent
J’ai essayé les outils LSP MCP + LLM, et j’ai été un peu déçu
Les LSP ont été conçus à l’origine pour des humains, donc leur compatibilité avec l’IA n’est pas parfaite
Les LLM sont forts en pattern matching, et si la structure de types est simple, il n’y a presque pas d’erreurs de type
En revanche, quand la structure devient complexe, les LLM peuvent ne pas y arriver, ou l’utilisateur peut ne pas comprendre
Certains demandent aussi s’il existe des cas de vérification formelle à grande échelle avec Haskell ; des exemples comme seL4 ou CompCert reposent surtout sur C ou sur Coq + OCaml
L’usage de langages à types dépendants comme Agda pourrait aussi augmenter
En revanche, si les jeux de données restent trop petits, le transfert de connaissances par l’IA pourrait devenir difficile
Il est utile de traiter l’IA comme un partenaire de pair programming
Plus l’utilisateur apprend, plus le rôle de l’IA évolue : au début explications de base et petite génération de code, puis discussions avancées + génération de blocs de code plus importants, et enfin revue de code
Avec le temps, on finit soi-même par détecter davantage de bugs
Si l’on considère l’IA non comme un simple générateur de code mais comme un partenaire aux compétences complémentaires, elle devient vraiment utile
Dans un langage qu’on ne connaît pas, il faut questionner minutieusement les solutions qu’elle propose
Poser des questions précises comme « pourquoi faire ainsi ? », « et dans d’autres scénarios ? » aide vraiment à apprendre
Quand je pose des questions, l’IA valide mes idées, mais après quelques répétitions il devient difficile de lui faire totalement confiance
Prendre aussi l’habitude de demander à l’IA de poser des questions claires peut être utile
Cela permet de repérer à l’avance les points où la compréhension est erronée ou où le raisonnement manque de solidité
J’ai demandé un script bash pour tester la capacité de Gemini à générer du code, mais il contenait des erreurs
Heureusement, je connais bash et j’ai pu le corriger immédiatement, mais dans un langage inconnu, il me semble difficile d’affirmer que cela supprime la barrière du langage
Je pense que c’est un problème propre à bash
Par exemple, quand j’ai confié un travail d’automatisation similaire à un LLM en Go, cela a fonctionné du premier coup
Je ne pense pas qu’il soit juste d’y voir un problème de Gemini en soi, et je ne peux pas être d’accord avec une critique fondée uniquement sur une marque sans informations précises sur le modèle d’IA utilisé
En pratique, avec un paramétrage comme « Gemini 2.5 Pro (Jan 2025), température 0.15 », il génère immédiatement un excellent idiomatic bash script
(exemple de code omis)
Cela dit, j’ai aussi eu un problème de gestion des retours à la ligne dans un fichier modifié sous WSL2 avec Windows Notepad, et Gemini m’a gentiment indiqué la solution
Ce qui est amusant, c’est qu’en bash, l’absence de retour à la ligne à la fin du dernier fichier pose effectivement problème : c’est une limite de bash lui-même
En PowerShell, on peut faire pratiquement la même chose en one-liner, et l’absence de retour à la ligne final ne pose aucun problème
Avec l’aide de Gemini, j’ai aussi pu optimiser PowerShell en un code plus court
https://ruby-news.kr/articles/…
Un résumé de mon côté pour le service que je développe. C’est une traduction, donc c’est similaire, mais GeekNews est un peu mieux structuré et plus agréable à lire.