1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine...

33
1 Why and How Were Programming Languages Developed? • Software evolved with hardware Machine language 000 001 010 011 100 101 110 111 Assembly languages ADD R1 R2, SUB R1 001 Higher-level languages ForTran, Lisp, COBOL Graphical interfaces mouse, window systems, Mac, MS windows … Specialized languages SQL, KQML, …

Transcript of 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine...

Page 1: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

1Why and How WereProgramming Languages Developed?

• Software evolved with hardware– Machine language

• 000 001 010 011 100 101 110 111

– Assembly languages• ADD R1 R2, SUB R1 001

– Higher-level languages• ForTran, Lisp, COBOL

– Graphical interfaces• mouse, window systems, Mac, MS windows …

– Specialized languages• SQL, KQML, …

Page 2: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

2History of Computing –Hardware and Software

• http://www.computerhistory.org/exhibits.html

– http://www.computerhistory.org/timeline/

• http://www.cbi.umn.edu/resources/vintage.html

• http://www.computinghistorymuseum.org/museum/index2.htm

• http://www.obsoletecomputermuseum.org/

Page 3: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

3

G

e

n

e

a

I

o

g

y

o

f

C

o

m

m

o

n

L

a

n

g

u

a

g

e

s

Page 4: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

4Hardware Evolution

• Analog vs. digital• Mechanical vs. electronic• Switch, vacuum tube, transistor, integrated

circuit, LSI, VLSI, VVLSI• Precursors – mechanical devices• First generation – vacuum tubes• Second generation – transistors• Third generation – integrated circuits

Page 5: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

5First: Mechanical Analog Devices

• slide rule: an instrument consisting of a ruler with a central sliding piece, both being marked with logarithmic scales; used in making rapid mathematical calculations. (Webster's, op. cit.)

• clock, n., [ME clock], an instrument for the measurement of time by the motion of its parts, indicating hours, minutes, and often seconds, by hands which move upon a dial plate. It usually consists of a frame containing a train of toothed wheels operated by springs and weights and regulated by a pendulum or balance wheel. (ibid.)

Page 6: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

6Abacus 7Earliest Forms Circa 3000 BC

Page 7: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

7Slide Rule - Circa 1600

Page 8: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

8Joseph Marie Jacquard (1752-1834)

• Born in Lyons, France• Son of silk weavers• Father died and he inherited a small 1772 house

and a hand loom, which he started improving.• Existing technology:

– M. Bouchon (1725) pierced paper– M. Falcon (1728) chain of cards– Jacques deVancason (1754) automaton

Page 9: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

9

Page 10: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

10

Page 11: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

11Another revolution....

• Finished his "machine" 1804• Invention? First person to obtain a practical

arrangement which could be generally adapted to a wide range of problems

• Consiel de Prudhomes broke up his machines 1810

• sabotage: 1. malicious injury to work, tools, machinery, etc. (sabot, Fr. wooden shoe)

• died, August 7, 1834 in Quillons at age 82• 30,000 machines in use in Lyons alone!

Page 12: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

12Charles Babbage (1791-1871)

Page 13: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

13

• Mechanical device• NOT electrical• user program control

using punched cards– operations cards– variable cards– number cards

• Separation of storage and calculation:

• (V) store mill:• (A) are accumulators• Control by microprogram:• (B) control barrels

Babbage’s Analytical EngineA General Purpose Machine

Page 14: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

14Difference Engine

• 1822 original design called for 6 decimal places with second-order difference

• 1830 redesigned difference engine with 20 decimal places and a sixth-order difference

Page 15: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

15Science Museum’s Reconstruction

• Difference Engine Number 2 (1847 to 1849)• Science Museum Recreation 1991 (Doron Swade, Curator, below)

– constructed according to Babbage’s original drawings (minor modifications)

• 1991 Bicentenary Celebration• 7 feet high• 11 feet long• 18 inches deep• 4,000 parts• 500,000 pounds

Page 16: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

16It’s all a matter of perspective....

• Johann Meuller, Universal Calculator 1784• Georg and Edvard Scheutz (after Lardner)

– Difference Engine #1 a prototype which 1843 produced the first tables calculated and printed by machinery

– Difference Engine #2 sold to Dudley Observatory, Albany, NY (in Smithsonian’s Info. Age) 1853

– Difference Engine #3 was a copy of #2,1859• sold to General Register Office in London; used to produce

the English Life Table, 1864

Page 17: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

17Scheutz Difference Engine

Page 18: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

18Ada Augusta Byron, 1815-1852

• Corresponded with Charles Babbage• L. F. Menebrea, at (Italian) Office of

Military Engineers wrote “Sketch of the Analytical Engine invented by Charles Babbage, Esq.," in Taylor’s Scientific Memoirs, Vol. III"

• Ada translated paper into English• Taylor’s: "The editorial notes are by

the translator, the Countess of Lovelace." Footnotes enhance the text and provide examples of how the Analytical Engine could be used, i.e., how it would be programmed to solve problems!

• World’s first programmer?

Page 19: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

19Importance of the Difference Engine

1. First attempt to devise a computing machine that was automatic in action and well adapted, by its printing mechanism, to a mathematical task of considerable importance.

2. An example of government subsidization of innovation and technology development

3. Spin offs to the machine-tool "industry"

Page 20: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

20

• 1834 basic plans formulated for an improved device, capable of calculating any mathematical function!

• Basic problem: how to feed the digits of the result wheels back into the calculation

• Portion of mill completed 1847

• Portion of printing mechanism

• 1834 to 1848 -- 30 sets of plans; seems to have given up on construction due to the problems with the difference engine

• Returned to work on design 1858

• 1871 substantial trial model being developed

• an anticipating carry mechanism; a system of rods for transfer of numbers to the printing mechanism

• Separation of storage and calculation:

• (V) store mill:

• (A) are accumulators

• Control by microprogram:

• (B) control barrels

• user program control using punched cards

– operations cards

– variable cards

– number cards

Babbage’s Analytical EngineA General Purpose Machine

Page 21: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

21Analytical Engine

Page 22: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

22Analytical Engine 1840

Page 23: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

23Vacuum Tubes (Analog)

Page 24: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

24Zuse’s Plankalkül - 1945

• Never implemented• Advanced data structures

– floating point, arrays, records

• Invariants

Page 25: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

25Pseudocode – 1949-1953

• What was wrong with using machine code? 0100 1000 1100 0101 1001 …– Poor readability– Poor modifiability - generality– Expression coding was tedious poor writability– Machine deficiencies -- no indexing or floating point

• Laning and Zierler System - 1953– Implemented on the MIT Whirlwind computer– First "algebraic" compiler system– Subscripted variables, function calls, expression translation– Never ported to any other machine

Page 26: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

261930s-1940s

• Atanasoff at Iowa State University, Ames– J.V. Atanasoff, "Computing Machine for the Solution of large

Systems of Linear Algebraic Equations," (August 1940) in Randell (Ed.), The Origins of Digital Computers, Selected Papers, Springer-Verlag, Berlin, 1973

– J.V. Atanasoff, "Advent of Electronic Digital Computing," Annals, Vol..6, No.3 (July 1984)

• Eckert & Mauchly at University of Pennsylvania– http://www.seas.upenn.edu/~museum/

Page 27: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

27John Vincent Atanasoff (1903-1995)

• 1937 -1942, developed and built an automatic electronic digital computer for solving large systems of simultaneous equations.

• 1939, completed and reduced to practice his basic conceptions in an operating breadboard model of a computing machine.

• (1997-99) Reconstruction of Atanasoff Machine, below

Page 28: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

28Electr(ical/onic) Analog Computers

• Flight Simulators, including Whirlwind at MIT• Weapons analysis and operation• Electrical engineering problems• Telephone engineering problems

Page 29: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

29

• Mauchley – Physics instructor, Ursinus College

• Attends a wartime course on electronics at Moore School

• December 1940 Attends AAS meeting meets John V. Atanasoff

• Working on problems of weather prediction

• Visits Atanasoff in Iowa, June 1941

• Eckert - Met Mauchly while a graduate student supervising laboratory work for a war-time electronics class 1941

• Did wartime research on radar and delay line memories for radar devices

• Chief Engineer on ENIAC• Contract signed when he was

24 years old• First electronic digital engineer

John Mauchly (1907-1980)J. Presper Eckert (1919-1995)

Page 30: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

30

• August 1942, John Mauchly writes “The Use of High Speed Vacuum Tube Devices for Calculating” which is ignored!

• 1943, Mauchly and Eckert prepare a proposal for the US Army to build an Electronic Numerical Integrator

• June 26, 1947 Eckert and Mauchly apply for patent on the ENIAC which "embodies our invention...."

Ideas

Page 31: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

31Electronic Numerical Integrator andComputer (ENIAC)

• 1st large scale electronic digital computer• Designed and constructed by Eckert and Mauchly• Since 1920s, faculty had worked with Aberdeen Proving Ground’s• Ballistics Research Laboratory

Page 32: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

32Vacuum Tubes in the ENIAC

Page 33: 1 Why and How Were Programming Languages Developed? Software evolved with hardware –Machine language 000 001 010 011 100 101 110 111 –Assembly languages.

33"Setting up the problem"

• ENIAC was NOT a "stored program" device

• For each problem, someone analyzed the arithmetic processing needed and prepared wiring diagrams to perform the calculations

• Process was time consuming and error prone

• Cleaning personnel knocked cables out and put them back somewhere else!