Computer language history: Difference between revisions

From Hackers & Designers
 
(25 intermediate revisions by 3 users not shown)
Line 1: Line 1:
By [[Vadim Zaytsev]]
'''Lecture by [[Vadim Zaytsev]]'''


Notes by Anja, Maaike and Vicky
Notes taken by Anja, Maaike and Vicky


==Introduction on Vadim==
==Computational linguistics==
 
* Vadim is also known as spider (Vadims alter ego)
* His connection to Jeffrey: ascii café – anarchist café "free software needs a home"
* Knows Jimmy Wales from Wikipedia & Lydia Pyncher from Wikidata > Wikimedia Conference Netherlands
* Participated in Wiki loves monuments 2011: cultural heritage project
* Vadim also made pixel art and made the small blue star in Wikipedia in svg
* Vadim also made a font
* And he plays Ingress
 
== History of 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.''
''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?'''
===How do we talk to computers?===


Examples:
Examples:
Line 22: Line 12:
* Startrek: Engineers travelling back in time speaking to computers, uses mouse as microphone but the keyboard and screen are the actual communication tools
* 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 ===
'''Blaise Pascal'''
1642: Invented a wooden mechanical ‘computer’ or ‘calculator’ which had six digits input called the Pascaline
 
[[File:Pascaline.jpg|600px|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'''
 
[[File:Babbage.jpg|600px|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'''
 
[[File:Ada.jpg|600px|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.


=== Charles Babbage ===
Tip! Watch 'Conceiving Ada', it's a film directed by American artist Lynn Hershman (1995).
1837: The analytical engine, also a mechanical computer.  


=== Ada Lovelace ===
'''Joseph Marie Jacquard'''
1843: First programmer: Ada Lovelace translated and reviewed the book “Sketch of the Analytical Engine” by Charles Babbage.
“Notes by the translator”. Her notes on the engine include what is recognised as the first algorithm intended to carried out by a machine. She introduced the concept of a variable in her writings.


Conceiving Ada -Film directed by American artist Lynn Hershman (1995)
[[File:Loom.jpg|600px|The Jacquard Loom]]


=== Joseph Marie Jacquard ===
1801: 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?) 
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.
Mechanism also used to operate musical clocks and street organs. Can be viewed in Museum Speelklok in Utrecht.
 
'''Adriaan J. Van Wijngaarden'''
 
[[File:Rekenmeisje.jpg|600px|Rekenmeisje]]


=== Adriaan J. Van Wijngaarden ===
1948: Hired women that were good in mathematics to operate the calculator because they were cheaper.  
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.  
They were called “De Rekenmeisjes van Van Wijngaarden”. They knew how the machines worked and how to operate them.


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


"Language documentation is also software" (?)
'''Communication between CPU and memory'''
=== Communication between CPU and memory ===
1935: John von Neumann invented communication between CPU and memory. Is still used as computer model.  
1935: John von Neumann invented communication between CPU and memory. Is still used as computer model.  


=== Flow diagrams ===
'''Flow diagrams'''
Haskell Brooks Curry
Haskell Brooks Curry
1947: Logician. Mechanical translation to computer from flow diagrams.  
1947: Logician. Mechanical translation to computer from flow diagrams.  
Line 60: Line 69:
Pseudo code
Pseudo code


=== Short code ===
'''Short code'''
Used short code.  
Used short code.  
John Mauckly and Willam Schmitt
John Mauckly and Willam Schmitt
Line 70: Line 79:
  '''The program is: 03 00 01 02 00'''
  '''The program is: 03 00 01 02 00'''


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


Line 77: Line 86:


'''Flow-Matic'''  
'''Flow-Matic'''  
  Example: Go from operation 13; if equal to operation 4; otherwise go to operation 2.  
  Example: Go from operation 13;  
        if equal to operation 4;  
        otherwise go to operation 2.  


'''1959:Cobol'''
'''1959:Cobol'''
Line 84: Line 95:
  Display ‘…’ ; Set ‘current player’
  Display ‘…’ ; Set ‘current player’


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


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


=== APL language ===
'''APL language'''
- APL language by Kenneth Iverson (math madness…). Makes every program a one-liner.
- 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.
The problem with this language is that you need a special keyboard to program.
Line 102: Line 113:
life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}


=== Logo programming language ===
'''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’
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 ===
'''Language development for audience'''
1974: language development for Audience by Radia Perlman  
1974: language development for Audience by Radia Perlman  
Tortis (for kids) --> later MIT developed Scratch 
Tortis (for kids) --> later MIT developed Scratch 
Line 111: Line 122:
Libre office writer
Libre office writer
> Free as in freedom not free as in free beer :-)
> Free as in freedom not free as in free beer :-)
https://scratch.mit.edu/
[https://scratch.mit.edu/ scratch.mit.edu]
https://scratch.mit.edu/projects/70831348/#editor
[https://scratch.mit.edu/projects/70831348/#editor scratch.mit.edu/projects/70831348/#editor]


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


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


=== Margaret H Hamilton ===
'''Margaret H Hamilton'''
10936 software engineering in Apollo program
10936 software engineering in Apollo program


=== Software language engineering ===
'''Software language engineering'''
Uniform treating of language.
Uniform treating of language.


==Milestones==
===Milestones===
* Hardware
* Hardware
* Universal hardware + programs
* Universal hardware + programs
Line 135: Line 146:
* Domain-specific languages
* Domain-specific languages
* Engineer languages when needed
* Engineer languages when needed
[[Category:EditMe]]
[[Category:Print]]
[[Category:Web]]

Latest revision as of 11:39, 16 December 2015

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