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 n'y a pas eu beaucoup de consensus sur la définition précise de la programmation automatique, principalement parce que sa signification a changé au fil du temps. David Parnas , retraçant l'histoire de la « programmation automatique » dans les recherches publiées, a noté que dans les années 1940, elle décrivait l'automatisation du processus manuel de perforation de bandes de papier . Plus tard, elle faisait référence à la traduction de langages de programmation de haut niveau comme Fortran et ALGOL . En fait, l'un des premiers programmes identifiables comme un compilateur s'appelait Autocode . Parnas a conclu que « la programmation automatique a toujours été un euphémisme pour la programmation dans un langage de niveau supérieur à celui dont disposait alors le programmeur. »
La synthèse de programme est un type de programmation automatique où une procédure est créée à partir de zéro, sur la base d'exigences mathématiques.
Origine
Mildred Koss , l'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, attribuer des emplacements mémoire spécifiques à toutes les commandes et gérer les tampons d'E/S. Après avoir suivi ces étapes pour implémenter des routines mathématiques, une bibliothèque de sous-routines et trier les programmes, notre tâche consistait à examiner le processus de programmation dans son ensemble. Nous devions comprendre comment nous pouvions réutiliser le code testé et faire en sorte que la machine nous aide à programmer. Au fur et à mesure que nous programmions, nous examinions le processus et essayions de trouver des moyens d'abstraire ces étapes pour les incorporer dans un langage de plus haut niveau. Cela a conduit au développement d'interpréteurs, d'assembleurs, de compilateurs et de générateurs, des programmes conçus pour fonctionner sur ou produire d'autres programmes, c'est-à-dire la programmation automatique . »
Programmation générative
La programmation générative et le terme associé métaprogrammation sont des concepts par 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 produits 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 de code tels que l'ingénierie logicielle basée sur les composants .
Génération de code source
La génération de code source est le processus de génération de code source basé sur une description du problème ou un modèle ontologique tel qu'un modèle et est réalisée avec un outil de programmation tel qu'un processeur de modèles ou un environnement de développement intégré (IDE). Ces outils permettent la génération de 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 qui pourraient générer du code COBOL incluent :
- la série DYL250/DYL260/DYL270/DYL280
- SB-5 de la Business Controls Corporation
- Package générateur de programmes d'application PMM2170 de Peat Marwick Mitchell
Ces générateurs d'applications prenaient en charge les insertions et les remplacements COBOL.
Un processeur de macros , tel que le préprocesseur C , qui remplace les modèles 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 dans un langage naturel.
De nombreux systèmes de bases de données relationnelles fournissent une fonction qui exporte 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.
Applications low-code
Une plate-forme 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 .