Einführung in die Informatik

Post on 20-Mar-2016

46 views 0 download

Tags:

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

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