Article de reference

Programmation automatique

En informatique , la programmation automatique est un type de programmation informatique dans lequel un mécanisme génère un programme informatique , pour permettre aux programme...

En informatique , la programmation automatique est un type de programmation informatique dans lequel un mécanisme génère un programme informatique , pour permettre aux programmeurs humains d'écrire le code à un niveau d'abstraction plus élevé.

Il existe peu de consensus sur la définition précise de la programmation automatique, principalement parce que sa signification a évolué au fil du temps. David Parnas , retraçant l'histoire de la « programmation automatique » dans les publications scientifiques, a constaté que dans les années 1940, elle désignait l'automatisation du processus manuel de perforation de bandes de papier . Plus tard, elle a fait référence à la traduction de langages de programmation de haut niveau comme Fortran et ALGOL . L'un des premiers programmes identifiables comme un compilateur se nomme Autocode . Parnas conclut que « la programmation automatique a toujours été un euphémisme pour désigner la programmation dans un langage de plus haut niveau que ceux alors disponibles pour le programmeur »

La synthèse de programmes est un type de programmation automatique où une procédure est créée à partir de zéro, sur la base d'exigences mathématiques.

Mildred Koss , une des premières programmeuses d'UNIVAC , explique : « L'écriture du code machine impliquait plusieurs étapes fastidieuses : décomposer un processus en instructions discrètes, assigner des emplacements mémoire spécifiques à toutes les commandes et gérer les tampons d'entrée/sortie. Après avoir suivi ces étapes pour implémenter des routines mathématiques, une bibliothèque de sous-routines et des programmes de tri, notre tâche consistait à examiner le processus de programmation dans son ensemble. Nous devions comprendre comment réutiliser du code testé et comment faire en sorte que la machine nous aide à programmer. Au fur et à mesure que nous programmions, nous analysions le processus et cherchions des moyens d'abstraire ces étapes pour les intégrer à un langage de plus haut niveau. Cela a conduit au développement des interpréteurs, des assembleurs, des compilateurs et des générateurs — des programmes conçus pour exécuter ou produire d'autres programmes, c'est-à-dire la programmation automatique . »

Programmation générative

La programmation générative et le terme connexe métaprogrammation sont des concepts selon lesquels des programmes peuvent être écrits « pour fabriquer des composants logiciels de manière automatisée » tout comme l'automatisation a amélioré « la production de biens traditionnels tels que les vêtements, les automobiles, les produits chimiques et l'électronique ».

L’objectif est d’améliorer la productivité des programmeurs . Il est souvent lié à des sujets de réutilisation du code tels que l’ingénierie logicielle basée sur les composants .

Génération du code source

La génération de code source est le processus de création de code source à partir d'une description du problème ou d'un modèle ontologique tel qu'un gabarit. Elle s'effectue à l'aide d'un outil de programmation comme un processeur de gabarits ou un environnement de développement intégré (IDE). Ces outils permettent de générer du code source par divers moyens.

Les langages de programmation modernes sont bien pris en charge par des outils comme Json4Swift ( Swift ) et Json2Kotlin ( Kotlin ).

Les programmes capables de générer du code COBOL comprennent :

Ces générateurs d'applications prenaient en charge les insertions et les remplacements COBOL.

Un macroprocesseur , tel que le préprocesseur C , qui remplace des motifs dans le code source selon des règles relativement simples, est une forme simple de générateur de code source. Il existe également des outils de génération de code source à source .

Les grands modèles de langage tels que ChatGPT sont capables de générer le code source d'un programme à partir d'une description du programme donnée en langage naturel.

De nombreux systèmes de gestion de bases de données relationnelles ( SGBDR ) offrent une fonction permettant d'exporter le contenu de la base de données sous forme de requêtes de définition de données SQL , qui peuvent ensuite être exécutées pour réimporter les tables et leurs données, ou les migrer vers un autre SGBDR.

Certains langages utilisent des annotations pour générer du code source et l'injecter. Par exemple, Java et Kotlin utilisent des annotations , comme par exemple la bibliothèque Project Lombok qui s'exécute à la compilation grâce à un processeur d'annotations . Une proposition pour C++ vise à ajouter l'injection de séquences de jetons via la programmation réflexive à la compilation (réflexion).

Applications à faible code

plateforme de développement low-code (LCDP) est un logiciel qui fournit un environnement que les programmeurs utilisent pour créer des logiciels d'application via des interfaces utilisateur graphiques et une configuration au lieu de la programmation informatique traditionnelle .

Codage d'ambiance

Le codage par intuition est une pratique de développement logiciel assistée par l'intelligence artificielle (IA), où le développeur décrit un projet ou une tâche à l' aide d'un modèle de langage étendu (LLM) qui génère automatiquement le code source. Le codage par intuition peut impliquer l'acceptation du code généré par l'IA sans examen approfondi du résultat, en se basant plutôt sur les résultats et les suggestions de suivi pour orienter les modifications.

Le terme a été inventé en février 2025 par l'informaticien Andrej Karpathy , cofondateur d' OpenAI et ancien responsable de l'IA chez Tesla . Merriam-Webster l'a répertorié en mars 2025 comme une expression « argot et tendance ». Il a été désigné mot de l'année 2025 par le dictionnaire Collins.

Les partisans du « vibe coding » affirment qu'il permet même aux programmeurs amateurs de produire des logiciels sans la formation et les compétences approfondies requises en génie logiciel . Les critiques soulignent un manque de responsabilité, de maintenabilité et un risque accru d'introduction de failles de sécurité dans les logiciels qui en résultent.