Is it possible to build a single purpose (non Turing complete) mechanical implementation of say, Microsoft Word? Is it possible to implement such things as iterators, first-order functions, the whole gamut of programming techniques? Could gears and other mechanical parts represent data structures or even program objects? At a certain point does this necessitate building a general purpose Turing-equivalent machine, or can each function, variable, etc, have its own unique mechanical construct in the form of flywheels and/or gears, ratchets, what have you? In summary I wonder if any given piece of software on a standard computer could be compiled to a mechanical blueprint.
|
|
Yes, it is. Here's how you do it: You can compile basically any program you like to circuits. See for instance the work of Dan Ghica and his collaborators on the Geometry of Synthesis, which shows how to compile programs into circuits.
Circuits then turn out to reappear over and over in engineering. John Baez gives a big table of analogies of concepts, and works out a lot of connections, in This Week's Finds 288-296. So the circuit diagrams Dan's compiler generates could be instantiated as mechanical or hydraulic systems, if you really wanted to!
|
|||||||||
|
|
A practical example of this is the Tic Tac Toe computer made out of Tinker Toys at the Boston Science Museum (originally made by a team of MIT students). Of course, this is much simpler than Microsoft Word. Here is a 1989 article from Scientific American describing it. There have also been Turing machines made out of legos (this cheats a bit because it uses electricity---indeed a computer---for movement, but I think the design could be modified to avoid this) scrap metal, and more. |
||||
|
|
|
Trying to address specifically your example of creating an editor in hardware, there was an early experimental computer built which implemented both the operating system and the editor entirely in hardware. Later the editor was replaced with software, which substantially reduced the hardware needed. This was described in a book on computer architecture and history. Unfortunately I've forgotten the name and haven't found the keywords to track down the original source. |
|||
|
|