Independencia 10: Un enfoque radicalmente distinto
Actualmente en desarrollo de software los programadores tenemos a la mano lenguajes de programación orientados a objeto y por eventos, nuevas metodologías y la popularización de usar Patrones de Diseño, día a día los programadores se alejan mas del lenguaje máquina para llegar a un lenguaje casi-humano. Irónicamente las nuevas implementaciones (interfaces, plantillas, objetos, instancias, clases, eventos, herencia, polimorfismo, etc..) son convertidos al humilde lenguaje máquina (unos y ceros) que al desensamblarlo nos muestra en lenguaje ensamblador solo asignaciones, condicionales y saltos, nada mas (¿donde quedó tanta abstracción? :) ).
Para programar solo necesito asignar, evaluar y saltar. Sin eso no me imagino como programar. ¿Cierto? o ¿será solo un paradigma?.
Evaluar o comparar se refiere en programación al Si condicional: IF, si la condición es verdadera hace ciertas instrucciones, si la condición es falsa hace otras instrucciones. Un IF es una bifurcación del camino de ejecución del algoritmo.
El si condicional (IF) ha influenciado las instrucciones básicas en algoritmia, por ejemplo instrucciones como el FOR, WHILE, DO-WHILE, CASE son hijas del IF .
En programación estructurada el GOTO (salto) fue eliminado del léxico de los programadores (excepto de los que desarrollan en ensamblador porque el JMP es imposible de evadir) y fue reemplazado por procedimientos, métodos y el uso de instrucciones de ciclo.
Con tanta importancia del IF, ¿sería posible eliminar esta instrucción y sus hijas y poder seguir programando? Supongo que el 99.9999% de los programadores responderían con un rotundo NO.
El cómo funciona la vida se ha convertido en un durísimo reto, se ha intentado simular el comportamiento y evolución de seres vivos con potentes programas pero hasta ahora no han habido avances importantes. ¿Será que hay fallas desde la base misma? ¿Será que los algoritmos tal y como los conocemos no sirven para representar la vida?
Un enfoque distinto
Mi hipótesis es la siguiente: en la vida existen unidades mínimas de vida (como en la materia que existen unidades mínimas llamadas átomos). Cada unidad tiene una capa externa (capa evolutiva) y un contenido interno (instrucciones sin IF). Las unidades solo hacen una cosa: compiten por ejecutar su código interno. El que puedan o no ejecutar su código depende de que tan adaptada al ambiente esté la capa externa.
Lo realmente importante es el código interno: así que las unidades les conviene multiplicarse en gran medida para así darle mayor oportunidad de ejecutar el mismo código interno.
Es igual a tener un ejército, cada soldado pelea por la misma causa (ideología, religión, terreno, etc..). La causa es lo importante. Entre mas soldados hubiesen, mas probabilidades tiene de imponerse la causa.
La vida es simplemente una continua guerra entre muchísimos ejércitos por conquistar un recurso: tiempo de ejecución.
El ambiente cambia constantemente, luego un ejército que estaba en desventaja puede volteársele la situación.
¿Qué es la causa para una unidad mínima de vida? Respuesta: Una emoción. Por ejemplo, el miedo, como una causa (emoción) puede tomar muchos ciclos de ejecución: hay cientos o miles de unidades mínimas de vida que luchan por imponer esa emoción al macroorganismo, ¿podrán hacerlo? todo depende del ambiente, que tan adaptados están esas unidades mínimas y el código que estas ejecutan.