# A Turing Machine

## Quick Introduction

In Alan Turing’s 1936 paper on computable numbers, he presented a thought experiment. Turing describes a machine that has an infinitely long tape upon which it writes, reads and alters symbols. He further shows that a machine with the correct minimal set of operations can calculate anything that is computable, no matter the complexity.

My goal in building this project was to create a machine that embodied the classic look and feel of the machine presented in Turing’s paper. I wanted to build a machine that would be immediately recognizable as a Turing machine to someone familiar with Turing's work.

Although this Turing machine is controlled by a Parallax Propeller
microcontroller, its operation while running is based only
on a set of state transformations loaded from an SD card and
what is written to and read from the tape. While it may seem
as if the tape is merely the input and output of the machine,
it is not! Nor is the tape just the memory of the machine.
In a way the tape** is
the computer**. As the symbols on the tape are manipulated
by simple rules, the computing happens. The output is really
more of an artifact of the machine using the tape as the computer.

The heart of the turing machine is the read-write head. The read-write head transports the tape and positions cells of the tape appropriately. It can read a cell determining what, if any, symbol is written there. The machine works on, and knows about, only one cell at a time. The tape in my machine is a 1000’ roll of white 35mm film leader. The characters, ones and zeros, are written by the machine with a black dry erase marker.

## Video Overview

The following video is an overview of the machine and its components. There is a lot more information in other parts of the site including hardware and software details, as well as video examples of it running some common Turing machine code.

While I have taken some liberty with a number of terms and concepts, I hope you can see just how simple the rules that drive a Turing machine are. Changing ones to zeros, moving one cell to the left or right, these concepts are simple, yet they can compute anything that is computable. And from these simple concepts, the most complex computers of today are born.

## Programming the Propeller with Spin

A Beginner's Guide to Parallel Processing walks you through the essential skills you need to build and control devices using the Propeller chip and its parallel processing environment.

## Online Turing Machine Simulators

Here are a couple of simulators that will let you experiment with creating your own Turing machines.

## The New Turing Omnibus

Sixty-Six Excursions in Computer Science.