Presentation on theme: "Language Paradigms 990126 CS655."— Presentation transcript:

1 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 990126 CS655



3 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 990126 CS655



5 990126 CS655



6 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 990126 CS655



8 990126 CS655



9 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 990126 CS655



11 990126 CS655



12 990126 CS655



13 OOD Example 990126 CS655



14 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 990126 CS655



16 990126 CS655



17 GHC 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 990126 CS655



19 990126 CS655



20 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 990126 CS655



22 990126 CS655



23 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 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 990126 CS655

