In our previous Communications column (September 2015) we noted that a celebrated table published by Ada Lovelace in 1843 was not a computer program, despite frequent claims to the contrary. Here we turn to a related question: where did computer code come from? Back in the 1840s nobody talked about "programming" Charles Babbage's planned engines. More importantly, nobody had yet formulated the concept of a program as a series of instructions controlling the operation of a general-purpose computer. The work of Charles Babbage and Ada Lovelace provides an important milestone on the road to this invention, but marks the beginning of the story rather than its end.
In this column we explore the rest of that story, returning briefly to the world of Lovelace and Babbage before moving on to the 1940s when their ideas were independently rediscovered, extended, and finally realized in actual machinery. Developments came thick and fast, moving in just a few years from the earliest relay computers controlled by "coded" arithmetic instructions on tape to ENIAC, the first computer to automatically carry out computations with complex structures including branches and nested loops. This was the context in which the word "programming" was initially applied to a computer, originally to describe the action of the machine's control wires, circuits, and switches when triggering the appropriate sequence of mathematical operations. Before ENIAC was even finished its creators, in collaboration with John von Neumann, had come up with a new approach in which control and arithmetic operations were both represented in a single series of coded instructions stored in an addressable memory unit. That was soon called a computer program, and although the meaning of the term has continued to evolve it has retained this basic sense of a set of instructions that direct the performance of a series of operations, enabling a computer to carry out a task without human intervention.
The following letter was published in the Letters to the Editor of the March 2016 CACM (http://cacm.acm.org/magazines/2016/3/198861).
Thomas Haigh's and Mark Priestley's Viewpoint "Where Code Comes From: Architectures of Automatic Control from Babbage to Algol" (Jan. 2016) focused on the words "code" and "programming" and how they came to be defined as they are today. However, it also mentioned other types of programming from the days before those words took their current meaning, without acknowledging they were exactly the same in the minds of those scientists and "card jockeys" who diagrammed analog computers or charted the progress of a job on the "data processing" floor and wired the plugboards of the unit record equipment on that floor. If no scholar has in fact published a looking-backward article on the plugboard wiring of those machines from the modern programmer's perspective, someone should. If you have never wired a plugboard, I urge you to try it. Teach yourself to sense a pulse and make something useful happen or debug a problem when someone dislodges a cable. Once you understand the machine, you will find you step immediately into programming mode, whereby the cable is the code, the plugboard the subroutine, and the floor the program. Drawing flow diagrams was, once upon a time, what programming was about, no matter what the target environment happened to be.
The only programmer I ever met who coded a significant production program on a UNIVAC SSII 80 (circa 1963) computer and saw it run successfully on its first shot, was an old plugboard master. He flowcharted the program the way he learned to flowchart a machine-room job. The "concept" of programming was nothing new to him.
Byram Township, NJ
Displaying 1 comment