Now that we've seen that a number of models of computation are equivalent
to each other and we've expressed the Church-Turing Thesis that they jointly
represent what we can reasonably call computable. Let's return to the question
of what things can do this. So, what complex systems ranging from chaotic
dynamical systems to mechanical devices, can actually carry out the steps of a
computation. In fact long before Church and Turing and Rosa Peter and the other
theorists of computable theory came along, Charles Babbage, in the 1800's, wanted to
build various mechanical computers. One of them was called the Difference Engine. It
was really only capable of carrying out certain types of calculus. Babbage's goal
was to have a machine which could print out good nautical tables of sines and
cosines and logarithms and that sort of thing. Hopefully steam powered so that
people wouldn't have to do it by hand. But Babbage also dreamed of a more
complicated machine called the Analytical Engine which is really in modern terms,
would have been, had it been built, a universal computer. And Ada Lovelace
studied his designs and came up with some very nice observations about them.
First of all, she wrote the first complex program with two nested 'for' loops that
would have computed a type of a number called the Bernoulli numbers but she also
predicted something very interesting. She noticed that if you could represent
numbers in such a machine, then you could represent many other things as well.
For instance music and she imagined machines which could aid in the
composition of new musical pieces. And so the world we live in today where
the bits and bytes and integers that are stored inside computers can also
represent audio, video, images, movies, music, all the things we are used to,
that's really the world that Lovelace envisioned where we can represent
many different types of data with numbers, digits, or bits inside of a computer.