CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s...

40
1 CS2136: Paradigms of Computation Class 02: History of Programming Languages (continued from last time) Copyright 2001 - 2004 Michael J. Ciaraldi and David Finkel

Transcript of CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s...

Page 1: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

1

CS2136:Paradigms of Computation

Class 02:History of Programming Languages

(continued from last time)Copyright 2001 - 2004 Michael J. Ciaraldi and David Finkel

Page 2: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

2

Where Were We By 1960?zFortran was well established for science

and engineering work.zCOBOL was just getting started.zLISP was just at MIT.zAlgol was just on paper.zAll systems programming was done in

assembler.zMost commercial programming was done

in now-obsolete proprietary languages.

Page 3: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

3

1960szSome outgrowths from the ’50syFortran was extended and standardized.yCOBOL became very widely used; it was the

first standardized language on multiple platforms.yBurroughs adopted Algol as its systems

programming language.yLISP became widely used in AI (Artificial

Intelligence) work.

Page 4: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

4

1960s II

z1964: BASICz“Beginner’s All-Purpose Symbolic Instruction

Code”zJohn Kemeny and Thomas Kurtz (Dartmouth)zRunnable from terminals on time-sharing

systems; built-in editorzGood error checkingzLine numberszNo parameters or local variableszOriginally compiled; mostly interpreted

Page 5: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

5

1960s IIIz1965: PL/Iz“Programming Language One”zFirst ran on IBM System/360 series.zStructured like AlgolzNumeric power of FortranzData processing power of COBOLzData structures, generic functionszSuitable for systems programmingzSupports multi-tasking

Page 6: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

6

1960s IV

z1962: Simula Iz“Simulation Language”zOle-Johan Dahl (Norway)zInherent multi-taskingzLed to…

Page 7: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

7

1960s V

z1967: Simula 67zA general-purpose languagezThe first language with objects, classes,

and subclasses

Page 8: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

8

1960s VI

z1968-1969: PascalzNiklaus Wirth (ETH, Zurich)zModeled after AlgolzNo GOTOzVery strongly typedzProcedures nested inside each otherzDesigned for teaching programming

Page 9: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

9

1960s VII

z1968: Structured Programming by Dijkstra, Dahl, and Hoare.

Page 10: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

10

Where Were We By 1970?

zCOBOL was the most widely used language, especially in business.zFortran was the most widely used language

for science and engineering.zAlmost no one had heard of Simula or Pascal.zMost systems programming was still being

done in assembly language.

Page 11: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

11

1970s

zSome outgrowths from the ’60syTimesharing became common.yMinicomputers became common.yCOBOL and Fortran kept rolling along.yThe need for structured programming

techniques started to be recognized.

Page 12: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

12

1970s II

zSome developmentsy1971: Microprocessor inventedy1974-1975: First microcomputersy1975: Microsoft BASIC for the AltairxBill Gates, Paul Allen

y1977: Apple II, Commodore PET, and Radio Shack TRS-80 introduced, all running BASIC.yARPAnet and Usenet founded.

Page 13: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

13

1970s IIIz1972: Prologz“Programming in Logic”zPhilippe Roussel (France)zBased on rules, facts, and queries.

Page 14: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

14

1970s IVz1973: CzSuccessor to B, which was stripped-down

BCPL.zKen Thompson (Bell Labs)zHigh-level constructs and low-level powerzVery suitable for systems programmingyUnix was written as 20K lines of C plus 1K

likes of assembler.

Page 15: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

15

1970s V (C continued)zFeaturesyStructured like AlgolyData structuresyPointersyCall by value or referenceyName scope:xLocalxGlobal (named)xStatic (within a source file)

Page 16: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

16

1970s VI

z1978: UCSD Pascal for the Apple IIzCompiled into p-code, the machine

language of an ideal machine.zThe p-code was then interpreted.zInterpreters were developed for several

other platforms.zA microprocessor was eventually designed

to run p-code.

Page 17: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

17

1970s VII

z1974-1978: AdazNamed after Ada Augusta.zInstigated by the Department of DefensezJean Ichbiah (France)zDesigned for systems programming,

especially embedded systems.zInspired by PL/I and Pascal.

Page 18: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

18

1970s VIIIz1972-1980: SmalltalkzAlan Kay, Adele Goldberg (Xerox PARC)zGraphics-richyGUIyFonts

zObject-orientedyEverything is an objectyObjects communicate through messages

Page 19: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

19

1970s IXzc. 1972: HAL/SzIntermetricszSystems programming language for the

Space Shuttle.zInspired by PL/IzVariables included units, e.g. x inches.

Page 20: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

20

1970s Xz1974: SchemezGerald Sussman & Guy Steele at MITzVariant of LISP, with lexical scoping.yOriginal LISP had only global variables.ySimpler than LISP.

Page 21: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

21

Where Were We in 1980?

zCOBOL and Fortran were still rolling along.y“I don’t know what the programming language of

the year 2000 will look like, but it will be called Fortran.” – E. Dijkstra, 1975.

zLISP being used in AI research and specialized applications.ye.g. Implementing “toy” languages.

zBASIC had spawned a new generation of amateur and professional programmers.

Page 22: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

22

Where Were We in 1980? II

zProlog was the basis for the Japanese “Fifth Generation” project.zSome Pascal was being taught.zSome people were excited about Unix / C.zMost systems programming was still being

done in assembly language.

Page 23: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

23

1980s

zSome outgrowths from the ’70syMinicomputers and timesharing became

common at colleges and some companies.xMost access through hard-copy terminals at

computer centers

yWorkstations running Unix spread into graphics, science, and engineering.yLANs spread.yARPAnet became Internet and reached many

colleges and high-tech companies.

Page 24: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

24

1980s II

zSome more outgrowths from the ’70syPersonal computers spread in business and

at home.yWord processing, spreadsheets, etc. reduced

the need for programming.yBBSs and on-line servicesyMany beginning students learned Pascal.yMany advanced students learned C.yStructured analysis and design began.yCOBOL and Fortran kept rolling along.

Page 25: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

25

1980s III

z1979-1983: C++zOriginally thought of as “C with classes”.zBjarne Stroustrop (Bell Labs)zFirst widely-accepted object-oriented

language.zFirst implemented as a pre-processor for

the C compiler.zAll the power of C, plus objects.

Page 26: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

26

Where Were We in 1990?

zCOBOL and Fortran were starting to flag.zLISP and Scheme were being widely

taught, but not widely used.zBASIC was the most widely used

language in the world.zC was the most popular systems

programming language.zThe Japanese “Fifth Generation” project

had failed.

Page 27: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

27

Where Were We in 1990? IIzUnix workstations were widely used at

colleges and high-tech companies.zAlmost every company had at least some

PCs.zLarger companies had LANs.zSome people had home PCs.zAlmost every college and high-tech company

had Usenet, but only some had direct Internet connections.

Page 28: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

28

1990s

zSome outgrowths from the ’80syPCs became ubiquitous at work, school, and home.yThe Internet became widely commercially

available.yGUIs became ubiquitous.yThe World Wide Web became ubiquitous.yObject-oriented analysis, design, and programming

spread.

Page 29: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

29

1990s II

z1991-1994: HTMLz“Hypertext Markup Language”yLanguage of the World Wide Web.

zTim Berners-Lee (CERN)zA markup language, not a programming

language.zMarks features of a document, not how it

must be displayed.

Page 30: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

30

1990s III

z1991-1995: JavazJames Gosling (Sun)zStarted as “Oak” for running set-top

boxes.zApplications or AppletszObject-oriented

Page 31: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

31

1990s IV (Java continued)

zGarbage collectionzCompiled into “byte code”, then

interpreted.yMicroprocessors now available.

zGraphical, lots of libraries, multi-tasking, networkingzPortabley“Write once, run anywhere”

Page 32: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

32

1990s V

zGrowth of frameworksyPre-written skeletons of programsyFaster developmentyLibraries for GUI, multi-tasking, etc.

zEmphasis on cross-platform developmentyOperating systemsyHardwareyPC, game console, cell phone

Page 33: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

33

1990s VI

zLanguages for the Web:yJava applets and servletsyScripting languages, e.g. PERL.xCGI or Apache modulexSimple but powerful.

yLanguages within Web pagesxServer-side includesxPHP

Page 34: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

34

1990s VII

zWho knows what people in the next decade will consider the important languages of the ’90s?z…or of the 20th Century?

Page 35: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

35

Where Are We In 2004?

zPCs are ubiquitous at home, school, and work.zThe Internet and Web are ubiquitous.zLANs are almost everywhere people have

multiple computers.zMS-Windows is ubiquitous.zUnix still strong, Linux growing.

Page 36: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

36

Where Are We In 2004? II

zC and C++ are the most widely used systems programming languages.zJava is exploding.zMost students learning C / C++ or Java.zIncreasing interest in Scheme.zCOBOL, 4GLs, and Java are used for

business.

Page 37: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

37

Where Are We In 2004? III

zFortran is the main language on supercomputers.yC++ is growing.yObject-Oriented Fortran 2000.

zScripting languages growing, especially on Web servers.zObject-Oriented COBOL?

Page 38: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

38

Where Are We In 2004? IV

zMicrosoft .NETyMultiple languagesxC++xC#xVisual BasicxCOBOLxFortranxEiffel

yCommon virtual machineyWeb services

Page 39: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

39

Where Are We In 2004? V

zWho knows what people in the future will consider the important languages of this current decade?z…or of the 21st Century?

Page 40: CS2136: Paradigms of Computationweb.cs.wpi.edu/~dfinkel/Courses/CS2136_D04/class02.pdf · 3 1960s zSome outgrowths from the ’50s yFortran was extended and standardized. yCOBOL became

40

Next Time

zAn introduction to Logic Programming and Prolog