¿Podría un humano crear una IA que podría, a pedido del humano, crear un nuevo programa?

Yo diría que en principio podemos, aunque …

… no estamos del todo en el sentido de que una persona que no tiene conocimientos de IA pueda pensar. No podemos preguntarle a una computadora algo como:

—Ordenador, hazme un programa para medir cuántas personas visitan mi sitio web.

Y espere que la IA descubra dónde está nuestro sitio web, cómo escribir JavaScript sensible, comandos de base de datos y una interfaz de usuario adecuada. Hasta donde yo sé, nadie ha codificado explícitamente las heurísticas que usamos los humanos cuando diseñamos un programa en una IA capaz de generar código. Es decir, la práctica de la ingeniería moderna del software humano.

Estamos allí en el sentido de que podemos decirle que cree sistemas pequeños y restringidos que en realidad son programas informáticos minúsculos. Solía ​​hacerlo todo el tiempo con mi marco, ya que puedes crear y evaluar AST [1] (Árboles de sintaxis abstracta) para explorar el espacio de diseño informático necesario para crear un programa informático simple.

Por ejemplo, puedes preguntarlo:

—Ordenador, conviérteme en un programa que cada vez que lo alimente con un número devuelva lo que ese número se multiplica por sí mismo y suma 1.

Y el árbol se resolvería mínimamente a un polinomio de la forma:

[matemáticas] f (x) = x ^ 2 + 1 [/ matemáticas]

Este caso específico de programación automática (lo sé, es un poco difícil llamarlo así) se llama Regresión simbólica.

También puede pedirle que cree redes de clasificación mínimas [2], que son “dispositivos” abstractos que pueden clasificar arbitrariamente un conjunto dado de números y generar algoritmos similares para ordenar burbujas o insertar.

Si considera que la corrección de errores crea un nuevo programa con menos errores, un buen artículo que leí hace mucho tiempo afirmó que implementó la Reparación Automática de Programas [3].

Otro ejemplo de programación automática son las entradas genéticas en la competencia Core War [4].

Entonces sí, podemos. Aunque no es lo mismo que una persona normal esperaría, y al menos todavía no sin un par de avances en el proceso.

Espero que esto ayude.

Notas al pie

[1] Árbol de sintaxis abstracta | Wikiwand

[2] Los parásitos que evolucionan conjuntamente mejoran la evolución simulada como un procedimiento de optimización

[3] http://dijkstra.cs.virginia.edu/…

[4] La página de información de Corewar

Esto requeriría las siguientes tareas principales:

  1. Para poder entender el lenguaje natural, para que pueda comprender la descripción del problema en inglés (por ejemplo) como lo haría un desarrollador humano.
  2. Capacidad para comprender la informática para que pueda utilizar los conceptos necesarios para implementar una solución
  3. Creatividad: para poder resolver un problema que no se ha resuelto en su forma exacta antes. Puede que no necesite ser súper creativo en el estándar humano. Lo que quiero decir aquí es creatividad a escala de minutos. Como nombrar una variable o función.
  4. Capacidad para generar código.

El problema 4 es fácil y ya está en práctica. El problema 1 requiere la comprensión del lenguaje natural, que es un problema completo de IA y está muy sin resolver.

El problema 2 podría ser posible de resolver. El problema 3 no está resuelto y carecemos del formalismo adecuado para perseguirlo prácticamente.

Como puede ver, en general es un problema extremadamente complejo que requiere avances en múltiples áreas en ciencias de la computación e investigación de inteligencia artificial.

Se podría desarrollar algo que funcione en un lenguaje muy específico y un conjunto limitado de problemas. Pero trabajar con algo menos que un lenguaje natural como entrada significaría que no está al nivel de un humano. De hecho, el lenguaje requerido podría no ser esencialmente más que otro lenguaje de programación, lo que en primer lugar anula el propósito.

Entonces, desafortunadamente, la respuesta es: No, actualmente no podemos hacerlo.