21 points par GN⁺ 2025-07-25 | 5 commentaires | Partager sur WhatsApp
  • 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
  • À 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

 
tested 2025-07-25

Pour la génération de code, sans doute, mais qui va faire la vérification ou la revue du code…

 
3ae3ae 2025-07-27

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.

 
girr311 2025-07-25

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.

 
GN⁺ 2025-07-25
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

    • J’ai du mal à comprendre comment on peut avoir confiance dans le résultat de l’IA dans un langage qu’on ne connaît pas
      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

    • J’aimerais revenir à cette époque où on pouvait vraiment croire à ce genre de choses
  • 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

 
stadia 2025-07-25

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.