Ahora que hemos visto que un puñado de modelos de computación son equivalentes
a cada uno y hemos expresado la tesis Church-Turing de que ellos representan de
forma conjunta lo que queremos de forma razonable "computable". Vamos a volver a la pregunta
de ¿Qué cosas se pueden hacer con esto? Entonces, ¿Qué sistemas complejos desde sistemas
dinámicos caóticos hasta dispositivos mecánicos pueden realmente llevar a cabo los pasos de una
computación? De hecho, antes de Church y Turing y Rosa Peter y que otros
teóricos de la teoría de la computación llegaran, Charles Babbage, en los años 1800, quería
construir varias computadoras mecánicas. Una de ellas era llamada la "Máquina Diferencial".
Solo era capaz de llevar a cabo ciertos tipos de cálculo. El objetivo de Babbage
era tener una máquina que podría mostrar buenas tablas naúticas de senos y
cosenos y algoritmos y ese tipo de cosas. Con suerte, alimentada con vapor, y así las
personas no tendrían que hacer esas cosas manualmente. Pero Babbage tambien soñaba en una
máquina más complicada llamada la "Máquina Analítica" que es realmente en términos actuales,
lo que habría sido, si se hubiera construido, una computadora universal. Y Ada Lovelace
estudió sus diseños y llegó a una serie de observaciones interesantes sobre ello.
Primeramente, escribió el primer programa complejo con dos bucles "for" anidados que
habría computado un tipo de números llamado los números de Bernoulli pero tambien
predijo algo bastante interesante. Ella notó que si podías representar
números en una máquina, entonces también podías representar muchas otras cosas.
Por ejemplo, música y ella imaginó máquinas que podrían ayudar en la
composición de nuevas piezas musicales. Y que el mundo en el que vivimos actualmente donde
los bits, bytes y enteros que son almacenados dentro de las computadoras tambien pueden
representar audio, videos, imágenes, películas, músicas y todo tipo que usamos,
ese era realmente el mundo que Lovelace imaginaba donde podíamos representar
muchos tipos diferentes de datos con números, dígitos, o bits dentro de una computadora.