· 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.
 
 
 
 
  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
 
  
ALGOL 68 (1968-1975) - (Wijnfgaarden) page 75 of text 
· 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)
 
Ada- 1980 page 85 of text
·       
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
 
 
· 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
 
 
· 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.
 
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 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!!
            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)