Page 1 of 2
One landmark that stands out in programming history, is the first computer game. It wasn't space invaders and it wasn't anything to do with Mario. It was written by a man whose work dated from the dawn of the computing era, Arthur Lee Samuel.
Arthur Lee Samuel (1901-90)
As with most computer pioneers Arthur Samuel started out as an electrical engineer. An early interest in electrical and scientific things lead him to Boston Tech - the old name for the Massachusetts Institute of Technology.
The course involved spending some time in industry and while working for a valve manufacturing company he learned the arcane arts of making, evacuating and testing valves. He was so good at it that he was offered a research job on graduating but instead he opted to take an instructorship at the low salary of $1000 per annum. Throughout his college career he was very short of money and indeed personal finance was a concern of his throughout his life.
While at MIT he worked for a while with Vannevar Bush on the mechanical analog computer that became to be called the differential analyzer. In 1928 he joined Bell Telephone labs to develop a long-life valve for use in transatlantic telephone repeaters. While there he wrote a paper on a new gas discharge oscillator he had invented and was dismayed to find that it was heavily criticised for its poor style. This he took to heart and learned to write clearly and concisely - a skill that he would use time and time again in his future career.
In 1930 he bumped, by pure chance, into an old college friend on a street in New York and a year later they married. He worked on microwave tubes during the war and made significant contributions to their design. So much so that he had a large number of patents which towards the end of his life he thought of as his most important work.
At the end of the war he was a recognised authority on microwave tubes but a very underpaid one. Not only this but the work no longer interested him. He was convinced that something would soon replace the valves that he new so much about - it was time to move on. At 45 he felt the need to prove himself all over again.
Wanted - a computer
The solution was a move back to academia - Illinois University - and this is where it all changed. He started out by forming a vacuum tube laboratory, buying a plane and learning to fly.
Then it happened.
They needed to work out some details of the space charge - how the electrons spread themselves around a hot charged cathode. At Bell Telephone Labs this would have been done by teams of women "computers" with calculators. At Illinois computers of any kind were non-existent and so they decided to build or perhaps buy one.
Samuel asked for quotes for five or six companies and quickly realised that they would be paying for the companies to learn how to build a computer. He concluded that if they were to have a computer and they knew as much about it as anyone, except perhaps John Von Neumann at Princeton. Although he only asked for $90,000, Samuel got $110,000 for the project, and he visited the four places where significant computer work was going on - MIT, Harvard, Pennsylvania and the Institute for Advanced Study.
By the end of 1948 the project was already running out of money. The design was asynchronous and novel - and they needed more money. Someone suggested that in order to attract attention they should build a cut down machine and do something "dramatic" with it. Samuel had heard about Shannon's work on programming a computer to play chess and he decided that the thing to do was to program his machine to play checkers. He reasoned that if Shannon had already done it for chess:
"it ought to be dead easy to program a computer to play checkers."
So Samuel sat down and started to write a program safe in the knowledge that it had all be done before - only it hadn't. Shannon had just talked about it all in the most general of terms and hadn't got anywhere near a computer. Samuel's idea was partly motivated by the fact that the world championships was to be held in a neighbouring town. The idea was presumably that they would produce a computer that would win.
Samuel made a trip to Chicago to talk to Shannon where he discovered the terrible truth. Undaunted, he decided that Checkers had been a good choice after all and set about the programming:
"I started writing a program for a machine that did not exist, using a set of computer instructions that I dreamed up as they were needed."
He soon realised that the small demonstration machine was going to be as complex as the real thing and running out of money was inevitable. At the start of 1949 his unhappiness at having to run a valve laboratory he had no interest in and not being able to pursue computers drove him to seek a new job at a better salary.
By the spring of 1949 he moved to IBM at Ploughkeepsie with a one-year engineering contract at $20,000 per annum. Samuel commented that this was four times his salary at Bell and
"moving around seems to pay".
His work with IBM seems to have been very strange. He was assigned to work with the team producing what was to be the IBM 701 - a fairly large machine - but he seems to have spent most of his time as a roving consultant giving advice where and when it was needed. He was eventually put in charge of a pure research effort after persuading the Watsons that IBM needed to do pure research and not just product development.
Even though he had tried to get away from valves much of the work that he did at this time still centred on valves. He was asked to look into the valve manufacturing plant that IBM had set up and to improve the performance of the Williams CRT storage tube. Eventually, though, he did manage to move over to more general computing problems. One day he found himself talking with Nathaniel Rochester, one of the chief designers of the 701, about the word size that should be used - 32 or 36 bits. He started to ask himself which would be better for his checkers playing program and, to find out, he started to write it again but using the instruction set of the unfinished 701.
Samuel was the first person to do any serious programming on the 701 and as such had no system utilities to call on. In particular he had no assembler and had to write everything using the op codes and addresses. This made the task even more difficult than you might judge it from today's point of view but remember Checkers was also the first Artificial Intelligence (AI) program. He became obsessed with the problem.
"I became so intrigued with this general problem of writing a program that would appear to exhibit intelligence that it was to occupy my thoughts during almost every free moment for the entire duration of my employment by IBM and indeed for some years beyond."
Eventually the 701 was built and it incorporated some changes to the instruction set suggested by Samuel as the result of his work. Being the first really large non-numerical program it influenced the instruction set of all subsequent IBM machines. But he was frightened that the machine might never be completed or that it might be radically changed and so he wrote the checkers program as a set of small self-contained modules loaded by a central module - a sort of primitive operating system. He got it all to run on the first experimental model of the 701.
The IBM 701 - the machine that ran the first checkers program.
Later when the machine was in production he wrote a disassembler to convert his code to assembler rather than have to start from scratch. The disassembler became quite a popular system tool! He also invented the technique of hash coding for storage which John Backus used in the first Fortran compiler.