# Programación automática

La Programación Automática pretende que sea el propio ordenador o el software el que escriba los programas que necesitan las personas, siguiendo las indicaciones de estas.

## Historia

Desde que existen los ordenadores, los programadores han intentado que su trabajo sea lo más sencillo posible. Para ello han inventado y desarrollado diferentes tipos de técnicas y multitud de programas con la idea de resolver los diferentes tipos de problemas, que se les presentaban tanto a ellos mismos como a otras personas, con ayuda de ordenadores esperando que sus trabajos fueran más rentables o simplemente que pudieran solucionarlos con mayor facilidad y efectividad.
Existen muchos ejemplos de programas que escriben programas, por ejemplo, los traductores de lenguajes que toman un programa fuente escrito por el programador y producen como resultado un programa que puede ejecutarse, es decir que producen un ejecutable.
Sin embargo, cuando se habla de programación automática los objetivos son más ambiciosos y eso no es fácil de conseguir.
En Mitchell, T.M. (1997). Machine Learning. McGraw Hill.  puedes hacerte una idea de los objetivos de la programación automática.

## Dificultades

Existen grandes dificultades a la hora de conseguir estos objetivos. Una de las principales dificultades consiste en que los programas generados por los ordenadores son largos y difíciles de comprender. No son tan sencillos como los programas escritos por personas y en general tienen muchas instrucciones repetidas.

## Actualidad

En la actualidad se están realizando esfuerzos en conseguir que el ordenador ayude en la construcción de programas. Algunas empresas están invirtiendo recursos materiales y humanos para conseguir el logro de estos objetivos.

## España

En España, en concreto en la Universidad Politécnica de Valencia, se llevan varios años trabajando en este tema en colaboración con una empresa alemana y al parecer los resultados que están obteniendo son muy esperanzadores. En cualquier caso, todavía existe mucho que hacer hasta conseguir que los humanos podamos transmitir nuestras ideas a los ordenadores con el fin de que nos ayuden a llevarlas a la práctica.

## Ejemplo: La grabadora de Excel

A continuación se muestra un ejemplo de una herramienta que permite grabar de forma automática subprogramas en VBA.

### Descripción

Existe una herramienta en Excel que permite grabar subprogramas sin argumentos (mal llamadas macros en Excel, ya que el concepto de macro es mucho más amplio; véase las macros de LISP si se desea trabajar con macros realmente) muy sencilla que es parecida en funcionamiento al típico grabador de cinta de casete que se utiliza para grabar sonido. En este caso lo que se graba son las acciones que realiza el usuario mediante el ratón y el teclado actuando sobre las celdas de la hoja de cálculo.
Existe otra herramienta similar en la hoja de cálculo LibreOffice Calc, aunque el código generado de forma automática en ambas aplicaciones es diferente e incompatible.

### Ejemplos

A continuación se proponen unos sencillos ejemplos con el fin de que el usuario pueda familiarizarse con la herramienta de grabación automática. Una vez generada la nueva macro debería analizarse y comparar el código generado automáticamente con el que nosotros hubiéramos escrito.
* Grabar un modelo de factura.
* Grabar un modelo de presupuesto.
* Grabar un modelo de albarán.

### Analizar una macro

Analizar las macros generadas de forma automática y ver qué instrucciones hubiéramos utilizado nosotros para escribir un programa similar al generado de forma automática.

### Aprender de la grabadora

Utilizando la herramienta de grabación automática de macros en Excel, escribir un subprograma que cambie el color de una celda de la hoja de cálculo.
Posteriormente, analizar el código generado de forma automática y a partir de él, escribir una nueva macro que recorra una matriz de la hoja de cálculo y cambie el color de todas las celdas que cumplan una determinada condición, tal como test(x), que será definida por el usuario.
También es útil observar qué es lo que va escribiendo la grabadora según vamos solicitando acciones a Excel. Para ello debe mostrarse tanto la pantalla de Excel como la pantalla del módulo en el que se esté grabando la macro. Téngase en cuenta que las macros siempre se graban en un nuevo módulo.