Lecture #2

CIS 400 9/13/99

 

Snobol-1964

  the language guide to snobol

·        It was designed specially for text processing (string processing) Cobol and Fortran were poor string processors

·        Is a collection of powerful operations for string pattern matching

·        One of the early applications was for writing text editors

·     Can have strings of infinite length.

 

 

 

PL/1 mid-60's

The language guide to PL/1

 

  IBM designed to replace FORTRAN & COBOL, (and Algol, to a certain extent)

 

·        Represents the first large scale attempt to design a language that could be used for a

·        Broad spectrum of application areas

·        Developed as an IBM product

·        Block structure

·        Recursive procedure

·        COBOL-like records

·        Exception handling

·        Multi-tasking

·        Pointers were included as a data type

·        Cross section of arrays could be referenced

·        It was considered at partial success

·        Significant uses in business and scientific applications. Imperative languages

 

 

Imperative languages


ALGOL 68 (1968-1975) - (Wijnfgaarden) page 75 of text

The language guide to Algol

·        Was very different from its predecessor

·        Most interesting feature was orthogonality

·        Includes user-defined data types

·        Introduced the kind of dynamic arrays that are termed implicit
heap-dynamic, (in ALGOL 68, dynamic arrays are called flex arrays).

·     Orthogonality of features, (combining simple features to create new ones)

   "Formal definition" (semantics)

 

Pascal 1968, (very popular 1975-90)

The language guide to Pascal

 

Ada- 1980 page 85 of text

            The language guide to Ada

·        Grew out of Pascal

·        Primary goal: Dept. of Defense wanted to support programming of embedded systems

·        Named after Ada Byron - world's first programmer

·        What helped derive ADA:

·        Abstract development

·        Exception handling

·        Parallel processing

·        Program modularity, portability, extensibility

 

C- 1972

            The language guide to C

 

·        Influenced by Algol 68

·        For and switch statements

·        Assignment operators

·        Treatment of pointers

·        C goes in between the imperative languages and the implicative languages

·        People who like C like its flexibility and those who don't like C find it
        too insecure

·        C is part of the widely used UNIX operating system

·        Weakness:  no type checking

 

C++ (C with objects) page 94 of text

 

the language guide to c++

 

·     Object oriented programming

·     Standardized » 1990

·     Bjarne Stroustrup at Bell labs

·     Evolved from C

·     Includes:  derived classes, public/private access of inherited
    components, constructor and destructor functions, friend classes, and
    virtual functions

·     Includes templates and exception handling

·     Operators and functions can be overloaded

·     Popular because of availability of good  and expensive compilers

·     Weaknesses:  inherited many of the C insecurities which makes it a less
        safe language.

 

Smalltalk- 1980  page 91 of text

the language guide to smalltalk

·        Object-oriented programming

·        Objects are structures that encapsulate local data and a collection of
operations called methods that is available to other objects

·        Smalltalk world is populated by nothing but objects, from integer
constants to large complex software systems

·        Dynamic type binding

·        Unit control, taken from simulation world

·        Objects - communicate with each other by message passing

·        Weakness:  grouping

 

Prolog- 1975 page 84 of text

The language guide to prolog

 

·        The name Prolog comes from PROgramming LOGic

·        Programming in logic programming language is non-procedural

·        The primary components of Prolog are a method for specifying predicate
calculus propositions and an implementation of a restricted form of
resolution

·        Logic programming is very inefficient

·        Logic programming has a narrow domain

 

What has driven language design????   (per Gessi)

 

-         parallel architecture

i)                    Writeability

ii)                   Readability

iii)                 Good exception handling

 

 

Evaluation of program language

 

 

            AN EXAMPLE OF ALGOL ORTHOGONALTIY GONE AWRY!!

 

THE FOLLOWING IS OK

 

proc sum = (real (a, b) real : a + b);

 

THE FOLLOWING IS NOT OK

 

(real x, y: read ((x, y));

    if x < y then

                a else b     fi

              := b ^ if a := a + 1; a > b then

                  c := c + 1; + b

             else c := c - 1; a

              fi  

 

 

overloading the operator or name may impair reliability

 

 

 

Evaluation of programming language (per Horowitz and Liskon)

 

ESSENTIAL CHARACTERISTICS

 

DESIRABLE CHARACTERISTICS