Programacion automatica


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 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 , rastreando 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.

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 en un lenguaje de nivel superior. Esto condujo 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]

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 .