¿Puede un programa escribir un programa (es decir, el programa x puede identificar un algoritmo para escribir el programa y, a pesar del algoritmo z)?

Un ejemplo es Superopt, una herramienta que genera “la secuencia de instrucciones más corta para una función determinada”. Por supuesto, la longitud de la secuencia que puede generar es bastante pequeña.

Del mismo modo, puede usar la programación genética (consulte, por ejemplo, Una guía de campo para la programación genética) para generar código, dado como entrada una forma de probar la salida y decir qué tan cerca está de su resultado deseado. Los resultados pueden ser mixtos, pero esto se acerca mucho a “escribir los casos de prueba y generar automáticamente el código”. La programación genética también se puede utilizar para el diseño de circuitos, donde ha mostrado algunos éxitos.

Se puede usar un lenguaje completo que no sea de Turing llamado Tracery para generar texto, incluidos gráficos SVG, y se usa para muchos bots de Twitter. Usé Tracery para generar la salida de Tracery para Mark’s MetaArtbot, un artbot que genera artbots.

Por lo general, uno también incluye compiladores y traducción automática de programas en esta categoría, a pesar de que generan “el mismo” algoritmo que la entrada. Pero esta traducción puede ser difícil de entender para un humano, por ejemplo, compilar código MATLAB en un FPGA.

Sí, pero los ejemplos hasta ahora no son extremadamente sofisticados en la mayoría de los campos.

Un ejemplo obvio son las “plantillas” incluidas con la mayoría de los IDE principales (entornos de desarrollo integrados) donde el programador simplemente elige un “tipo de programa” y el IDE crea una solución inicial de muestra que compilará y funcionará, por lo general no hace nada muy interesante, pero quizás tener una GUI y soporte de menú estándar.

Otra es la larga tradición de “Lisp” (y otros lenguajes) para implementar “macros”, que son una función como característica que escribe otras funciones basadas en argumentos para la macro.

Hay otros y se vuelven más sofisticados cada año.

Hace unos años, una atención de conducción autónoma era una broma, y ​​el software de diagnóstico médico ha tardado 50 años en superar significativamente los programas de los años 60 y 70, pero ahora los programas de “Aprendizaje profundo” alertan a los hospitales sobre los pacientes que ESTÁN ACERCA DE ENFERMO – y nadie puede explicar los detalles de cómo lo hacen – incluyendo el programa.

La singularidad está cerca.

El algoritmo genético es uno de esos métodos para escribir programas para escribir programas. Sin embargo, no es realmente tan sofisticado en este punto.

More Interesting

¿Cómo ordenar una matriz de enteros proporcionados como una cadena como entrada desde la línea de comandos, usando lenguaje C?

¿Cuál es la estructura de algoritmo / datos utilizada por Lucene para calcular el término frecuencia de los documentos?

Cómo ordenar una matriz 2D de tipo char utilizando la función C ++ sort () o qsort ()

¿Alguien puede proporcionarme un algoritmo de muestra en CS para ISC 2017?

Cómo ordenar datos multivariados

F (n) E de O (g (n)) donde log (g (n))> 1 yf (n)> 1 para n grande?

Cómo implementar el mapa usando el árbol de búsqueda binario en Java

¿Es posible usar Dijkstra por dos costos?

¿Los algoritmos de aprendizaje y las estructuras de datos son muy importantes para la informática y la programación?

¿Es correcto mi nuevo estado de ánimo? Ingresé a la programación desde un punto de vista de programación algorítmica y, como tal, tengo una inclinación a querer saber cómo funcionan las cosas debajo. Pero ahora, después de un tiempo en el mundo de los desarrolladores, finalmente tengo que darme cuenta de que se trata menos de eso. ¿Lo que usted dice?

¿Qué tipo de algoritmos de reconocimiento de imagen existen?

¿Cuál es el algoritmo más conocido para unir varias tablas (> 5) que contienen uniones externas (en una base de datos no Oracle) implementadas a través de un lenguaje programático?

¿Cuál es la diferencia entre aprendizaje supervisado, no supervisado, refuerzo y aprendizaje profundo?

¿Quién sabe qué hay detrás de la API de Google Nearby Search? ¿Qué algoritmo usan? ¿Cómo encuentra Google una estación de servicio cercana?

Cómo determinar la complejidad de esta recurrencia T (n) = 16 * T (n / 4) + n! usando el teorema maestro