Un amigo mío sin conocimientos de programación me hizo esta pregunta y me pareció interesante.
Creo que no es posible porque requeriría una inteligencia artificial realmente avanzada capaz de analizar el texto de un problema, pensar en una solución y programarlo. Solo pensar en una máquina capaz de programar una calculadora simple me parece bastante avanzado.
Pero tal vez me equivoque y me gustaría saber qué piensa al respecto y si conoce algún artículo / investigación sobre el tema, o si ya existe o si existe la posibilidad de seleccionar una especificación y obtener el máquina para autoprogramarse a esta "especificación"
Respuestas:
Joel realmente respondió a esto hace unos años . El significado real de "enseñarle a una máquina a programar por sí mismo" es "enseñarle a una máquina cómo tomar una especificación y crear un programa que corresponda a esa especificación". Y con eso en mente:
La única forma de evitar esto sería producir una computadora inteligente real con suficiente intuición para hacer todo el relleno de espacios en blanco que usted y yo hacemos automáticamente, todo el tiempo, al producir software ... en cuyo caso usted Terminaría con una computadora que se programa tan bien como un desarrollador humano. ;)
fuente
Claro, hacemos esto todo el tiempo (para subconjuntos de problemas extremadamente limitados). Es bastante trivial imaginar dar otro paso o dos y vincular algo como Siri en la entrada de estos generadores de código (o algo así como Wolfram Alpha) que a su vez escribe código y resuelve su problema. Esperaría que algo ya exista en algún lugar para hacer las cosas más básicas.
El problema con escribir software complejo para negocios no es hacer un programa para escribir el código, es escribir un programa para cumplir con los requisitos.
fuente
Creo que la respuesta de @Mason Wheeler tiene la idea clave. Dice así:
La entropía de Shannon de Tic-tac-toe es realmente pequeña. Por eso llamamos al tic-tac-toe un juego "resuelto" o "determinista". No es realmente interesante una vez que pasas la escuela primaria. Las damas tienen una entropía más alta, si consideras la entropía de todos los juegos posibles que puedes jugar. Pero las damas también son un juego "resuelto" o "determinista". Si te mueves primero, solo debes ganar o empatar. El ajedrez tiene una entropía mucho más alta, pero ningún humano ha vencido a los mejores jugadores de computadoras desde 2006. Entonces, en cierto modo, las computadoras han dominado el ajedrez de una manera que los humanos no pueden. Big Blue analizó Wikipedia, y luego jugó Jeopardy contra jugadores humanos, y los derrotó profundamente.
¿Que sigue? ¿Cuál es la entropía de una novela, o los sonetos de Shakepeare?
Del mismo modo, en el espacio de programación, lo que probablemente surgirá es un conjunto creciente de competencias. Prolog abordó un conjunto de problemas de la computadora donde configuró el problema y la computadora resolvió la respuesta. Alguien probablemente encontrará clases de problemas de programación simples que una computadora podrá satisfacer, etc. Luego, alguien se basará en eso para producir "personalización a pedido" dentro de algún espacio problemático. Y así continúa.
Creo que la pregunta se convierte en cuánto tiempo le lleva a una IA dominar una cantidad determinada de entropía ... y cuántos recursos informáticos se requieren. Creo que es inimaginable que una computadora no pueda dominar la entropía dominada por el mejor cerebro humano (no hay nada mágico en los cerebros), pero la pregunta es, ¿cuántos núcleos necesitas y cuántos siglos tomará llegar allí?
Pero ... ¿alguna vez una computadora podrá hacer mi trabajo? ¡Inconcebible!
fuente
Esto es difícil de responder porque, al igual que con la inteligencia artificial, una vez que hayamos logrado esto, será porque habremos escrito un programa que lo haga. Y los críticos dirán: "¡bueno, esta máquina no se está programando realmente! ¡Simplemente sigue exactamente el programa que le diste!"
Bueno, sí. Lo que sea que podamos lograr con las computadoras, lo haremos dándole algún programa y lo ejecutará. Si ese es un argumento en contra, entonces no podemos lograr nada. Y, sin embargo, en algún momento, la gente pensó que una computadora de ajedrez sería obviamente inteligente. Ahora pueden, y sabemos exactamente cómo, y no creemos que sea inteligente. Los submarinos aún no pueden nadar.
Entonces, considere algunos ejemplos.
Desde hace décadas, hemos tenido generadores de analizadores sintácticos . Usted les da una descripción de un idioma, se procesa y el resultado es el código de un analizador para ese idioma. Sabemos exactamente cómo se hace, pero ¿no es eso una programación de computadora en sí misma?
Segundo: editores que le dicen que ha cometido un error (error de sintaxis, variable no existente, etc.). No programa nada en sí mismo, pero puede decirte que hiciste algo mal. Es mucho en la superficie solamente.
Idiomas en los que puede hacer clic y arrastrar los controles de la IU, y el código que realmente los hará funcionar se genera automáticamente.
Compiladores JIT. Software que puede reconocer zonas activas en el software actualmente en ejecución y reemplazar parte de eso por código compilado altamente optimizado, optimizándose efectivamente mientras se ejecuta. Creo que este es un ejemplo de lo que puede parecer una programación de máquina en sí misma, hasta que sepa exactamente cómo sucede, y luego resulta que solo está haciendo lo que el programador le dijo, como siempre.
Juego general jugando. Este es un campo de investigación interesante, en el que los investigadores escriben programas que pueden leer descripciones de las reglas de los juegos, que luego los programas juegan uno contra el otro. Entonces, en lugar de un programa de tic-tac-toe o un programa de ajedrez, estos son programas que leen las reglas de tic-tac-toe o ajedrez o algún juego nuevo inventado en el lugar, y luego pueden jugarlos. El programa no se está programando en sí, pero sí juega ajedrez sin que las reglas del ajedrez hayan sido codificadas. Hubo un momento en que esto se consideraría claramente que la computadora se enseña a sí misma algo.
Hemos dado muchos pasos pequeños en la dirección general.
Pero no puedo pensar en ningún programa que se reescriba basándose en los resultados de ejecuciones anteriores, o que pueda reconocer rutinas obsoletas o ineficientes en su propio código. Creo que algún día tendremos eso, y no lo consideraremos nada especial, ya que será solo una característica del último compilador ...
fuente
Actualmente no y no en el futuro previsible porque necesita toda la increíble complejidad del cerebro humano para crear un programa. Y aun así, esos cerebros necesitan estar altamente entrenados para hacerlo correctamente, y aun así no todos son capaces de hacer la tarea, aunque se podría argumentar que con el tiempo suficiente se puede entrenar a cualquiera para programar.
Tomé de la forma en que formuló su pregunta que no está hablando de tareas simples emuladas.
Solicitó artículos y este artículo de Science Blogs sobre Developing Intelligence responde a esa pregunta de muchas maneras.
fuente