Computer language history

From Hackers & Designers

Lecture by Vadim Zaytsev

Notes taken by Anja, Maaike and Vicky

Computational linguistics

Language is the ability to acquire and use complex systems of communication, particularly the human ability to do so, and a language is any specific example of such a system. The scientific study of language is called linguistics.

How do we talk to computers?

Examples:

  • Doctor Who: Science fiction series from the 60's> people talking to machines using programming language called Algol 68
  • Startrek: Engineers travelling back in time speaking to computers, uses mouse as microphone but the keyboard and screen are the actual communication tools

Blaise Pascal

Pascaline by Blaise Pascal

In 1642 Blaise Pascal invented a wooden mechanical ‘computer’ or ‘calculator’ which had six digits input. Pascal was spurred to it when participating in the burden of arithmetical labor involved in his father's official work as supervisor of taxes at Rouen. First called the Arithmetic Machine, Pascal's Calculator and later Pascaline, his invention was primarily intended as an adding machine which could add and subtract two numbers directly although its description could be extended to a "mechanical calculator" with which it was possible to multiply and divide by repetition.

Charles Babbage

Charles Babbage

In 1837 Charles Babbage proposed a mechanical general-purpose computer designed by English mathematician and computer called The Analytical Engine. It was first described in 1837 as the successor to Babbage's difference engine, a design for a mechanical computer. The Analytical Engine incorporated an arithmetic logic unit, control flow in the form of conditional branching and loops, and integrated memory, making it the first design for a general-purpose computer that could be described in modern terms as Turing-complete. In other words, the logical structure of the Analytical Engine was essentially the same as that which has dominated computer design in the electronic era.

Babbage was never able to complete construction of any of his machines due to conflicts with his chief engineer and inadequate funding. It was not until the 1940s that the first general-purpose computers were actually built, more than a century after Babbage had proposed the pioneering Analytical Engine in 1837. 1837: The analytical engine, also a mechanical computer.

Ada Lovelace

Ada Lovelace

In 1843 Ada Lovelace made notes on the analytical engine and this included the first algorithm intended to be carried out by a machine. She introduced the concept of a variable in her writings.

She was a British mathematician and writer, chiefly known for her work on Charles Babbage's early mechanical general-purpose computer, the Analytical Engine. Her notes on the engine include what is recognised as the first algorithm intended to be carried out by a machine. Because of this, she is often regarded as the first computer programmer.

Tip! Watch 'Conceiving Ada', it's a film directed by American artist Lynn Hershman (1995).

Joseph Marie Jacquard

The Jacquard Loom

1801: The Jacquard Loom. Uses punched cards, also called Jacquard Cards, to operate threads in a weaving machine – multi threaded (joke for hackers?) 

Mechanism also used to operate musical clocks and street organs. Can be viewed in Museum Speelklok in Utrecht.

Adriaan J. Van Wijngaarden

Rekenmeisje

1948: Hired women that were good in mathematics to operate the calculator because they were cheaper. They were called “De Rekenmeisjes van Van Wijngaarden”. They knew how the machines worked and how to operate them.

Debugging punched cards Adele Kate Goldstine Punched cards: don’t link them so you’re able to remove parts and debug the program.

Communication between CPU and memory 1935: John von Neumann invented communication between CPU and memory. Is still used as computer model.

Flow diagrams Haskell Brooks Curry 1947: Logician. Mechanical translation to computer from flow diagrams. Three programming languages named after him: Haskell, Brooks and Curry. First programming language. Flow diagrams are the first computer language (John von Neumann, Herman Goldstine, Adele Goldstine) > an attempt to speak "to yourself in the future" but still very slow translation Pseudo code

Short code Used short code. John Mauckly and Willam Schmitt

	00 is jump to the left
	01 is move your arms
	02 is sit down
	03 is random dance
	The program is: 03 00 01 02 00

Math.matic, Flow-Matic and Cobol Invented by Grace Murray Hopper

Math.Matic Implemented more words to the programming language so the program is readable.

Flow-Matic

	Example: Go from operation 13; 
       if equal to operation 4; 
       otherwise go to operation 2. 

1959:Cobol

Still in use now.

	Display ‘…’ ; Set ‘current player’

The end of COBOL Ed Yourdon predicted the end of Cobol (but it's still here) 2000 issues programming with COBOL

Fortran

  • Fortran: Formula translator by John Backus
  • 1958: Algol. Ment as a global language. Backus wanted to generalise it.

APL language - APL language by Kenneth Iverson (math madness…). Makes every program a one-liner. The problem with this language is that you need a special keyboard to program.

Example: prime number  (~R∊R∘.×R)/R←1↓ιR

Example: Conway's game of life life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

Logo programming language Seymour Papert co-invented the Logo programming language with Wally Feurzei. He is one of the pioneers of artificial intelligence. Remembered for its use of ‘turtle graphics’

Language development for audience 1974: language development for Audience by Radia Perlman Tortis (for kids) --> later MIT developed Scratch 

Libre office writer > Free as in freedom not free as in free beer :-) scratch.mit.edu scratch.mit.edu/projects/70831348/#editor

Model-driven software development By Markus Völter studies generic tools: PhD Model-driven software development or MDSD

UML modelling language Visual notation to express design: UML modelling language

Margaret H Hamilton 10936 software engineering in Apollo program

Software language engineering Uniform treating of language.

Milestones

  •  Hardware
  • Universal hardware + programs
  • Automated code generation
  • Programming with words
  • Language documentation 
  • Domain-specific languages
  • Engineer languages when needed