Language Evaluation




Introduction - Why 380??

  1. Increased capacity to express ideas.
  2. Improved background for choosing languages.
  3. Increased ability to learn languages.
  4. Understanding of significance of implementation.
  5. Ability to design new languages.
  6. Overall advancement of computing.

Language Evaluation Criteria

  1. Criteria
    1. Readability
    2. Writability
    3. Reliability
    4. Cost
  2. Affected by
    1. Simplicity
    2. Orthogonality
    3. Data types and structures
    4. Syntax
    5. Support for Abstraction
    6. Type checking
    7. Exception handling
    8. Aliasing
    9. Control structures
    10. Expressivity

Criteria: Readability & Writability

  1. Simplicity
    1. Small number of basic components
    2. One syntax :: one meaning
      • Increment x with x++; x=x+1; x+=1; ++x;
      • Y=SUM(I,J); Array or function ???
      • Perl deliberately violates
  2. Orthogonality
    1. Any composition of basic primitives is allowed.
    2. Need small set of primitives and ways to combine them
    3. Violation: Out parameters for functions
    4. Violation: Return types for functions
    5. Violation: Functions as first-class objects
    6. Non-orthogonal often to simplify implementation

Criteria: Readability & Writability (Cont.)

  1. Control Statements/Constructs

    Which control mechanisms to include?

  2. Data Types

    * Primitive (e.g. boolean, char, unsigned)

    * Structured

    * Provide abstraction.

  3. Syntax

    * Matters more than you think!

    * Identifier length, reserved words, layout, etc.

  4. Abstraction

    * Hide details to manage complexity!

    * Process abstraction

    * Data abstraction


Criteria: Reliability

  1. Performs to specifications under all conditions
  2. Impacted by:
    1. Type checking
      1. compile-time
      2. runtime
      3. none
    2. Exception handling
    3. Aliasing (i.e. Two or more names for same memory cell), for example:
      p,q: access Integer;
      
      p := new Integer;
      q := p;
      

Criteria: Cost

  1. Programer training
  2. Program writing
  3. Program compilation
  4. Program execution (speed and size)
  5. Liability
  6. Tool availability
  7. Application
  8. Programmer availability
  9. Support for language
  10. Compiler and tool cost
  11. Maintenance time (>50%!)
Writability & readability are critical!

Programming domains


Influences on language design


von Neumann Architecture

  1. Fetch-Execute cycle
    1. control fetches next instruction from memory
    2. control decodes instruction
    3. control causes instruction to be executed
      1. move data from memory to ALU, or
      2. move data from ALU to memory , or
      3. do I/O
  2. Fetch-Decode-Execute!!
  3. Reflected in imperative languages:
    1. Sequential execution of instructions
    2. Modifiable memory locations (variables)

Language Paradigms


Evolution of Imperative Languages



[LaTeX -> HTML by ltoh]
Edward G. Okie Last modified: Aug 26 2002