El programa real más antiguo que conozco se remonta a Pingala, un matemático indio de alrededor del 200 a. C. Por razones por las que no necesitamos entrar, Pingala está tratando de encontrar 2 ^ n. En forma algo modernizada, sus direcciones son:
- Comience con n. Si n es par, escriba 1 y divida por 2; si n es impar, reste 1 y escriba 0.
- Continúe hasta que se agote el número.
Por ejemplo, si está trabajando con n = 10, el procedimiento de Pingala da:
- 10 es par, así que divide entre 2 (para hacer 5) y escribe 1 .
- 5 es impar, así que resta 1 (para hacer 4) y escribe 0 .
- 4 es par, así que divide entre 2 (para hacer 2) y escribe 1 .
- 2 es par, así que divide entre 2 (para hacer 1) y escribe 1 .
- 1 es impar, así que reste 1 (para hacer 0, que termina el algoritmo) y escriba 0 .
Así que aquí está la frase clave: ¡los 1s y 0s son un lenguaje de programación (muy limitado)! Específicamente: nuestra computadora comienza con un número de trabajo de 1, luego interpreta los símbolos que recibe A 0 hace que duplique el número de trabajo; un 1 hace que cuadre el número de trabajo. El programa real consiste en la secuencia de 1s y 0s generados anteriormente, en orden inverso.
- Aunque la carretilla elevadora es un invento de entreguerras, sospecho que la paleta comenzó antes en el servicio ferroviario de EE. UU. ¿Alguien puede confirmar esto?
- ¿Cómo descubrió la humanidad cómo hacer fuego?
- ¿Qué tan difícil es hacer tu propio estilo de arte marcial?
- Si inventa una nueva teoría bien investigada de la mecánica cuántica, pero no tiene un título en los campos de la ciencia, ¿cuál es la mejor manera de publicarse?
- ¿Cuáles fueron los pros y los contras de la invención de la agricultura?
Entonces, el número 10 produce el programa 0–1–1–0–1 , que se ejecuta como:
- El primer símbolo es 0 , entonces multiplicamos 1 por 2 para obtener 2.
- El siguiente símbolo es 1 , entonces elevamos al cuadrado 2 para obtener 4.
- El siguiente símbolo es 1 , entonces cuadramos 4 para obtener 16.
- El siguiente símbolo es 0 , por lo que multiplicamos por 2 para obtener 32.
- El siguiente y último símbolo es 1 , por lo que elevamos al cuadrado 32 para obtener 1024, que es nuestra respuesta: 2 ^ 10 = 1024.