Presentation is loading. Please wait.

Presentation is loading. Please wait.

Conference on the History of Programming Languages III

Similar presentations


Presentation on theme: "Conference on the History of Programming Languages III"— Presentation transcript:

1 Conference on the History of Programming Languages III
Modula and Oberon Niklaus Wirth Conference on the History of Programming Languages III San Diego, 9 June 2007 HOPL-III, San Diego,

2 Overview Background The languages’ main characteristics
Their environments Oberon Trends and goals Outlook HOPL-III, San Diego,

3 Background A sequence of langauges with a common style and purpose:
Algol 60 – Algol W – Pascal – Modula-2 – Oberon Reducing the difficulties and the sources of mistakes in programming by structure and strict typing of all data Rigorously defined, convenient syntax HOPL-III, San Diego,

4 ALGOL 60 Defined in 1960 by international committee
Target: Numerical algorithms First language with strictly defined syntax Abstraction from computers and their particular instruction sets HOPL-III, San Diego,

5 ALGOL-W Result of discussions in IFIP WG 2.1 on a successor of Algol 60. Proposal by Wirth, perfected with C.A.R. Hoare in 1965 Implemented in for IBM 360 Adds pointer types and record handling Complex multi-pass compiler HOPL-III, San Diego,

6 Pascal “My idea of the successor of Algol 60”
Strong influence of Structured Programming Designed in 1968, implemented Published in 1970 Success in teaching due to clear structure and ready availability at low cost Pascal-S, Pascal-P UCSD-Pascal, Borland-Pascal HOPL-III, San Diego,

7 Modula-2 Pascal for System Programming
Designed in 1977, implemented 77-80 System for workstation Lilith (1980) Published in 1979 Mixture of Pascal and Mesa (Xerox) Modules and Information Hiding Separate compilation -> libraries Low-level facilities for device access HOPL-III, San Diego,

8 Environments Algol: Small scale computers in academia
Pascal: Era of batch processing and remote program submission, closed shops Modula: Beginning of era of work stations, essentially still used in batch mode Oberon: Era of high-power work stations, interactive use, graphics, windows HOPL-III, San Diego,

9 Environments Algol 60 1960 Fortran 1957 Algol-W 1965 PL/1 1965
Pascal 1970 C (?) 1970 Modula Ada 1984 Oberon 1988 Java 1995 HOPL-III, San Diego,

10 Environments Algol 60 1960 Gier, Electrologica Algol-W 1965 IBM 360
Pascal 1970 CDC 6000, IBM 360, PDP-10, ICL, Univac Modula PDP-11, Lilith, Apple-2 Oberon 1988 NS-32000, M-68000, Int-8086, IBM Power, Sparc, MIPS HOPL-III, San Diego,

11 What is essential for programming?
Languages are too complex, fraught with dispensable features and facilities. Research in programming methodology: assertions, invariants, predicate transformers suggest that a language must rest on a sound, mathematical basis Language to be defined in abstract terms, without reference to a mechanism (computer) HOPL-III, San Diego,

12 Oberon Simplified, reduced Modula-2 (Almost) same syntax, same style
Fewer standard data types Fewer statement kinds Unified definitions and implementations Separation of the notions of unit of program and unit of action: Module vs. procedure (Almost) no low-level facilities (loopholes) HOPL-III, San Diego,

13 Type extension (of record types)
Only two concepts added in Oberon: Type extension (of record types) with type test and type guard T0 T1 x x a T1 is also a T0 y y z 2. Type inclusion LONGREAL  REAL  LONGINT  INTEGER  SHORTINT Procedure-typed record fields + Type extension are the tools for object-oriented programming HOPL-III, San Diego,

14 Trends and Goals The goal of a language must be to assist the programmer to design correct, reliable, provable, efficient software To this aim, it defines a formalism, an abstraction to replace any actual computer This suggests simplicity and regularity of concept The language must be defined without reference to an actual mechanism HOPL-III, San Diego,

15 Have we reached this goal?
Algol 60: reasonably for numeric programs Pascal: better; bad features were the variant record as loophole, rigid static typing Modula-2: poorly variant record, type transfer functions, loopholes Oberon: best of all, very close, water-tight type checks Only very few SYSTEM operators (Put, Get) HOPL-III, San Diego,

16 Outlook New languages tend to go in the wrong direction: They become increasingly complex Teaching programming is dominated by teaching about the language and its features and libraries: It has become a nightmere! - Correctness is reached by trial and error Effectiveness irrelevant, computers are fast Programming: The School of Poor Design Can we learn from history? HOPL-III, San Diego,

17 Education The essence of engineering education is to teach the art of good design. Success in teaching is strongly determined by the tools we use. Our tool is the Programming Langauge. It must present the proper, clearly defined abstractions with which we operate. Yet it must remain on solid grounds to allow for economic, realistic solutions HOPL-III, San Diego,


Download ppt "Conference on the History of Programming Languages III"

Similar presentations


Ads by Google