¿El desarrollo de software se realiza mejor a través del diseño inteligente o la evolución?

Depende de cuán difícil sea el problema. Cuando el problema es demasiado difícil para el diseño inteligente humano, los ingenieros recurren a la evolución. Antes de entrar en ejemplos, necesito señalar que la evolución no es solo un “cambio aleatorio”. La selección natural es un proceso de 2 pasos:
1. Variación
2. Selección

La variación en el desarrollo de software generalmente es un “cambio aleatorio”. PERO, siempre se combina con la selección. La selección NO es al azar. Es puro determinismo. En el caso del desarrollo de software, el programador pone los parámetros para la selección.

Evolution se utilizó para diseñar un programa para jugar a las damas: 3. AI Samuel, algunos estudios sobre aprendizaje automático utilizando el juego de damas. IBM Journal of Research Development, 3: 211-219, 1964. Reimpreso en EA Feigenbaum y J Feldman, Computers and Thought, McGraw-Hill, Nueva York, 1964 pp 71-105.

En este caso, el parámetro de selección fue “ganar el juego”. El código que resultó en un juego ganado se mantuvo, el código que resultó en un juego perdido se descartó. El programa se volvió lo suficientemente bueno como para vencer al campeón de las damas humanas. (Me gustaría señalar que Big Blue, un producto de “diseño inteligente”, no lo ha hecho tan bien en el ámbito del ajedrez).

El “algoritmo genético” es evolución. Por lo tanto, puede buscar en Google ejemplos en los que la evolución haya tenido éxito en el desarrollo de software.

Básicamente, si el problema es demasiado difícil para los humanos, entonces llama a la evolución.

Bueno, en más de 35 años en la industria del software aún no he visto un solo programa o plataforma de hardware mejorada a través de un cambio aleatorio.

He visto que eso causa que muchos de ellos se pongan boca abajo.

Debo decir que trabajé con un desarrollador que parecía usar algo terriblemente similar a los cambios aleatorios. Él fue despedido.

Dicho esto, los dos no son mutuamente excluyentes. El software puede evolucionar con el tiempo debido a cambios diseñados de forma inteligente.

Prefiero usar el término emerge. A medida que aprendemos más sobre la solución y más sobre cómo hacer el trabajo y más sobre cómo trabajar juntos, el diseño emerge de las cosas que aprendemos.

La emergencia implica inteligencia y evolución, junto con otras ideas como la creatividad y la artesanía.

Seguramente dependerá de cómo se use el software prácticamente para ayudar al usuario a producir lo que quiere.

Fui programador durante 20 años y mi experiencia común fue producir algo básico y dárselo a los usuarios. Luego comenzaron a probarlo y se les ocurrieron cosas adicionales que les gustaría que hiciera.

He tenido experiencia con software que parecía ser diseñado por alguien en otro planeta. Ciertamente nunca vimos un programador. Era difícil de usar y no pudimos obtener actualizaciones para realizar otros trabajos necesariamente relacionados. Un ejemplo simple fue la incapacidad de ver una entrada de datos completa requerida en un formulario de entrada.

Obviamente, a través del diseño inteligente. Es extremadamente absurdo sugerir que la evolución tiene que ver con el desarrollo de software. El único papel que puede desempeñar la evolución es la forma del éxito de un software determinado a través de la selección natural por la acción de las fuerzas del mercado. Si un software determinado abastece bien a su mercado objetivo, se venderá bien, de lo contrario fallará.

Si el software era vida (o atributos destacados de la vida, como la reproducción y la muerte natural), y tuvimos miles de millones (colectivamente) de experimentos (mutaciones reproductivas) por segundo, y cientos de millones de años para ejecutar estos experimentos junto con el código horizontal (gen ) transferencia a través de virus, etc., la evolución sería preferible al diseño si el objetivo fuera producir algo que pudiera sobrevivir y adaptarse a un mundo cambiante.

Producir un sistema que pueda sobrevivir y adaptarse no es el objetivo del software, por lo que esta pregunta realmente no tiene sentido.