Charles Babbage inventó la primera “computadora” mecánica completa de Turing, llamada Analytical Engine, pero no fue construida.
Ada Lovelace mantuvo correspondencia con él durante su desarrollo del motor analítico. Se le atribuye el desarrollo de un algoritmo para el motor analítico para calcular una secuencia de números de Bernoulli. Aunque hay desacuerdo sobre cuántas de las ideas fueron de Lovelace, a menudo se la describe como la primera programadora de computadoras. También tradujo y escribió literatura que apoya el proyecto. Con respecto a la programación del motor mediante tarjetas perforadas, una vez escribió: “Podemos decir con la mayor acierto que el motor analítico teje patrones algebraicos del mismo modo que el telar Jacquard teje flores y hojas”.
Antes de la definición precisa de la función computable, los matemáticos a menudo usaban el término informal efectivamente calculable para describir funciones que son computables mediante métodos de papel y lápiz. En la década de 1930, se hicieron varios intentos independientes para formalizar la noción de computabilidad:
En 1933, el matemático austriaco-estadounidense Kurt Gödel, con Jacques Herbrand, creó una definición formal de una clase llamada funciones recursivas generales. La clase de funciones recursivas generales es la clase más pequeña de funciones (posiblemente con más de un argumento) que incluye todas las funciones constantes, proyecciones, la función sucesora, y que está cerrada bajo composición de funciones y recursividad.
- ¿Hay diferencia entre puristas y puritanos?
- ¿Por qué fue derrotada la Luftwaffe?
- ¿Por qué emperadores como Ashoka o Akbar, que conquistaron la mayor parte de la India, no intentaron conquistar China?
- ¿Era la Alemania de Hitler una mayor amenaza para los británicos en comparación con la Francia de Napoleón?
- ¿Es real el material de archivo de la Segunda Guerra Mundial de cadáveres empujados a pozos? ¿Por qué se grabaría eso?
En 1936, Alonzo Church creó un método para definir funciones llamado cálculo λ. Dentro del cálculo λ, definió una codificación de los números naturales llamados los números de la Iglesia. Una función en los números naturales se llama λ-computable si la función correspondiente en los números de la Iglesia se puede representar mediante un término del cálculo λ.
También en 1936, antes de enterarse del trabajo de Church, Alan Turing creó un modelo teórico para máquinas, ahora llamado máquinas de Turing, que podía realizar cálculos a partir de entradas mediante la manipulación de símbolos en una cinta. Dada una codificación adecuada de los números naturales como secuencias de símbolos, una función en los números naturales se llama Turing computable si alguna máquina de Turing calcula la función correspondiente en números naturales codificados.
Church y Turing demostraron que estas tres clases formalmente definidas de funciones computables coinciden: una función es λ-computable si y solo si es Turing computable si y solo si es recursiva en general. Esto ha llevado a los matemáticos y científicos de la computación a creer que el concepto de computabilidad se caracteriza con precisión por estos tres procesos equivalentes. Otros intentos formales para caracterizar la computabilidad han fortalecido posteriormente esta creencia.