¿Es posible generar programas informáticos solo a partir de especificaciones?

No soy un Dios para predecir el futuro, pero si me preguntas, definitivamente diría: Sí, me encantaría ver esas cosas. Permítanme aplicar una analogía de desarrollo web para explicar las cosas de manera más sofisticada.

Anteriormente, solía crear muchos sitios web donde tenía que escribir toneladas de código para hacerlo. Hoy en día, hay muchas aplicaciones de diseño web disponibles en el mercado que le ofrecen simplemente arrastrar y soltar y, en un minuto, ya está listo con los sitios web.

Pero todavía prefiero abrir el bloc de notas y escribir un código. Si ciertamente preguntaras, ¿por qué harías eso? Déjame enumerar todos los puntos,

  1. Tenga en cuenta el modelo mientras escribe el código. Este no es el caso con esos programas.
  2. Debe alimentar toda esta información a estos programas para poder resolverlos con ellos. Pero no todos los programas están listos para desarrollar el modelo que tiene en mente. Entonces el problema principal está aquí. No pueden hacer lo que quieras.
  3. Cada sitio web funciona de manera diferente, por lo que no es posible cambiar la forma en que se diseña ese software.

Para resumir, diría que aún no es posible. Puede ser posible en un futuro cercano, pero aún así preferiría escribir un código por mi cuenta.

Lo que estás pidiendo es un gran salto cognitivo. No quieres decirle a las computadoras cómo hacer las cosas. Desea decirle a las computadoras qué hacer y dejar que descubran la mejor manera de hacer lo que quiere.

Para que eso suceda, las computadoras primero deben poder percibir el mundo como lo hacen los humanos, para poder pensar en términos de objetos del mundo real y patrones concretos. Deben ser capaces de comprender el lenguaje humano y lidiar con contextos y ambigüedades. Deben poder aprender cómo funcionan las cosas fuera de las computadoras, para poder emitir juicios de valor y tomar sus propias decisiones.

Los humanos pueden descubrir de inmediato la forma de un objeto con solo mirarlos. Los humanos pueden descifrar rápidamente una canción de una canción corta. Los humanos pueden reconocer a otros seres humanos por su apariencia, a veces también por su voz. Los humanos también tienen sentido común y pueden entender lo que es apropiado o no hacer en una situación dada.

Esos son todos conceptos que son naturales para los humanos. Hoy, son completamente ajenos a las computadoras. La informática actual consiste en datos y operaciones, nada más. Un programa acepta una entrada, hace algo con ella y produce una salida. Las computadoras no pueden pensar fuera de sus cajas. Incluso las redes neuronales más avanzadas no pueden escapar de su cableado. Una computadora puede vencer a un hombre en un juego, pero no puede decidir qué juego jugar o si jugar en absoluto.

Las computadoras no tienen tolerancia a la ambigüedad. Claro, una computadora puede darse cuenta de que querías decir “reconocer” cuando dijiste “regcoinze”. Pero cuando dices “una uña”, ¿te refieres a la uña de un dedo o un sujetador metálico?

Eventualmente, un lenguaje específico de dominio que lo ayudará a desarrollar ciertos tipos de aplicaciones con gran detalle será posible, aunque no será una gran mejora con respecto a la programación real de la computadora.

Es muy probable que sea imposible un lenguaje de propósito general que le permita desarrollar cualquier tipo de aplicación conocida y desconocida, incluido el diseño de su propia interfaz de usuario y generar un programa informático preciso que haga exactamente lo que quería que hiciera, ya que existen requisitos que puede no ser computable en absoluto.