Einführung in die Informatik

48
Einführung in die Informatik 2. Programming Languages, Paradigms and Technology Institut für Informatik und angewandte Mathematik

description

Einführung in die Informatik. 2. Programming Languages, Paradigms and Technology Institut für Informatik und angewandte Mathematik. Roadmap. What is a programming language? Programming = modeling Evolution Trends and Challenges. Übersicht. Andere Studiengänge. Informatikstudium. - PowerPoint PPT Presentation

Transcript of Einführung in die Informatik

Page 1: Einführung in die Informatik

Einführung in die Informatik

2. Programming Languages, Paradigms and Technology

Institut für Informatik und angewandte Mathematik

Page 2: Einführung in die Informatik

© Oscar Nierstrasz 2

Roadmap

> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges

Programming Languages, Paradigms and Technology

Page 3: Einführung in die Informatik

© 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

Page 4: Einführung in die Informatik

© Oscar Nierstrasz 4

Roadmap

> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges

Programming Languages, Paradigms and Technology

Page 5: Einführung in die Informatik

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 …

Page 6: Einführung in die Informatik

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

Page 7: Einführung in die Informatik

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

Page 8: Einführung in die Informatik

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?

Page 9: Einführung in die Informatik

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

Page 10: Einführung in die Informatik

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?

Page 11: Einführung in die Informatik

What is a Programming Language? (take 4)

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

11

A language for communicating software designs

Page 12: Einführung in die Informatik

© Oscar Nierstrasz 12

Roadmap

> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges

Programming Languages, Paradigms and Technology

Page 13: Einführung in die Informatik

Over 8000 recorded programming languages

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

13

http://hopl.murdoch.edu.au/

Why so many?!

Page 14: Einführung in die Informatik

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

Page 15: Einführung in die Informatik

Expressive power

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

15

Formally, all programming languages are equivalent …

So what? …

Page 16: Einführung in die Informatik

Programming is modeling

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

16

Page 17: Einführung in die Informatik

How do these languages differ?

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

17

Functional

Object-orientedLogic

Imperative

Page 18: Einführung in die Informatik

© Oscar Nierstrasz 18

Roadmap

> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges

Programming Languages, Paradigms and Technology

Page 19: Einführung in die Informatik

Jacquard loom — 1801

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

19

Punch cards are invented

Page 20: Einführung in die Informatik

Babbage’s Analytical Engine — 1822

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

20

The first mechanical computer

Page 21: Einführung in die Informatik

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

Page 22: Einführung in die Informatik

Turing machine — 1936

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

22

The first abstract model of a computer

Page 23: Einführung in die Informatik

1st generation: Machine code — 1944

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

23

Machine code is only meant to be read by … machines

Page 24: Einführung in die Informatik

Subroutines — 1949

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

24

The subroutine is one of the key concepts of programming

call

return

Page 25: Einführung in die Informatik

2nd generation: assembler — early 1950s

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

25

Assembly code introduces symbolic names (for humans!)

Page 26: Einführung in die Informatik

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))

Page 27: Einführung in die Informatik

ALGOL — 1958

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

27

begin...

end

Block structure

<statement> ::= <unconditional statement>| <conditional statement>| <for statement>

...BNF

Recursion

Page 28: Einführung in die Informatik

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

Page 29: Einführung in die Informatik

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.

Page 30: Einführung in die Informatik

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

Page 31: Einführung in die Informatik

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

Page 32: Einführung in die Informatik

Semaphores — 1965

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

32

P — acquire resource… critical sectionV — release resource

radically simplified concurrency control

Page 33: Einführung in die Informatik

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

Page 34: Einführung in die Informatik

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

Page 35: Einführung in die Informatik

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++

Page 36: Einführung in die Informatik

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].

Page 37: Einführung in die Informatik

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

Page 38: Einführung in die Informatik

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;

}...

}

Page 39: Einführung in die Informatik

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

Page 40: Einführung in die Informatik

SQL— 1978

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

40

SELECT * FROM BookWHERE price > 100.00ORDER BY title;

Domain-specific language for relational databases

Page 41: Einführung in die Informatik

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

Page 42: Einführung in die Informatik

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";}

Page 43: Einführung in die Informatik

JavaScript — 1995AJAX — 2005

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

43

Client-side browser scripting

Page 44: Einführung in die Informatik

© Oscar Nierstrasz 44

Roadmap

> What is a programming language?> Programming = modeling> Evolution> Trends and Challenges

Programming Languages, Paradigms and Technology

Page 45: Einführung in die Informatik

Components, Frameworks, Patterns — 1990s

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

45

So far, limited impact on programming languages …

Page 46: Einführung in die Informatik

Model-Driven Development — 1980s, 1990s

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

46

softwaredeveloper

PlatformIndependentModel

automatictranslation

Page 47: Einführung in die Informatik

Trends and Challenges

© Oscar Nierstrasz

Programming Languages, Paradigms and Technology

47

Bridging gap between users and technologyyahoo pipes

naked objects

subtextgraph transformation

Page 48: Einführung in die Informatik

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