La programación automática en informática e ingeniería informática se refiere a la producción de código de programación informática por parte de algún sistema o software en respuesta a entradas o comandos más abstractos del usuario. En cierto sentido, la programación automática describe cualquier situación en la que una computadora o software reemplazará una declaración ingresada por un programador con un bloque de código que puede realizar concretamente las acciones descritas en la declaración. Cuando se usa en otro sentido, la programación automática puede describir el objetivo de crear un lenguaje o sistema de programación que pueda ensamblar intuitivamente una aplicación completa basándose solo en la dirección más básica del programador. La programación automática se puede utilizar en algunos campos de la investigación informática para referirse al proceso de diseño de un sistema de inteligencia artificial (IA) capaz de producir de forma autónoma un programa para completar una tarea o de modificar automáticamente su propio código para mejorar la funcionalidad.
La definición de programación automática es algo vaga. Originalmente se usó durante los primeros años de la programación de computadoras para describir la traducción de instrucciones abstractas similares al lenguaje ensamblador en código de máquina expandido. Esto se llamó programación automática porque el compilador reemplazaría automáticamente una sola declaración legible por humanos con docenas o más de instrucciones de código de máquina, esencialmente escribiendo automáticamente el programa de una manera primitiva. Los compiladores de lenguajes siguen realizando las mismas acciones en la mayoría de los casos, independientemente del lenguaje de programación superpuesto que se utilice.
Otro uso del término «programación automática» es para describir la generación de código automatizado. Esto es cuando un entorno de desarrollo integrado (IDE) u otra herramienta se puede usar visualmente, o de una manera muy fácil, para especificar cómo un usuario final vería un programa. Una vez que se crea el resultado deseado, el software o IDE puede producir automáticamente un código fuente funcional para lograr el resultado sin ninguna otra entrada del programador.
En algunos casos, la programación automática también se refiere al estudio de cómo implementar lenguajes a un nivel tan alto que el código fuente parece un lenguaje natural. Un lenguaje de programación como este produciría automáticamente la aplicación basándose en la amplia entrada del programador. No importa cuán automático se vuelva un lenguaje, sin embargo, debe tenerse en cuenta que el programador necesita en algún momento modificar manualmente el código para una funcionalidad específica utilizando el propio lenguaje de programación.
En el campo de la inteligencia artificial, se realizan algunas investigaciones para desarrollar un sistema que pueda programarse automáticamente para agregar capacidades que originalmente no tenía. Esto también se extiende a las IA que son capaces de escribir software independiente que puede resolver un problema específico. Una aplicación sería crear un lenguaje de programación que pudiera usar IA para generar prototipos de programas rápidos.