language paradigms

25
990126 CS655 1 Language Paradigms

Upload: hedia

Post on 18-Jan-2016

42 views

Category:

Documents


0 download

DESCRIPTION

Language Paradigms. Paradigms. Procedural (FORTRAN, ALGOL60, ALGOL68, Pascal, C) Object-based (CLU, Alphard, Euclid, Ada83) Object-oriented (Smalltalk, C++, Eiffel, Sather, Python, Ada95, Java, OCAML) Functional (LISP, Scheme, Common LISP, ML, Haskell) Logic based (Prolog, GHC) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Language Paradigms

990126 CS655 1

Language Paradigms

Page 2: Language Paradigms

990126 CS655 2

Paradigms

• Procedural (FORTRAN, ALGOL60, ALGOL68, Pascal, C)

• Object-based (CLU, Alphard, Euclid, Ada83)

• Object-oriented (Smalltalk, C++, Eiffel, Sather, Python, Ada95, Java, OCAML)

• Functional (LISP, Scheme, Common LISP, ML, Haskell)

• Logic based (Prolog, GHC)

• Parallel (CSP, Ada83, Ada95, Mentat/Legion)

• Non-deterministic (CSP, Unity)

• Aspect-oriented

Page 3: Language Paradigms

990126 CS655 3

Procedural: History

FORTRAN

Algol60

CPL

Algol68

Pascal

PL/I

BCPL C

57 60 70

Page 4: Language Paradigms

990126 CS655 4

Procedural: The Paradigm• (sometimes called "imperative languages")

• Collection of procedures– eliminates code duplication; uses parameters

• Control abstraction reached fairly advanced state– Functions/procedures

– Separate compilation (often no type checking between compilation units)

• But data abstraction primitive– Block structure (in most of the languages)

– Globals/locals

– Passive local variables w/o state

– User-defined types but with no code association

Page 5: Language Paradigms

990126 CS655 5

Procedural: Example

Program main;GLOBAL TYPE: svec: array[1..100] of char;s1, s2, s3: svec;...<initialize s1, s2>...s3:= concat (reverse(s1), reverse(s2));s3[10]:= ’ ’;End;

Function reverse (instr: svec): svec;i: integer;For i:= 1 to len(instr) <reverse instr>;End;

Function concat(instr1, instr2: svec): svec<concatenate instr1 and instr2>;End;

string op?Acceptable

SeparatelyCompilableSubprograms

Page 6: Language Paradigms

990126 CS655 6

Object-Based: History

FORTRAN

ALGOL60

ALGOL68

Clu

Pascal

Simula67

Mesa

Modula2

Ada83

Oberon

Alphard

Euclid

57 80

Page 7: Language Paradigms

990126 CS655 7

Object-Based: The Paradigm• Key feature is abstract data types

– Supports Parnas’s modularity principles

• Provide encapsulation mechanism for ADT’s– for grouping data and functions/procedures associated with that data

– limit outside access to objects inside ADT

– Examples: Ada packages, CLU clusters, Modula2 modules

• Encapsulating mechanisms themselves tend to be typeless

• Export control mechanisms for types, variables, func/procs in ADT’s

• Sometimes import control as well (Euclid)

• Encapsulated ADT’s tend to be separately compilable– Tends to support programming in the large

Page 8: Language Paradigms

990126 CS655 8

Object-Based: Example

Program main;Use stringops;Import svec, concat, reverse;s1, s2, s3: svec;...<initialize s1, s2>...s3:= concat (reverse(s1), reverse(s2));s3[10]:= ’ ’;End;

Package stringops;svec: flex array[0:0];function concat(svec, svec): svec;function reverse(svec, svec): svec;End Specification stringops;

Package body stringops; <defs for concat and reverse>;End Package body stringops;

Compilerwoulddisallow

Specification

Separatelycompilableimplementation

Page 9: Language Paradigms

990126 CS655 9

Object-Oriented: History

FORTRAN

ALGOL60

CPL BCPL C

ALGOL68

Simula67 Smalltalk

C++

Python

Eiffel

Sather

57 90

Ada83 Ada95

Java

Page 10: Language Paradigms

990126 CS655 10

Object-Oriented: The Paradigm• Software re-use

– factoring out common elements

• User-defined classes• User ability to define typed instances of a class

– object • Derived classes

– requires inheritance

• User ability to use objects as first-class entities– assign values

– use in expressions

– pass as arguments

Page 11: Language Paradigms

990126 CS655 11

Without OOD

Conference Room Program size? furnishings? rented? rate? kitchen access?

Hotel Room Program rented? furnishings? rate? TV?

Classroom program size? A/V equipment? number seats?

lighting?

lighting?

Dorm Room Program size? furnishings? networked?

Look for common elements...

size?

networked? assigned? assigned?

Limitations of control abstraction

Page 12: Language Paradigms

990126 CS655 12

With OOD

Basic room size?

Rentable room Rented? Rate? Furnishings?

Conference room kitchen access? lighting?

Hotel room TV?

University room network access? assigned?

Classroom A/V equipment? number seats? lighting?

Dorm room furnishings?

Parent (base) class

Derived class

Page 13: Language Paradigms

990126 CS655 13

OOD Example

Page 14: Language Paradigms

990126 CS655 14

Functional: History

FORTRAN

LISP

Scheme

ISWIM ML Standard ML

Haskell

C++

Common LISP

57 90

Page 15: Language Paradigms

990126 CS655 15

Functional: The Paradigm• Based on Church’s Lambda Calculus• McCarthy’s reaction to FLPL: FORTRAN List Processing Language• Emphasis on conditional and recursion (lacking in FLPL)• Assignment and iteration added only under duress• Primary data types are atoms and lists• Shifted from dynamic scoping (LISP) to static scoping (ML, Scheme,

Haskell) • Importance of polymorphism realized in newer languages (ML,

Haskell)• Functions have taken on first class status only in newer languages

– passed as parameters– returned as values of other functions

• supports higher order functions

Page 16: Language Paradigms

990126 CS655 16

Functional: Example

(function concat (s1 s2) (cond ((null s1) s2) (T (cons (car s1) (concat (cdr s1) s2))) ))

Page 17: Language Paradigms

990126 CS655 17

Logic-Based: History

FORTRAN

LISP

ALGOL68(W Grammars)

Prolog

(System Q)ALGOL60

(ResolutionTheorem Proving)

57 70

GHC

Page 18: Language Paradigms

990126 CS655 18

Logic-Based: The Paradigm• Based on Resolution Theorem Proving

– Horn Clauses

– Deductive Logic

• Key concepts– facts

– queries

– unification (and two-way matching)

• Inefficient runtime– generally done using depth-first search

• Potential for non-termination significant

• Problems with closed world assumption

Page 19: Language Paradigms

990126 CS655 19

Logic-Based: Example

append([], Y, Y).append([H|X], Y, [H|Z]) :- append(X, Y, Z).

-- Prolog’s version of concat

Page 20: Language Paradigms

990126 CS655 20

Parallel Languages: History

FORTRAN

ALGOL60

Pascal

Simula67

ALGOL68

CSP

(Dijkstra’sGuarded Commands)

Concurrent Pascal

DistributedProcesses

Ada83 Ada95

C++

Mentat/Legion

Smalltalk

Occam

FORTRAN9X

57 90

Page 21: Language Paradigms

990126 CS655 21

Parallel: The Paradigm• Key Concepts:

– Program consists of collection of processes (tasks)

– Processes communicate• through shared memory

• using messages

• Dijkstra’s Guarded Commands had profound influence on parallel language design– Guarded communications

• More recent trend is combining of OO and parallel– some confusion over messages

• different semantics in the two paradigms

Page 22: Language Paradigms

990126 CS655 22

Parallel: Example

task type binary_semaphore is entry p; entry v;end binary_semaphore;

task body binary_semaphore is begin loop accept p; accept v; end loop;end binary_semaphore;

Process Q Process R ... ... s.p; s.p; <critical section for Q> <critical section for R> s.v; s.v;end Q; end R;

Page 23: Language Paradigms

990126 CS655 23

Non-Deterministic: History

FORTRAN

LISP

Pascal

(Hoare Logic)

(Temporal Logic)

(Dijkstra’s Guarded Commands)

Unity

57 90

Page 24: Language Paradigms

990126 CS655 24

Non-Deterministic: The Paradigm• Non-deterministic model of computation

– Program is collection of statements

– Statements selected and executed at random

• Interesting conditions, e.g. termination, are fixed points– Fixed point detection is left for "later"

• Unity programs generally very compact• Associated proof system for program verification• Mapping to more detailed solutions left for later.• Goal was to define a paradigm for scientists

Page 25: Language Paradigms

990126 CS655 25

Non-Deterministic: Example• Shortest path-

– dxy: distance from node x to node y

– sdA(y): shortest distance from node A to node y

• Problem: express solution to finding distance from node A to all other nodes, y, in graph

sdA(y) = Min (sdA(y), sdA(x) + d(x,y)) all x,y