En informática , la programación automática [1] es un tipo de programación informática en la que algún mecanismo genera un programa informático para permitir que los programadores humanos escriban el código en un nivel de abstracción superior.
Ha habido poco acuerdo sobre la definición precisa de programación automática, principalmente porque su significado ha cambiado con el tiempo. David Parnas , al rastrear la historia de la "programación automática" en una investigación publicada, señaló que en la década de 1940 describía la automatización del proceso manual de perforar cinta de papel . Más tarde se refería a la traducción de lenguajes de programación de alto nivel como Fortran y ALGOL . De hecho, uno de los primeros programas identificables como compilador se llamaba Autocode . Parnas concluyó que "la programación automática siempre ha sido un eufemismo para la programación en un lenguaje de nivel superior al que estaba entonces disponible para el programador". [2]
La síntesis de programas es un tipo de programación automática en la que se crea un procedimiento desde cero, en función de requisitos matemáticos.
Mildred Koss , una de las primeras programadoras de UNIVAC , explica: "Escribir código de máquina implicaba varios pasos tediosos: dividir un proceso en instrucciones discretas, asignar ubicaciones de memoria específicas a todos los comandos y administrar los buffers de E/S. Después de seguir estos pasos para implementar rutinas matemáticas, una biblioteca de subrutinas y ordenar programas, nuestra tarea era observar el proceso de programación más amplio. Necesitábamos entender cómo podríamos reutilizar el código probado y hacer que la máquina ayudara en la programación. Mientras programábamos, examinamos el proceso e intentamos pensar en formas de abstraer estos pasos para incorporarlos a un lenguaje de nivel superior. Esto condujo al desarrollo de intérpretes, ensambladores, compiladores y generadores: programas diseñados para operar sobre otros programas o producirlos, es decir, programación automática ". [3]
La programación generativa y el término relacionado metaprogramación [4] son conceptos mediante los cuales se pueden escribir programas "para fabricar componentes de software de manera automatizada" [5], de la misma manera que la automatización ha mejorado "la producción de productos tradicionales como prendas de vestir, automóviles, productos químicos y productos electrónicos". [6] [7]
El objetivo es mejorar la productividad del programador . [8] A menudo se relaciona con temas de reutilización de código, como la ingeniería de software basada en componentes .
La generación de código fuente es el proceso de generar código fuente a partir de una descripción del problema [9] o de un modelo ontológico como una plantilla y se logra con una herramienta de programación como un procesador de plantillas o un entorno de desarrollo integrado (IDE). Estas herramientas permiten la generación de código fuente a través de varios medios.
Los lenguajes de programación modernos están bien soportados por herramientas como Json4Swift ( Swift ) y Json2Kotlin ( Kotlin ).
Los programas que podrían generar código COBOL incluyen:
Estos generadores de aplicaciones admitían inserciones y anulaciones de COBOL.
Un procesador de macros , como el preprocesador de C , que reemplaza patrones en el código fuente según reglas relativamente simples, es una forma simple de generador de código fuente. También existen herramientas de generación de código fuente a fuente . [11] [12]
Los modelos de lenguaje grandes como ChatGPT son capaces de generar el código fuente de un programa a partir de una descripción del programa dada en un lenguaje natural. [13]
Muchos sistemas de bases de datos relacionales proporcionan una función que exportará el contenido de la base de datos como consultas de definición de datos SQL , que luego pueden ejecutarse para volver a importar las tablas y sus datos, o migrarlos a otro RDBMS.
Una plataforma de desarrollo de bajo código (LCDP) es un software que proporciona un entorno que los programadores utilizan para crear software de aplicación a través de interfaces gráficas de usuario y configuración en lugar de la programación informática tradicional .
La programación generativa, como subdominio de la metaprogramación, describe la práctica de escribir programas que generan otros programas como parte de su ejecución.
Programación Generativa (PG) es un intento de fabricar componentes de software de forma automatizada mediante el desarrollo de programas que sintetizan otros programas.
Software que genera programas de aplicación a partir de descripciones del problema en lugar de hacerlo mediante programación tradicional. Es de un nivel superior y más fácil de usar que un lenguaje de programación de alto nivel como...