Brian Farley escribe: “ EL ADN NO ES EL CÓDIGO DE FUENTE . Esta analogía es indescriptiblemente horrible, sin embargo, parece persistir entre los informáticos y otros tecnófilos que solo son capaces de ver el mundo a través de lentes tintados por tecnología “.
Voy a estar en desacuerdo: la analogía es muy adecuada, es solo que “los informáticos y otros tecnófilos” no entienden el código fuente. Afortunadamente, estoy aquí para explicártelo … 😉
Vamos a comenzar con una computadora muy simple (la simplificación de Stephen Cole Kleene de la máquina Turing, si tiene curiosidad). Tienes una cinta con un número infinito de celdas; cada celda contiene inicialmente un 0. Un cabezal de lectura / escritura atraviesa las instrucciones de ejecución de la cinta. Las instrucciones son de la forma (w, m, s): w = el símbolo a escribir, 0 o 1; m es la dirección para moverse, ya sea a la siguiente celda a la izquierda (L) o derecha (R), y s es el siguiente “estado”. Cada estado tiene dos instrucciones: una instrucción si la celda debajo del cabezal de lectura / escritura es un 0, y una instrucción separada si la celda tiene un 1.
- ¿Se viola la ley de causalidad en la película Interestelar?
- ¿Cuándo es filosóficamente legítimo considerar los parámetros de las distribuciones de probabilidad como variables aleatorias?
- ¿Cómo ha beneficiado la astronomía a la sociedad?
- ¿Dónde está el corazón de una planta?
- ¿Por qué las mismas personas que promueven los valores cristianos teocráticos en los gobiernos occidentales se oponen a los valores teocráticos islámicos en otros países?
Lo hice sonar más complicado de lo que es. Usted lee desde la celda, busca las instrucciones, escribe en la celda, pasa a la siguiente celda y cambia el estado al siguiente par de instrucciones. Comienzas en el estado A, y si alguna vez aterrizas en el estado H, dejas de ejecutar. (Si eso no estaba claro, vea la entrada de castores ocupados en wikipedia).
Aquí hay un programa interesante (tenga en cuenta que usa notación (s, w, m), la operación es idéntica). La instrucción de la izquierda se ejecuta si read = 0, la instrucción de la derecha si read = 1. Crédito a http://www.drb.insel.de/~heiner/…
A: B1R F0L
B: C0R D0R
C: D1L E1R
D: E0L D0L
E: A0R C1R
F: A1L Z1R
¿Por qué es interesante este programa? Primero, se sabe que se detiene. Escribir programas que entren en bucles sin fin es bastante fácil. Este no lo hace.
En segundo lugar, cuando se detiene, la cinta tiene bastantes 1s. He aquí cuántos.
unos =
12914951964730997250673433546819849509549358087128 \
69005395873005091204311405044485024013143268788877 \
96982050179592672794672477591595948221752253054324 \
81859864495796137909683447198447312843568880129905 \
33063069223512777765526485338267097939892666393404 \
33645541695093655408344618435778415742964338602689 \
29575034928793440722283883496539655948945100141899 \
42944746881736756960481303815091265680548717247559 \
30418437122794678536247499891470543037484990932498 \
45855395105658447844504456040960051641314951220524 \
82406177581463473827266448103006672709418626513574 \
98031478037424866640095921801194216728219139588401 \
23231130890028804306931645773916087727281493526404 \
73317019897976560342477660683368440952973000704411 \
85616248748736529970020326673445871378590029099788 \
72928814647043325481327200728882173015355211743620 \
25443804176796589274203597930628676364226731372114 \
6548318330807873
¿Es este el mayor número de 1 que se puede escribir? Esa sigue siendo una pregunta abierta. De hecho, no sabemos el número máximo de 1s que puede escribir una máquina de 5 estados.
Piense en eso por un momento. Incluso para una máquina tan simple como esta, no entendemos completamente el comportamiento en 5 estados y 10 instrucciones.
El ADN es como este tipo de código fuente. Podemos escribir el código. Entendemos los cambios de estado individuales. Pero hay un cambio de fase fundamental que va desde la comprensión a nivel micro hasta la comprensión del resultado macro.
Cuando los humanos escriben el código fuente, estamos optimizando para poder pasar del resultado macro al micro entendimiento. Eso hace que el código sea enormemente ineficiente, pero nos da la capacidad de razonar sobre el código. La biología (y los enteros), por otro lado, no fueron optimizados para ser comprensibles.