¿Cuáles son los lenguajes de programación inventados antes que las computadoras?

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:

  1. Comience con n. Si n es par, escriba 1 y divida por 2; si n es impar, reste 1 y escriba 0.
  2. Continúe hasta que se agote el número.

Por ejemplo, si está trabajando con n = 10, el procedimiento de Pingala da:

  1. 10 es par, así que divide entre 2 (para hacer 5) y escribe 1 .
  2. 5 es impar, así que resta 1 (para hacer 4) y escribe 0 .
  3. 4 es par, así que divide entre 2 (para hacer 2) y escribe 1 .
  4. 2 es par, así que divide entre 2 (para hacer 1) y escribe 1 .
  5. 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.

Entonces, el número 10 produce el programa 0–1–1–0–1 , que se ejecuta como:

  1. El primer símbolo es 0 , entonces multiplicamos 1 por 2 para obtener 2.
  2. El siguiente símbolo es 1 , entonces elevamos al cuadrado 2 para obtener 4.
  3. El siguiente símbolo es 1 , entonces cuadramos 4 para obtener 16.
  4. El siguiente símbolo es 0 , por lo que multiplicamos por 2 para obtener 32.
  5. 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.

Había varios dispositivos mecánicos que eran “programables” utilizando mecanismos tales como tarjetas perforadas (telares), rollos de papel perforados (pianos de jugador) y discos giratorios (máquinas recurrentes basadas en el tiempo, como semáforos).

El “lenguaje” de programación era literalmente lenguaje de máquina.