Development of Programming Languages


IBM 709 (1959)

Altair 8800 (1975)

IMSAI 8080 (1975)
  • Early computers were difficult to program and use

  • Input devices were switches, output devices were blinking lights

  • All communication with the computer was in binary machine language (1's and 0's)

  • Programming in machine language was very tedious and error-prone

    00000100 10000010
    00000001 10000001
    00000101 10000100
    00001011 10000100
    00001101 00010000
    00010100 00000010
    00000101 10000011
    00001111 00000000
    00010100 00000011
    00000101 10000011
    00001111 00000000

  • Assembly language was invented as a shorthand for 1's and 0's

  • 00000100 --> LOD  (load)
    00000001 --> SUB  (subtract)
    00000101 --> STO  (store)
    00000010 --> MUL  (multiply)
    10000001 --> X    (memory location 129)
    10000010 --> Y    (memory location 130)
    10000011 --> Z    (memory location 131)

  • Assembly language was easier to write, debug, and understand

     Machine Code     Assembly Code 
    00000100 10000010
    00000001 10000001
    00000101 10000100
    00001011 10000100
    00001101 00010000
    00010100 00000010
    00000101 10000011
    00001111 00000000
    00010100 00000011
    00000101 10000011
    00001111 00000000
      LOD Y
    SUB X
    STO T1
    CPL T1
    JMZ 16
    LOD #2
    STO Z
    HLT
    LOD #3
    STO Z
    HLT

  • Programs called assemblers were written to do the translation from assembly to machine language automatically

  • Programming in assembly language was still tedious (but better than machine language)

  • High-level programming languages were invented to make assembly language programming easier

     Assembly Code     High-Level Language 
    LOD Y
    SUB X
    STO T1
    CPL T1
    JMZ 16
    LOD #2
    STO Z
    HLT
    LOD #3
    STO Z
    HLT
      if (x > y) {
      z = 2;
    } else {
      z = 3;
    }

  • Programs called compilers were written to do the translation from high-level languages to machine language automatically

  • First compiler written in 1952 by Grace Hopper



    Grace Murray Hopper (1906-1992)

  • Much computer science research since then has focused on the development of ever more powerful and flexible computer languages

  • FORTRAN developed by John Backus and a team of IBM programmers in 1957

  • ALGOL developed in 1958 (ancestor of C)

  • COBOL developed in 1959 by Grace Hopper

  • LISP developed by John McCarthy at Stanford in 1958

  • BASIC developed in 1963 by Thomas Kurtz and John Kemeny at Dartmouth

  • Pascal developed by Niklaus Wirth in 1968

  • Prolog developed by Alain Colmerauer and Phillip Roussel in 1972

  • C developed by Brian Kernighan and Dennis Ritchie at Bell Labs in early 1970s

  • Ada developed by U.S. DOD in early 1980s (named in honor of Lady Lovelace)

  • Java developed in 1990s for the Internet by Sun Microsystems

  • Compilers translate a program to machine language all at once

  • Interpreters translate a program to machine language line-by-line


Compilers and Virtual Machines






Assembly Language Programming