Post on 20-Mar-2016
description
Einführung in die Informatik
2. Programming Languages, Paradigms and Technology
Institut für Informatik und angewandte Mathematik
© Oscar Nierstrasz 2
Roadmap
> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges
Programming Languages, Paradigms and Technology
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
3
Übersicht
Informatik
Theorie(Automaten und formale Sprachen, Berechenbarkeit, Komplexität, Logik, Algorithmen)
Praxis(Programmiersprachen, Betriebssysteme, Netzwerke &Verteilte Systeme, Software Engineering, Datenbanken, Rechnerarchitektur)
Schnittstellen zur Aussenwelt(Mensch-Maschine Schnittstelle, Computer-vision, Computergrafik, Sensornetze, Künstliche Intelligenz, Computerlinguistik)
Wirtschaftsinformatik
Anwendungs-software
Wissenschaftliche Anwendungen(Modellierung und Simulation, Biologie, Physik, Chemie, Sozialwissenschaften, etc.)
Informatikstudium Andere Studiengänge
Mathematik
Programmiersprachen
formaleSprachen
Computerlinguistik
Modellierung
SoftwareEngineering
© Oscar Nierstrasz 4
Roadmap
> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges
Programming Languages, Paradigms and Technology
What is a language?
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
5
Language = a set of sequences of symbols that we interpret to attribute meaning
Jack and Jill went up the hill …
What is a formal language?
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
6
A Turing machine reads (and writes) a tape of 0s and 1s
The language it accepts is the set of strings that leave it in an accepting state
How can we describe formal languages?
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
7
expression numberexpression expression + expression expression expression expressionnumber digitnumber digit number
Use a set of rules ( ) to describe the structure of the language
3 + 4 5
cf. Chomsky
What is a Programming Language? (take 1)
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
8
.-…-…-….-…---.---..-l.-..-.-. .-…-…-….-…---.---..-l.-..-.-.
12368759752465426856875428654482654876578655123687597524654268568754286544826548765786551236875975246542685687542865448265487657865…
A language to instruct a computer to compute “stuff” …
But how does the computer interpret language?
What is a Programming Language? (take 2)
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
9
.-…-…-….-…---.---..-l.-..-.-. .-…-…-….-…---.---..-l.-..-.-.
What the compiler will handle …
0100100101100110010001110101011010000110101010100101111001111100010101000101011…
But what about syntax and semantics?
parseanalyze
transform optimizegenerate
What is a Programming Language? (take 3)
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
10
.-…-…-….-…---.---..-l.-..-.-. .-…-…-….-…---.---..-l.-..-.-.
Syntax and semantics in a mathematical domain …
But what about the programmer?
What is a Programming Language? (take 4)
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
11
A language for communicating software designs
© Oscar Nierstrasz 12
Roadmap
> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges
Programming Languages, Paradigms and Technology
Over 8000 recorded programming languages
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
13
http://hopl.murdoch.edu.au/
Why so many?!
What do programming languages have in common?
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
14
# Compute factorialsdef fact(n) if n == 0 1 else n * fact(n-1) endend
puts fact(ARGV[0].to_i)
comments
keywords
functionsvariables
control constructs
numbers, strings
expressions
statements
A fragment of Ruby code
Expressive power
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
15
Formally, all programming languages are equivalent …
So what? …
Programming is modeling
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
16
How do these languages differ?
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
17
Functional
Object-orientedLogic
Imperative
© Oscar Nierstrasz 18
Roadmap
> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges
Programming Languages, Paradigms and Technology
Jacquard loom — 1801
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
19
Punch cards are invented
Babbage’s Analytical Engine — 1822
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
20
The first mechanical computer
Church’s Lambda Calculus — 1932
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
21
(λ x. (λ y. x)) a b
The first (minimal) language for studying computation
(λ y. a) b
a
if true then a else b
Turing machine — 1936
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
22
The first abstract model of a computer
1st generation: Machine code — 1944
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
23
Machine code is only meant to be read by … machines
Subroutines — 1949
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
24
The subroutine is one of the key concepts of programming
call
return
2nd generation: assembler — early 1950s
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
25
Assembly code introduces symbolic names (for humans!)
3rd generation: FORTRAN — 1955
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
26
High-level languages are born
C AREA OF A TRIANGLE - HERON'S FORMULAC INPUT - CARD READER UNIT 5, INTEGER INPUTC OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUTC INPUT ERROR DISPAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING INTEGER A,B,C READ(5,501) A,B,C 501 FORMAT(3I5) IF(A.EQ.0 .OR. B.EQ.0 .OR. C.EQ.0) STOP 1 S = (A + B + C) / 2.0 AREA = SQRT( S * (S - A) * (S - B) * (S - C)) WRITE(6,601) A,B,C,AREA 601 FORMAT(4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,12HSQUARE UNITS) STOP END
IF(A.EQ.0 .OR. B.EQ.0 .OR. C.EQ.0) STOP 1S = (A + B + C) / 2.0AREA = SQRT( S * (S - A) * (S - B) * (S - C))
ALGOL — 1958
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
27
begin...
end
Block structure
<statement> ::= <unconditional statement>| <conditional statement>| <for statement>
...BNF
Recursion
Lisp — 1958
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
28
(defun factorial (n) (if (= n 1) 1 (* n (factorial (- n 1)))))
Programs as data
Garbage collection
COBOL — 1959
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
29
modules
ADD YEARS TO AGE.MULTIPLY PRICE BY QUANTITY GIVING COST.SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.
10 INPUT "What is your name: ", U$20 PRINT "Hello "; U$30 INPUT "How many stars do you want: ", N40 S$ = ""50 FOR I = 1 TO N60 S$ = S$ + "*"70 NEXT I80 PRINT S$90 INPUT "Do you want more stars? ", A$100 IF LEN(A$) = 0 THEN GOTO 90110 A$ = LEFT$(A$, 1)120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30130 PRINT "Goodbye "; U$140 END
BASIC — 1964
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
30
interactive programmingfor the masses
JCL — 1964
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
31
//IS198CPY JOB (IS198T30500),'COPY JOB',CLASS=L,MSGCLASS=X//COPY01 EXEC PGM=IEBGENER//SYSPRINT DD SYSOUT=*//SYSUT1 DD DSN=OLDFILE,DISP=SHR//SYSUT2 DD DSN=NEWFILE,// DISP=(NEW,CATLG,DELETE),// SPACE=(CYL,(40,5),RLSE),// DCB=(LRECL=115,BLKSIZE=1150)//SYSIN DD DUMMY
invented scripting for IBM 360
Semaphores — 1965
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
32
P — acquire resource… critical sectionV — release resource
radically simplified concurrency control
Planner — 1969Prolog — 1972
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
33
man(socrates).mortal(X) :- man(X).
Facts and rules
?- mortal(socrates).Yes
Queries and inferences ?- mortal(elvis).No
Pascal — 1970
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
34
Supports structured programming
Successful with PCs
function gcd (a, b: integer) : result real; var x : integer;begin if b= 0 then gcd := a else begin x := a; while (x >= b) do begin x := x - b end; gcd := gcd(b,x) endend
begin
begin
end
endend
begin
C — 1972
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
35
Good for portable systems programming
Bridging low- and high-level programming
#include <stdio.h>//echo the command line argumentsint main (int argc, char* argv[]) {
int i;for (i=1; i<argc; i++) {
printf("%s ", argv[i]);}printf("\n");return 0;
}
char*
i++
Smalltalk — 1972
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
36
Integer»factorialself = 0 ifTrue: [^ 1].self > 0 ifTrue: [^ self * (self - 1) factorial].self error: 'Not valid for negative integers'
5 factorial 120
Everything is an object
Everything happens by sending messages
“Dynabook” vision
self = 0 ifTrue: [^ 1]self > 0 ifTrue: [^ self * (self - 1) factorial].
ML polymorphic type inference — 1973
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
37
length [ ] = 0length (x:xs) = 1 + length xs
length :: [a] -> Int
length "hello" 5length [10..20] 11
generic functions may be applied to many types of arguments
Monitors — 1974
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
38
structured concurrency control
public class Account {protected int assets = 0;...public synchronized void withdraw(int amount) {
while (amount > assets) {try {
wait();} catch(InterruptedException e) { }
}assets -= amount;
}...
}
Bourne shell — 1977
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
39
cat Notes.txt| tr -c '[:alpha:]' '\012'| sed '/^$/d’| sort| uniq –c| sort –rn| head -5
Scripting pipelines of commands
14 programming14 languages 9 of 7 for 5 the
SQL— 1978
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
40
SELECT * FROM BookWHERE price > 100.00ORDER BY title;
Domain-specific language for relational databases
Miranda — 1985
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
41
fibs = 1 : 1 : fibsAfter 1 1fibsAfter a b = (a+b) : fibsAfter b (a+b)
Lazy evaluation
take 10 fibs [1,1,2,3,5,8,13,21,34,55]
“Pure” functional programming
Perl — 1987CGI — 1993
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
42
Text manipulation, then web scripting
#!/usr/bin/perl -wprint "Content-type: text/html\n\n";print <<'eof'<html><head><title>Directory contents</title></head><body><h1>Directory contents</h1><ul>eof;@files = <*>;foreach $file (@files) {
print '<li><a href="' . $file . '">' . $file . "</li>\n";}print "</ul></body></html>\n";__END__
@files = <*>;foreach $file (@files) {
print '<li><a href="' . $file . '">' . $file . "</li>\n";}
JavaScript — 1995AJAX — 2005
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
43
Client-side browser scripting
© Oscar Nierstrasz 44
Roadmap
> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges
Programming Languages, Paradigms and Technology
Components, Frameworks, Patterns — 1990s
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
45
So far, limited impact on programming languages …
Model-Driven Development — 1980s, 1990s
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
46
softwaredeveloper
PlatformIndependentModel
automatictranslation
Trends and Challenges
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
47
Bridging gap between users and technologyyahoo pipes
naked objects
subtextgraph transformation
Conclusions
© Oscar Nierstrasz
Programming Languages, Paradigms and Technology
48
Programming languages are for humans not just computers
Programming is modeling
Programming languages have always evolved to bring programming closer to the users’ problems
We are still very early in the history of programming