4.1 The early start of programming

The history of the electronic computer is short in the space of time. The first electronic Turing complete computers were made during and after world war two. Turing completeness is a term based on the universal Turing machine, which is a simplified model of a programmable computer. Of the earliest computers the German Z3 from 1941, the British EDSAC from 1949 and the American ENIAC from 1945 can be mentioned. The dawn of modern electronic programmable computing came in the time my parents were born.

In the early days of computing there were no meaningful distinction between what we to day call software and hardware, or between users and programmers. There was only the computer and the people that operated it. The first computers were operated through front panel switches, and permanent storage was often cardboard cards with holes representing 1 and no hole representing 0 (or possibly vise versa). The operator of the computer had to instruct the computer using machine language, this is now called a first generation language.

It is very cumbersome and error-prone to instruct the computer though machine language. Therefore the need for an abstraction was soon realised. The first level of abstraction was to give each computer instruction a textual name and using hexadecimal, octal or decimal numbers in place of digital numbers. The program that translate from the textual representation of instructions to machine language is called an assembler.

  10110000 01100001
  00000100 00001111
  10100010 00001000

  SECTION .data
  x: dd 0
  
  SECTION .text
  mov  al, 061h
  add al, 00Fh
  mov [x], al

Different computers have different instruction sets and therefore programs written in machine language and assembler were tied tightly to the hardware. The distinction between hardware and software became more clear as 3rd generation languages started to appearer in the 1950th. FORTRAN, LISP and COBOL are example of languages first developed in the fifties.

        Ix=97+15

The fifties were dominated by large mainframe computers. This computers were based on vacuum tube technology, and were large as an office and expensive as a small office building. One example is the IBM 705 which was a commercial computer launched in 1954. This computer was sold at an average price of $1.6 million.

In those days there were little meaning in selling programs. You had a program on, punch card, paper strips or magnetic tape that you feed into the computer. The computer industry had it’s income from hardware. There was, however, a need for programs to run on this computers, because programs were seen as add-ons to the hardware it made sense for computer manufacturers to collaborate. Therefore a collaborative organisation called SHARE was started in the US This organisation practised source code sharing. This was not unusual, from the very start of programming loose associations of programmers from different companies shared code.

In the sixties cheaper computers based on transistors came on the marked, most notably by Digital Equipment Corporation (DEC). Connected to DEC was a user group called DEC User Group (DECUS) founded in 1961. DECUS, like SHARE, practised source sharing which was common at the time. Engineers from different companies would meet to exchange experience and source code.

The early history of open source is closely connected to what Eric Raymond call the hacker culture (Raymond 2001), which we will see in the following section. This was the group that continued source sharing after software became commercially interesting.