¿Es posible escribir un código digital que imite los principios de selección natural y evolución?

No solo es posible que haya estado ocurriendo desde los años 70, al menos en cierta escala.

Tierra (simulación por ordenador)

desarrollado por Thomas S. Ray. Originalmente leí sobre esta historia en Hyperion Cantos, una novela de ciencia ficción que la usó como ejemplo para explicar la evolución de las IA sensibles en los próximos 500 años.

Richard Dawkins también trabajó en una versión más compleja de esto también en los últimos años.

La diferencia entre los algoritmos y los programas

Piense en un programa como un procedimiento almacenado, básicamente, un procesador de comandos funciona a través del código de bifurcación lineal y, a lo largo del camino, recopila entradas y, en función de los condicionales, sigue una ruta de bifurcación lineal u otra, puede haber muchas combinaciones y caminos posibles. pero en última instancia, la ejecución sigue siendo lineal, ahora hay otras preocupaciones de las que hablar, como las condiciones de subprocesos y de carrera, pero eso generalmente lo resume.

Un algoritmo, por otro lado, lo considera como un conjunto de reglas, un conjunto de reglas realmente masivo, aunque también podría ser un conjunto de reglas realmente simple como

  1. despierta
  2. tomar un show
  3. cepilla tus dientes

más bien un flujo de proceso, piense en él como una forma de gestión de macros.
Los programas por sí mismos son realmente útiles y pueden adaptarse a una gran cantidad de escenarios finitos, pero aún requieren una salida externa para decidir cuándo ejecutarlos, o están programados para ejecutarse en un momento determinado, o se ejecutan y ejecutan Bucle sin fin hasta que se cumplan ciertas condiciones de entrada. El algoritmo, en el sentido de un conjunto de reglas, puede gobernar las acciones de estos programas y decidir cuándo es mejor ejecutarlos en función de sus prioridades definidas y, en última instancia, tiene un código más inteligente. Y no hay nada que diga que no se puede tener un algoritmo de nivel superior que gestione todos los sub-algoritmos, que administre los programas, etc.

Teóricamente, teniendo esto en cuenta, podría seguir retrocediendo y retrocediendo a niveles de código de jerarquía más bajos hasta alcanzar la complejidad y adaptabilidad deseadas.

Hasta cierto punto, Wall Street ya lo hace, sus algoritmos pueden hacer predicciones heurísticas basadas en datos históricos y realizarán intercambios hasta una cierta tolerancia permitida por los programadores, es sorprendente saber que todo el mercado puede colapsar solo porque un intercambio tiene pocos. Nanosegundos de latencia por unos pocos milisegundos.

cosas interesantes de alta frecuencia de comercio

Sí, esta es una técnica bien establecida llamada Algoritmos Genéticos o Algoritmos Evolutivos.

Más en el algoritmo genético (wikipedia).

Un buen texto introductorio es Melanie Mitchell’s: mitchell genetic – Búsqueda de Google

Sí, pero probablemente no en la forma en que lo imaginas.

El problema aquí es que los lenguajes informáticos fueron diseñados para ser precisos e inequívocos. El ADN, en cambio, estaba conformado por la evolución. Por lo tanto, a menos que el lenguaje de programación esté construido de alguna manera para permitir la mutación y la recombinación (o alguna otra operación similar a la evolución) no será adecuado.

Esto es lo que sucedió con la Tierra mencionada en otra respuesta, el lenguaje fue diseñado para que las mutaciones aleatorias aún produzcan programas razonables. Comprueba también la evolución gramatical.

Un programa informático siempre será un modelo de la realidad. Si tu intención es repetir la evolución, entonces: no. Si desea definir qué evolución es para usted, aplique estos conocimientos en una simulación de computadora: sí, se ha hecho antes.

Lo ha hecho: Richard Dawkins (programa Weasel), W. Brian Arthur (aplicado a la evolución de la tecnología, que se describe aquí The Nature of Technology) y sospecho que hay muchas otras personas.