En informática , el término programación automática [1] identifica un tipo de programación informática en la que algún mecanismo genera un programa informático que permite a los programadores humanos escribir el código a 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 la cinta de papel . Posteriormente se refirió 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 eufemismopara programar en un lenguaje de nivel superior al que estaba 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.
Origen
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 búferes de E / S. Después de seguir estos pasos para implementar rutinas matemáticas, una biblioteca de subrutinas y programas de clasificación, nuestra tarea era observar el proceso de programación más amplio. Necesitábamos comprender cómo podríamos reutilizar el código probado y hacer que la máquina ayudara en la programación. Mientras programamos, examinamos el proceso y trató de pensar en formas de abstraer estos pasos para incorporarlos a un lenguaje de nivel superior, lo que llevó al desarrollo de intérpretes, ensambladores, compiladores y generadores, programas diseñados para operar o producir otros programas, es decir, programación automática . " [3]
Programación generativa
La programación generativa y el término relacionado metaprogramación [4] son conceptos mediante los cuales los programas pueden escribirse "para fabricar componentes de software de forma automatizada" [5] al igual que la automatización ha mejorado "la producción de productos tradicionales como prendas de vestir, automóviles, productos químicos, y electrónica ". [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 .
Generación de código fuente
La generación de código fuente es el proceso de generar código fuente basado en una descripción del problema [9] o 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:
- las series DYL250 / DYL260 / DYL270 / DYL280 [10]
- SB-5 de Business Controls Corporation
- Paquete generador de programa de aplicación PMM2170 de Peat Marwick Mitchell
Estos generadores de aplicaciones admitían inserciones y anulaciones COBOL.
Un macroprocesador , como el preprocesador de C , que reemplaza patrones en el código fuente de acuerdo con reglas relativamente simples, es una forma simple de generador de código fuente. [ cita requerida ] También existen herramientas de generación de código fuente a fuente. [11] [12]
Aplicaciones de bajo código
Una plataforma de desarrollo de código bajo (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 .
Ver también
- Corrección automática de errores
- Aprendizaje automático automatizado
- Comparación de herramientas de generación de código
- Programación orientada a funciones
- Programación orientada al lenguaje
- Lenguaje de modelado
- Transformación de programas
- Traducción semántica
- Transformación basada en vocabulario
- Lenguaje de programación de cuarta generación
- Plataformas de desarrollo de bajo código
Notas
- ^ Ricardo Aler Mur, " Programación inductiva automática archivado el 4 de marzo de 2016 en la Wayback Machine ", Tutorial de ICML 2006 . Junio de 2006.
- ^ DL Parnas. " Aspectos de software de los sistemas estratégicos de defensa ". Científico estadounidense . Noviembre de 1985.
- ^ Chun, Wendy. "Sobre el software o la persistencia del conocimiento visual". Gray Room 18. Boston: 2004, pág. 30.
- ^ "Acerca de la programación generativa" .
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.
- ^ P. Cointe (2005). "Hacia la programación generativa". Paradigmas de programación no convencionales . Apuntes de conferencias en Ciencias de la Computación. 3566 . págs. 315–325. doi : 10.1007 / 11527800_24 . ISBN 978-3-540-27884-9.
La Programación Generativa (GP) es un intento de fabricar componentes de software de forma automatizada mediante el desarrollo de programas que sintetizan otros programas.
- ^ "Programación Generativa: Conceptos y Experiencias (GPCE)" .
- ^ Está previstauna conferencia de SIGPLAN sobre este tema para noviembre de 2018. Los intentos de principios de la década de 1970 en esta área incluyeron Yacc y los programas Lex relacionados.
- ^ James Wilcox, " Pagar demasiado por el desarrollo de aplicaciones personalizadas ", marzo de 2011.
- ^ "Generador de aplicaciones" . PCmag.com.
Software que genera programas de aplicación a partir de descripciones del problema en lugar de 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 ...
- ^ "Sintaxis de comandos de DYL-280" (PDF) . Archivado desde el original (PDF) el 30 de julio de 2018 . Consultado el 3 de septiembre de 2018 .
- ^ Noaje, Gabriel, Christophe Jaillet y Michaël Krajecki. " Traductor de código fuente a fuente: OpenMP C a CUDA ". Computación y comunicaciones de alto rendimiento (HPCC), 2011 IEEE 13th International Conference on. IEEE, 2011.
- ^ Quinlan, Dan y Chunhua Liao. " La infraestructura del compilador de fuente a fuente de ROSE ". Taller de usuarios de Cetus e infraestructura de compiladores, en conjunto con PACT. Vol. 2011, 2011.
Referencias
- Programación generativa: métodos, herramientas y aplicaciones por Krzysztof Czarnecki y Ulrich W. Eisenecker, Addison Wesley, 2000.
enlaces externos
- Generación de código para tontos