La Nota G de Ada Lovelace, el primer programa de ordenador de la historia

Imatge
Àmbits Temàtics

Publicamos la traducción de la Nota G hecha por Gabriel Rodríguez Alberich, AKA @vibragiel.

NOTA G DEL BOSQUEJO DE LA MÁQUINA ANALÍTICA (EL PRIMER PROGRAMA DE ORDENADOR)

COMPUESTA POR

Doña Augusta Ada Byron,

condesa de Lovelace,

en el año de 1842

TRADUCIDA POR

Don Gabriel Rodríguez Alberich 

Conviene cuidarse de la posibilidad de que surjan ideas exageradas con respecto a las facultades de la Máquina Analítica. A la hora de juzgar cualquier asunto nuevo, suele darse, primero, una tendencia a sobrevalorar lo que ya consideramos interesante o notable y, en segundo lugar, mediante una especie de reacción natural, a subestimar el verdadero estado de la cuestión, cuando descubrimos que nuestras nociones han traspasado lo que realmente podíamos sostener.

La Máquina Analítica no tiene ninguna pretensión de producir nada. Puede hacer cualquier cosa que sepamos cómo ordenarle que haga. Puede seguir un análisis; pero no tiene la capacidad de anticipar ninguna relación o verdad analíticas. Su función es ayudarnos a hacer accesible aquello con lo que ya estamos familiarizados. Está diseñada para hacer esto principalmente, claro está, por medio de sus facultades ejecutivas; pero es probable que ejerza también una influencia indirecta y recíproca sobre la propia ciencia. Porque, al distribuir y combinar las verdades y fórmulas del análisis, de manera que las combinaciones mecánicas de la máquina las puedan manejar con mayor rapidez y facilidad, las relaciones y la naturaleza de muchas cuestiones de la ciencia quedarán bañadas en otra luz y podrán investigarse en mayor profundidad. Sin duda, esto es una consecuencia indirecta y, en parte, especulativa, de tal invento. Sin embargo, es evidente que, en general, al concebir una nueva forma de registrar verdades matemáticas y arrojarlas para su uso, es probable que nos inspiren nuevas perspectivas que, de nuevo, deben reaccionar en la fase más teórica del asunto. Todas las ampliaciones del poder humano, o aumentos del conocimiento humano, conllevan siempre varias influencias colaterales, aparte de los objetivos principal y secundario obtenidos.

Por volver a las facultades ejecutivas de esta máquina, todas las mentes deben plantearse la siguiente pregunta: ¿son capaces realmente de seguir el análisis en toda su extensión? No se puede dar ninguna respuesta a esta pregunta que satisfaga a todas las mentes, exceptuando la propia existencia de la máquina y la propia experiencia de sus resultados prácticos. Sin embargo, resumiremos los elementos principales con los que trabaja la máquina, para la consideración del lector:

  1. Realiza las cuatro operaciones de la aritmética simple con cualesquiera números.
  2. Por medio de ciertos artificios y arreglos (que no podemos abordar con el espacio restringido que admite una publicación como la presente), no existe límite ni para la magnitud de los números usados ni para el número decantidades (ya sean variables o constantes) que se pueden emplear.
  3. Puede combinar estos números y cantidades, tanto algebraicamente como aritméticamente, en relaciones ilimitadas en cuanto a variedad, extensión o complejidad.
  4. Usa los signos algebraicos de acuerdo a sus leyes apropiadas y desarrolla las consecuencias lógicas de estas leyes.
  5. Puede sustituir cualquier fórmula por otra, arbitrariamente; eliminando la primera de ellas de la columna en la que está representada y colocando la segunda en su lugar.
  6. Puede proporcionar valores singulares. El señor Menabrea alude a esta capacidad en sus memorias, donde menciona el paso de valores de cero a infinito. La viabilidad de hacer que cambie sus procesos arbitrariamente en cualquier momento, ante la posibilidad de cualquier contingencia especificada (la sustitución de  por , explicada en la Nota E, ilustra esto en cierta medida), asegura este punto de inmediato.

El tema de la integración y la diferenciación requiere algo de atención. La máquina puede efectuar estos procesos de dos maneras distinas:

Primero, mediante las tarjetas de Operación y de Variable, podemos ordenarle que recorra los pasos necesarios para resolver el límite de cualquier función que se esté considerando.

Segundo, puede efectuar la integración o diferenciación por sustitución directa (si conocemos la forma del límite para la función en cuestión). En la Nota B, comentamos que cualquier conjunto de columnas en los que se inscriben números representa simplemente una función general de las diversas cantidades, hasta que la función especial quede impresa por medio de las tarjetas de Operación y Variable. Por consiguiente, si en lugar de solicitar el valor de la función, solicitamos el de su integral o el de su coeficiente diferencial, solo tenemos que ordenarle la combinación particular de las cantidades ingredientes que constituya esa integral o ese coeficiente. Por ejemplo, en , en lugar de ordenar las cantidades

para que aparezcan en  en la combinación , se ordenarían para que aparecieran en la de .

Por tanto, quedaría así:

Análogamente, podríamos tener , la integral de .

Un ejemplo interesante para seguir el proceso de la máquina sería la forma

o cualquier otro caso de integración por reducciones sucesivas, donde se puede hacer que una integral que contiene una operación repetida  veces dependa de otra que contiene las mismas  o  veces, y así hasta que, por reducción continua, lleguemos a una forma definitiva, cuyo valor hay que determinar luego.

Los métodos que aparecen en Calcul des Dérivations de Arbogast son especialmente apropiados para la notación y los procesos de la máquina. Asimismo, todo el Análisis Combinatorio, que consiste, primero, en un cálculo de índices puramente numérico y, segundo, en la distribución y combinación de las cantidades según las leyes prescritas por estos índices.

Terminaremos estas notas estudiando en detalle los pasos con los que la máquina puede calcular los números de Bernoulli, siendo esto (en la forma que deduciremos aquí) un ejemplo bastante complejo de sus capacidades. La forma más sencilla de calcular estos números sería mediante la expansión directa de

(1.)</span>

que es, de hecho, un caso particular desarrollado a partir de

mencionada en la Nota E. O en cambio podríamos calcularlos a partir de la conocida forma

(2.)</span>

o de la forma

(3.)</span>

o de muchas otras. Sin embargo, como nuestro objetivo no es la simplicidad o facilidad de los cálculos, sino ilustrar las capacidades de la máquina, preferimos seleccionar la fórmula de abajo, marcada (8.). Se deriva de la siguiente manera:

Si en la ecuación

(4.)</span>

(en la que …, etc. son números de Bernoulli), expandimos el denominador del lado izquierdo en potencias de  y luego dividimos el numerador y el denominador por , derivaremos

(5.)</span>

Si esta multiplicación del final pudiera hacerse, tendríamos una serie con la forma general

(6.)</span>

en la que vemos, en primer lugar, que todos los coeficientes de las potencias de son iguales a cero; y, en segundo lugar, que la forma general para , el coeficiente del término  (esto es, de cualquier potencia par de ) es lo siguiente:

(7.)</span>

Multiplicando todos los términos por , obtenemos

(8.)</span>

que conviene escribir en su forma general:

(9.)</span>

Siendo …, etc. esas funciones de  que pertenecen respectivamente a …, etc..

Podríamos haber derivado una forma similar a (8.) a partir de , el coeficiente de cualquier potencia impar de  en (6.); pero la forma general es algo distinta para los coeficientes de las potencias impares, y menos práctica.

Al examinar (7.) y (8.), podemos comprobar que, cuando aislamos estas fórmulas de (6.), a partir de la cual están derivadas, y las consideramos separada e independientemente,  puede ser cualquier número entero; aunque, cuando (7.) se da como una de las  en (6.), es obvio que entonces  no es arbitrario, sino que es siempre una función de la distancia de esa  desde el principio. Si esa distancia puede ser , entonces

 y  (para cualquier potencia *par* de )

 y  (para cualquier potencia *impar* de )

Es con la fórmula independiente (8.) con la que tenemos que trabajar. Por tanto, debemos recordar que las condiciones para el valor de  quedan modificadas y que  es un número entero completamente arbitrario. Esta circunstancia, combinada con el hecho (fácilmente comprobable) de que, sea cual sea el valor de , cualquier término de (8.) tras el  es , y que el propio término  es siempre , nos permite hallar el valor (sea numérico o algebraico) de cualquier número de Bernoulli  en términos de todos los precedentes, solo con saber los valores de . Hemos anexado a esta nota un diagrama y una tabla con los detalles del cálculo de  ( vienen dados).

Al considerar (8.) con atención, veremos también que podemos derivar de ella el valor numérico de cualquier número de Bernoulli sucesivo, desde el principio ad infinitum, mediante la siguiente serie de cálculos:

  • Primera serie. Sea  y calculemos (8.) para este valor de . El resultado es .
  • Segunda serie. Sea . Calculemos (8.) para este valor de , sustituyendo el valor de  que acabamos de obtener. El resultado es .
  • Tercera serie. Sea . Calculemos (8.) para este valor de , sustituyendo los valores de  obtenidos anteriormente. El resultado es . Y así sucesivamente, hasta cualquier punto.

El diagrama representa las columnas de la máquina cuando está recién preparada para calcular  (en el caso de ); mientras que la tabla de abajo ofrece una vista completa y simultánea de todos los cambios sucesivos que sufren estas columnas para realizar el cálculo. (Remito al lector a la Nota D para obtener una explicación respecto a la naturaleza y notación de dichas tablas).

En este caso, son necesarios seis datos numéricos para hacer las combinaciones requeridas. Estos datos son . Cuando , haría falta el dato adicional . Cuando , haría falta el dato ; etcétera. Así, el número de datosnecesarios siempre será  para ; y de estos  datos,  de ellos son números de Bernoulli sucesivos. La razón por la que se están colocando los números de Bernoulli usados como datos en las columnas de Resultado del diagrama es que podemos suponer que ya han sido calculados previamente en sucesión por la propia máquina; en esta circunstancia, cada  aparecerá como resultado antes de usarse como dato para calcular el siguiente . Por tanto, aquí tenemos un ejemplo (del tipo mencionado en la Nota D) de la misma Variable realizando más de una función a la vez. Es cierto que, si consideramos que nuestro cálculo de  es un cálculo completamente aislado, podemos concluir que  se han colocado arbitrariamente en las columnas; y entonces sería más consistente ponerlos en  como datos y no como resultados. Pero no vamos a considerarlo así. Al contrario, supondremos que la máquina estará en el proceso de calcular los Númeroshasta un punto indeterminado desde el mismo principio; y que simplemente estamos seleccionando, mediante un ejemplo, un cálculo entre la serie sucesiva pero distinta de cálculos que está realizando. Cuando los  son fraccionarios, hay que entender que se calculan y aparecen en notación de fracciones decimales. De hecho, hay que ser conscientes de esta circunstancia para todos los cálculos. En cualquiera de los ejemplos ya expuestos en la traducción y en las Notas, algunos datos, y también algunos resultados temporales o permanentes, pueden ser fraccionarios con igual probabilidad que números enteros. Pero la configuración es tal que la naturaleza de los procesos sería igual que con los números enteros.

En la tabla y diagrama de arriba no estamos considerando el signo de ninguno de los , solo su magnitud numérica. La máquina arrojaría correctamente el signo para todos ellos, por supuesto, pero no podemos entrar en todo detalle adicional de este tipo como querríamos. Por tanto, los círculos para el signo que hay en el diagrama se dejan en blanco intencionadamente.

Las tarjetas de Operación  preparan . Así, la Tarjeta multiplica dos por , y las tres tarjetas Variable de Recepción, que pertenecen a  respectivamente, permiten que el resultado  se coloque en cada una de estas últimas columnas (esto es un caso en el que hace falta una recepción triple de resultados para propósitos posteriores); vemos que los índices superiores de las dos Variables utilizadas durante la Operación  quedan inalterados.

No vamos a revisar uno a uno los detalles de cada operación, ya que la tabla y el diagrama los especifican suficientemente; solo advertiremos algunos casos peculiares.

En la Operación  se convierte una cantidad positiva en una cantidad negativa, simplemente restándole dicha cantidad a una columna que contiene un cero. (El signo encima de  se convertiría en − durante este proceso).

La Operación 7 será incomprensible a menos que recordemos que, si estuviéramos calculando para  en lugar de , la Operación 6 habría completado el cálculo de  ella misma, en cuyo caso la máquina, en lugar de continuar con sus procesos, tendría que poner  en ; y luego detenerse completamente o comenzar de nuevo con las Operaciones 1, 2…7 para el valor , al objeto de calcular ; (cuidándonos sin embargo de que, antes de esta reanudación, hay que poner igual a dos el número de , sumándole la unidad al anterior  de esa columna). Entonces, la Operación 7 tendrá que arrojar, o bien un resultado igual a cero (si ), o bien un resultado mayor que cero, como en el caso actual; y la máquina seguirá uno u otro curso de los que acabamos de explicar dependiendo del resultado de la Operación 7. Para comprender bien la necesidad de esta operación experimental, es importante tener en cuenta lo que ya se indicó, que no estamos tratando con un cálculo completamente aislado e independiente, sino uno entre una serie de cálculos antecedentes y futuros.

Las Tarjetas 8, 9, 10 producen . En la Operación 9 vemos un ejemplo de un índice superior que de nuevo vuelve a tener un valor, después de haber pasado desde valores previos hasta cero.  ha sido, sucesivamente, , ; y por la naturaleza de la función que tiene  en el cálculo, su índice seguirá sufriendo más cambios del mismo tipo; si los examinamos, veremos que son regulares y periódicos.

La Tarjeta 12 tiene que realizar la misma función que la que realizó la Tarjeta 7 en la sección anterior; ya que, si  hubiera sido , la operación oncena habría completado el cálculo de .

Las Tarjetas 13 a la 20 obtienen . Como  siempre consiste en factores,  tiene tres factores; se puede ver que las Tarjetas 13, 14, 15, 16 obtienen el segundo de estos factores y luego lo multiplican por el primero; y que las 17, 18, 19, 20 obtienen el tercer factor y luego lo multiplican por el producto de los dos factores anteriores.

La Tarjeta 23 tiene la función de las Tarjetas 11 y 7, ya que, si  fuera , las operaciones vigésimo primera y vigésimo segunda completarían el cálculo de . Como nuestro caso es , el cálculo continuará con otra fase más; y ahora debemos dirigir nuestra atención al hecho de que, para poder calcular , solo es necesario repetir precisamente el grupo de Operaciones de la 13 a las 20; y luego, para completar el cálculo de , repetir las Operaciones 21 y 22.

Se puede observar que cada unidad que se suma a  en  conlleva una repetición adicional de las operaciones (13…23) para calcular . No solo son todas las operaciones precisamente las mismas para cada repetición, sino que necesitan recibir los números, respectivamente, de exactamente el mismo par de columnas; solo con la excepción de la Operación 21 que, por supuesto, necesitará  (de ) en lugar de  (de ). Esta identidad de las columnas que proporcionan los números requeridos no debe confundirse con una identidad de los valores que contienen esas columnas y que son alimentados al molino. La mayoría de esos valores sufren alteraciones durante una actuación de las operaciones (13…23) y, por tanto, las columnas presentan un nuevo conjunto de valores con los que tiene que trabajar la siguiente actuación de las operaciones (13…23).

Al terminar la repetición de las operaciones (13…23) para calcular , las alteraciones en los valores de las Variables son

En este estado, los únicos procesos restantes son, primero, transferir el valor que hay en  a  y, segundo, reducir  a cero y sumarle uno a , para que la máquina quede lista para comenzar a calcular . Las Operaciones 24 y 25 cumplen estos objetivos. Puede parecer anómalo que la Operación 25 se represente dejando el índice superior de  todavía ; pero debemos recordar que estos índices siempre empiezan de nuevo para cada cálculo independiente, y que la Operación 25 coloca en  el primer valor para el nuevo cálculo.

Debemos comentar que, cuando se repite el grupo (13…23), se producen cambios en algunos de los índice superiores durante el transcurso de la repetición. Por ejemplo,  se tornaría en  y .

Vemos así que, cuando , se usan nueve tarjetas de Operación; cuando , se usan catorce tarjetas de Operación; y cuando , se usan veinticinco tarjetas de Operación; pero que no hacen falta más, por muy grande que sea ; y no solo esto, sino que estas mismas veinticinco tarjetas bastan para el cálculo sucesivo de todos los Números de  a  inclusive. Con respecto al número de tarjetas de Variable, debemos recordar, por las explicaciones de Notas anteriores, que se estima una media de tres tarjetas de este tipo por cada operación (sin embargo, no por cada tarjeta de Operación). Según esto, el cálculo de  necesitará de veintisiete tarjetas de Variable; , cuarenta y dos tarjetas; , setenta y cinco; y, para cada posterior a , habrá treinta y tres tarjetas de Variable adicionales (ya que cada repetición del grupo (13…23) añade once al número de operaciones necesarias para calcular el  anterior). Ahora debemos explicar que, para cada ciclo de operaciones, si estas operaciones solo necesitan que les proporcionen números de los mismos pares de columnas, e igualmente, que cada operación coloque su resultadoen la misma columna para cada repetición de todo el grupo, entonces el proceso admite un ciclo de tarjetas de Variable para efectuar sus objetivos. Obviamente, hay mucha más simetría y simplicidad en las configuraciones cuando los casos también admiten repetir las tarjetas de Variable además de las de Operación. Nuestro ejemplo actual es de esta naturaleza. La única excepción para que haya una identidad perfecta en todos los procesos y columnas utilizadas, para cada repetición de las Operaciones (13…23), es que la Operación 21 siempre necesita recibir uno de sus factores de una columna nueva y la Operación 24 siempre coloca su resultado en una columna nueva. Pero, como estas variaciones siguen la misma ley en cada repetición (la Operación 21 siempre necesita obtener su factor de una columna una posición más allá de la que se utilizó la vez anterior, y la Operación 24 siempre coloca su resultado en una columna una posición más allá de la que recibió el resultado anterior), se pueden mantener fácilmente al configurar el grupo (o ciclo) recurrente de tarjetas de Variable.

Aquí debemos comentar que la estimación para la media de tres tarjetas de Variable por cada operación no debe tomarse como cantidad absoluta y literalmente correcta para todos los casos y circunstancias. Muchas circunstancias especiales, ya sea por la naturaleza del problema o por las configuraciones de la máquina ante ciertas contingencias, influyen y modifican esta media en mayor o menor medida; pero es seguro y correcto asumirlo como regla general. En el caso anterior, nos dará setenta y cinco tarjetas de Variable como número total necesario para calcular cualquier  después de . Esto se acerca mucho a la cantidad exacta usada realmente, pero no podemos abordar aquí los pormenores de las circunstancias particulares que se dan en este ejemplo (como probablemente, de hecho, de la mayoría de los cálculos, en alguna de sus fases) que modifican ligeramente este número.

Es obvio que las mismas setenta y cinco tarjetas de Variable pueden repetirse para calcular cualquier Número subsiguiente, justo en base al mismo principio que admite repetir las treinta y tres tarjetas de Variable de las Operaciones (13…23) en el cálculo de cualquier Número. Así tendremos un ciclo de ciclos de tarjetas de Variable.

Si aplicamos ahora la notación de ciclos explicada en la Nota E, podemos expresar las operaciones para calcular los números de Bernoulli de la siguiente forma:

De nuevo,

representa el total de operaciones para calcular cualquier número sucesivo, desde  a  inclusive.

En esta fórmula podemos ver un ciclo variable de primer orden, y un ciclo ordinario de segundo orden. El último ciclo, en este caso, incluye el ciclo variable dentro de sí.

Al inspeccionar las diez Variables de Trabajo del diagrama, podemos observar que, aunque el valor de todas ellas (exceptuando  y ) sufre una serie de cambios, la función que realiza cada una de ellas es fija e invariable. Así,  siempre prepara los numeradores de los factores de cualquier , los denominadores siempre recibe el factor -ésimo de  y  el -ésimo.  siempre decide cuál de las dos rutas seguirán los procesos subsiguientes, consultando el valor de mediante una sustracción; etcétera. Pero no enumeraremos más. Es deseable configurar los procesos en todos los cálculos para que la función asignada a las Variables sea lo más uniforme y fija posible.

Suponiendo que quisiéramos no solo tabular , etcétera, sino , etcétera, entonces solo tenemos que designar otra serie de Variables, , etcétera, para que reciban estes últimos resultados mientras se van generando en . O, de nuevo, en lugar de esto, o adicionalmente a esta segunda serie de resultados, podríamos querer tabular el valor de cada término total sucesivo de la serie (8.), es decir, , etcétera. Luego solo tenemos que multiplicar cada  por su correspondiente , mientras se van generando, y colocar estos sucesivos productos en columnas de Resultado designadas a este objeto.

La fórmula (8.) es interesante también desde otro punto de vista. Es un caso particular de la integral general de la siguiente ecuación diferencial mixta:

para ciertas suposiciones especiales con respecto a  y .

La integral general en sí es de la forma

y merece la pena señalar que la máquina podría (de manera más o menos similar a lo anterior) calcular el valor de esta fórmula, además de casi todas las otrashipótesis sobre las funciones en la integral con tanta (o, en muchos casos, con mayor) facilidad que con la fórmula (8.).

Augusta Ada Lovelace

Doscientos años después del nacimiento de Ada Lovelace, las mujeres siguen teniendo un extra de dificultades para desenvolverse en un mundo que las discrimina de diversas formas. Los campos de la ciencia y la tecnología no son una excepción. Si quieres ayudar a crear una comunidad verdaderamente accesible, diversa e igualitaria, puedes donar a alguna de las organizaciones dedicadas a promover la inclusión de las mujeres en la tecnología.

CC BY-SA 2014 • Gabriel Rodríguez Alberich