TS
Sign In
Knowledge Base
Detailed Notes||17m 41s

Jonathan Blow on Why AI Can't Program

https://www.youtube.com/watch?v=fzA37SKjrkk

Langages de programmation et Intelligence Artificielle (IA)

Points clés

  • Le but d’un langage de programmation est d’être lisible par l’humain et la machine, servant d’interface entre l’humain et le binaire de l’ordinateur.
  • Malgré les progrès de l’IA, les langages de programmation ne vont pas disparaître, car les APIs et les systèmes sous-jacents nécessitent encore une interface lisible en code source.
  • Les modèles de langage actuels (LLM) comme ChatGPT produisent du code source lisible, mais ne génèrent pas directement du binaire optimisé et fonctionnel sans couche d’interprétation.
  • Une IA capable de programmer parfaitement pourrait ressembler plus à des systèmes comme AlphaZero, qui apprennent par auto-expérience, mais qui parlerait toujours un langage compréhensible pour l’humain.
  • La programmation nécessite souvent un processus itératif de correction et d’ajustement, que l’humain seul ou avec l’aide de l’IA réalise par étapes successives.
  • Avoir accès à un code source lisible est crucial pour comprendre, diagnostiquer et corriger les bugs complexes, notamment ceux liés à l’état interne compliqué d’un programme.
  • Les LLM sont efficaces pour résoudre des bugs simples et répétitifs mais ont des difficultés avec les bugs complexes liés à des états profonds ou des interactions complexes dans le logiciel.
  • La complexité croissante d’un programme crée un réseau de contraintes (règles et interdépendances) difficile à gérer, ce qui limite actuellement les capacités des LLM à maintenir la cohérence globale du code.
  • L’usage de l’IA en programmation est utile à condition d’avoir une bonne base de code et de comprendre ses limites.
  • Il y a des différences d’efficacité selon le type de code, la taille et la complexité du projet, ainsi que l’expérience du développeur avec la base de code.
  • Le développement de jeux vidéo illustre bien ces points, notamment avec des contraintes techniques spécifiques (gestion de la position, collisions, états du jeu) et des bugs difficiles à cerner.

Détails importants

  • Les programmes écrits en C++ sont compilés en binaire, mais ce binaire doit émuler des interfaces et des interactions complexes entre modules, pas juste exécuter du code machine simple.
  • Un API est une interface permettant d’utiliser des fonctions déjà écrites, accessible seulement via un langage de programmation, ce qui empêche un fonctionnement en « binaire pur » sans langage.
  • Exemple concret d’un bug résolu par IA : jitter dans le mouvement via manette, corrigé grâce à l’analyse croisée des composants (contrôleur de caméra, physique, etc.) par l’IA.
  • LLD comme Claude ou Copilot facilitent la correction rapide de bugs et le développement de fonctionnalités, mais ne remplacent pas l’expertise humaine.
  • Des bugs complexes incluent les problèmes liés à la gestion globale des états internes des objets du jeu et des interactions compliquées dans le compilateur.
  • La programmation est aussi une question de « garder en tête » toutes les contraintes internes du logiciel (par exemple, gestion des coordonnées de jeu vs position visuelle).
  • L’IA a du mal à maintenir toutes ces contraintes en même temps, ce qui crée des erreurs ou oublis lors des modifications automatiques.
  • La complexité en développement de jeux vidéo s’explique aussi par des contraintes techniques comme l’optimisation de l’éclairage dans Unity, qui peut provoquer des problèmes de performance si mal gérée.
  • L’expérience d’un programmeur influence fortement son efficacité à débuguer et écrire du code avec l’aide d’une IA.

Conclusions

  • Les langages de programmation resteront nécessaires car ils fournissent un pont entre humains et machines, et les interfaces complexes comme les APIs ne peuvent être remplacées simplement par une production de binaire lisible.
  • L’IA sera un assistant précieux pour certaines tâches comme le débogage simple ou la génération de code basique, mais elle ne peut pas encore gérer la programmation complexe intégrale de manière autonome.
  • La programmation complexe est un processus itératif, nécessitant un retour humain et un accès à un code source lisible pour pouvoir identifier précisément où et pourquoi un problème survient.
  • Les IA basées sur des modèles de langage doivent être complétées ou remplacées par d’autres types d’IA (comme AlphaZero) plus spécialisées pour des tâches spécifiques comme la résolution de problèmes complexes ou l’optimisation.
  • L’adoption de l’IA en développement doit être accompagnée d’une attitude pragmatique : utiliser les outils disponibles mais reconnaître leurs limites et conserver un savoir-faire humain avancé.
  • La complexité croissante des programmes et leurs nombreuses contraintes internes restent un défi majeur que l’IA n’a pas encore transcendé.
  • L’intégration réussie de l’IA dans la programmation repose sur une bonne structure de code, la familiarité du développeur avec son code et la capacité à interpréter et corriger les suggestions automatiques.
Generated with Tapescript
7f0104f - 03/02/2026