Fiendish Designs

Fiendish Designs

Fiendish Designs A Software Engineering Odyssey © Tim Denvir 2011 1 Preface These are notes, incomplete but extensive, for a book which I hope will give a personal view of the first forty years or so of Software Engineering. Whether the book will ever see the light of day, I am not sure. These notes have come, I realise, to be a memoir of my working life in SE. I want to capture not only the evolution of the technical discipline which is software engineering, but also the climate of social practice in the industry, which has changed hugely over time. To what extent, if at all, others will find this interesting, I have very little idea. I mention other, real people by name here and there. If anyone prefers me not to refer to them, or wishes to offer corrections on any item, they can email me (see Contact on Home Page). Introduction Everybody today encounters computers. There are computers inside petrol pumps, in cash tills, behind the dashboard instruments in modern cars, and in libraries, doctors’ surgeries and beside the dentist’s chair. A large proportion of people have personal computers in their homes and may use them at work, without having to be specialists in computing. Most people have at least some idea that computers contain software, lists of instructions which drive the computer and enable it to perform different tasks. The term “software engineering” wasn’t coined until 1968, at a NATO-funded conference, but the activity that it stands for had been carried out for at least ten years before that. To engineer something, a road, a car engine, a skyscraper or a piece of computer software is to design and build it, using the techniques and technology known at the time. I have worked in software engineering for about forty years, from 1962 to 2002. For the last 20 years of this time I specialised in formal methods of software development. My first job after graduating was with Elliott’s, a British computer manufacturer, in 1962. Elliott’s no longer exists as a separate company, but has been absorbed into the last remaining British mainframe manufacturer, ICL, through a succession of mergers and take-overs. Chapter 1 Flanges and Festivities Late in the fifties, British Thompson-Houston merged with Hollerith to become the British Tabulating Machine Company. Both these companies produced tabulators, machines that sorted punched cards and which, with a bit of persistence and patience on the part of their operators, could carry out basic statistical processes. In 1960 Powers Samas, an engineering firm, merged with them and the result was International Computers and Tabulators, ICT. I had worked as a vacation student with ICT just at that time, doing logic design and circuit board layout for a new compact military machine; if I ever knew the name of it, I have forgotten. But ICT at about that time were conscious that the word “tabulator” indicated an obsolescent technology, and so they changed their name to International Computers Limited, 2 ICL. By the time I had graduated, there were two other large British computer manufacturers, English Electric and Elliott's. Elliott Brothers had themselves recently absorbed part of NCR, National Cash Registers Ltd. There was also a smaller firm that nonetheless produced mainframe machines, Leo Computers. Leo Computers came about in a rather surprising way. A chain of cafés called Lyons’ Corner Houses were to be found all over London. They needed to coordinate their accounts and required computer power to do so efficiently. Rather than pay someone else to supply their computers, they formed their own computer manufacturing subsidiary, Leo. No “buy in” policy for them! Leo continued producing computers for some years before they were bought by English Electric, who also took over Marconi, an electronics firm who, famously, designed and manufactured radios but also much other electronic equipment, especially for the military. Marconi was one of the firms with whom I had an interview when choosing my first job after graduating. English Electric made the KDF9 computer, a rival in size and performance to the IBM 360, which dominated the market for many years. Later still, towards the end of the sixties, English Electric-Leo- Marconi, EELM, was absorbed into ICL. But back in 1962 Elliott’s produced the 803 machine and were embarking on a more powerful version of it, with the same instruction code, the Elliott 503. In the early 1960s computers were seen as large calculators: machines that could carry out complex mathematical calculations. Most, if not all, application software was about performing large calculations for some purpose. Academic courses reflected this, and were limited to post- graduate diplomas, concentrating on numerical analysis and automata theory. Several polytechnics also provided some more practical HNC courses. Most programmers working for Elliott’s were maths graduates, a few with a post-graduate diploma in computing. A minority were HNC holders. I was one of a batch of new graduates who joined the Scientific Computing Division at Elliott’s. Other graduates joined several other divisions at the same time, so there were some twenty or thirty of us, all newcomers. We rapidly got to know each other and, almost all of us being single graduates living in digs and assorted shared flats and so on, there would be a party to go to every Saturday night. All of us in the Scientific Computing Division spent a few days on a course in which we were taught to program. The language we were taught was the machine code for the Elliott 803. This machine occupied a fairly large room. The central processor was housed in several six-foot high 19 inch wide cabinets. The 803 was one of the first machines to use semiconductors, germanium transistors and diodes, for its electronics. It was consequently relatively compact. A paper tape reader and punch, and a card reader and punch were held in similar cabinets, and the operator’s console was desk-shaped, and held an on-off switch, various lamps and buttons and a “number generator”, which was a row of toggle switches on which one could set up a binary number. There were instructions in the machine for reading the setting on the number generator and for displaying patterns on the 3 lamps. One could also set up an instruction on the number generator and press a button causing the machine to obey it. This was the principal way of booting up a program, by setting up a jump to its starting address on the number generator and obeying it. A line printer could print out results of the calculations or other work that a program had performed. These printers were the first to be attached to a computer and consisted of a rotating drum and rows of hammers. Paper edged with detachable sprocket holes would be fed into the printer. The drum had lines of characters embossed on it. Each line had the same character embossed along all of its character positions. Usually, a line of characters would be printed on each rotation of the drum. The character to be printed at each character position was controlled by timing the hammer at that position to strike when the correct line of the drum was under it. These printers were large and noisy, but were the main means of printing output for most computers. Programmers could book time on the machine to run their programs, or request one of the operators to do so. I preferred to make use of the operators’ services, but most of my colleagues liked to be more hands on. I caused much amusement when I went to use the machine myself for the first time after I had been working there for nearly a year. “What, you’ve never used the machine before, Tim?” The first programming course covered the two main versions of the machine code and gave advice about how to program, using the accumulator and main storage. The machine code was numeric, having a couple of octal digits for the instruction and the rest for the address. Octal numbers were used rather than hexadecimal. The word size in the machine was 39 bits. This may seem bizarre today, when word sizes are invariably a whole number of bytes. Each instruction occupied 18 bits, so that two instructions fitted into each word. One bit remained, in between the two instructions. This was called the “B-line”. Setting the B-line caused the contents of the address in the first half to be added to the second instruction. This was useful for working with arrays and lists. The first five bits of each instruction contained the operation code and the remaining 13 bits the address. In this way the instruction code could address a store of 8192 words. The computers were supplied with a main store of either 4096 or 8192 words. The first versions of the 803 had no backing store. Any intermediate information generated by a program would be punched out onto paper tape, ready to be read in again. Later versions had backing stores consisting of magnetic film, specially manufactured by Kodak. This was 35 mm film with sprocket holes and a magnetic coating instead of a photographic one. The film was wound onto reel-to-reel decks. The simplest version of the machine code was “ absolute”; the addresses in the instructions referred to specific, absolute locations and the program would only work if it was loaded into a specific location in store. This was so primitive and restrictive that it was only used for some very basic utilities.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    277 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us