Choo-Choo Charlie was a [Software] Engineer


When I was a kid in Pennsylvania, we lived for many years right next to a railroad track, which ran behind my back yard. The trains on that particular track were infrequent, but we'd go down to the tracks and then wave and shout at the engineer in the caboose. He'd toot his horn. Trains, rails, and rail yards, where trains are stored and come together, are information flows--that is how a computer scientist sees them: information moving around, being processed, being controlled. That is how we see everything--admittedly somewhat of an unusual way of seeing. There are numerous information controls and structures such queues when train cars move through stations, and stacks when a train reaches a terminus at the rail yard, and the locomotive may need to be attached to the other end. A "stack" is a mental concept. Stacks implemented in written software are ways of reifying the stack concept using typography--seeing it with the naked eye. Trains at rail yards are another way of seeing stacks. The train's behavior is not a visualization of a stack. It is a stack. As much as anything else is one. Then, there are the track switches, merging, selection, sorting - just about everything you need to make a data flow computer. If we can observe trains as information then we can use this as a metaphor to recreate data flow in the image of trains. The trains, or slight simplifications of them, become models for computation--creative automata.