You are on page 1of 4

Organisation

Principles of Lectures in Pevensey I - 1A7 (start 16.4.07)

Programming
Monday 2pm, Tuesday 3pm, Friday 2pm

Classes in Pevensey I - 2A1 (start 19.4.07)


Lecture 1 - Introduction & History

Languages 2 Groups: Thursday 3pm - 5pm and Friday 11am - 1pm

Coursework week 3 (25%)


!!! week 6 (3 day take home exam) (75%)
Bernhard Reus Webpage
www.informatics.sussex.ac.uk/users/bernhard/ppl.html
1 2

Literature Programming Languages


Robert W. Sebesta: Concepts of Programming
Languages (5th/6th edition), Babylonian
Addison-Wesley, 2002/2005. core
Language
Ravi Sethi: Programming Languages: Concepts &
Constructs, Addison-Wesley, 1996. Chaos
Leslie Wilson and Robert G Clark: Comparative Programming

pragmatic
Some
Benjamin Pierce: Types in Programming Languages, MIT Press 2002. theory
John C. Mitchell: Foundations for Programming Languages, MIT Press, 1996.
Order?
3 4

Motivation Relate to your Programming


understand structure & design principles of
programming languages When you program in Java you use general concepts all the time.
Learn which.
language features:
analyse describe What goes on in the brains of language designers? Let’s see.

recognise
C syntax Algol blocks
use

computer scientist’s destiny:


to learn a new language every 2-5 years
5 6
What we will study What we will not study
History Subprograms
Formal semantics of languages (course 5004)
Language Criteria " Parameter Passing
Syntax " Abstract Data Types Compiler construction (course 5043, 5050)
Binding " Object-Orientation Formal languages (course 5033)
Blocks Computability (course 5003)
Types
One or several languages in detail
References
Low-level (machine) languages
Type Systems
7 8

How we will study Practical and Theoretical


abstract away from concrete languages “It has long been my personal view that the separation of practical and
theoretical work is artificial and injurious.
to abstract =
“to consider apart from application to or Much of the practical work done in computing, both in software and in
association with a particular instance” hardware design, is unsound and clumsy because the people who do it
(Webster) have not any clear understanding of the fundamental design principles
of their work.
concrete languages as sample languages:
Most of the abstract mathematical and theoretical work is sterile because
Java
it has no point of contact with real computing.”
others may be discussed in exercises based on (Christopher Strachey 1916-77, Founder of the Programming Research Group at Oxford)
documents 9 10

first “high-level” language


History (some highlights only)

Plankalkül (1936/45)
More details e.g. in Sebesta, Chapter 2.

We concentrate on highlights of high-level programming P2 R(V0[:16.0],V1[:16.0]) => R0[:16.0]


languages. V0[:16.0] + V1[:16.0] * V1[:16.0] => R0[:16.0]
2007 END
expressions

Timeline
1936

Konrad Zuse (1910-95)


11 12
FORTRAN (1954/57) LISP (1958)

IBM 704 John Backus Language for symbolic computation (AI) John McCarthy
indexing and floating point in hardware (1937 - 2007)
Lists without cluttering of deallocation statements
first widely accepted high-level language: FORmula TRANslating
System First functional programming language

supervised by John Backus John McCarthy MIT (visiting IBM Research)


Turing Award 1977. Turing Award 1971.

13 14

Algol 60 Simula (1967)


The mother of all high-level languages
Kristen Nygaard Ole-Johan Dahl
International joint effort for universal language (1926-2002) (1931-2002)
First language with data abstraction
Idea: use programs in publications to explain algorithms
!Algorithmic Language Introduced the concept of a “class”
Block-structure By Kristen Nygaard and Ole-Johan Dahl from Norway,
Two different parameter passing techniques Turing-Award 2001.
Recursive procedures
People J.W. Backus, F.L. Bauer, J.Green, C. Katz, J. McCarthy, P. Naur, A.J. Perlis,
H. Rutishauser, K. Samuelson, B. Vauquois, J.H. Wegstein, A. van Wijngaarden, M.
Woodger.
15 16

From Algol 68 to Pascal Ada (1975/80)


Pascal (1971/73) is a “better Algol 68”
Triggered by the DoD
call-by-value parameter passing, records Niklaus Wirth
The world’s largest design effort
Designed for teaching (1978-95 most common)
One language for everybody Ada Byron (1815-52)
No variable length array passing (Countess of Lovelace)
the world’s first
No modules or APIs Problem: too many features programmer (for Charles
No input/output standard (first compiler only after 5 Babbage’s machine)

By Niklaus Wirth (ETH Zürich) Turing-Award 1981. years in 1985).


17 18
C# (2002)
pronounce “C sharp”
“better” version of C++ and Java
part of .NET framework
Anders Hejlsberg
Thank you!
designed by Anders Hejlsberg " B Reus, University of Sussex 2007.
known from Turbo Pascal & Delphi
is more typesafe than C++, e.g.
contains delegates, a safe form of
function pointers
19

You might also like