Programming Languages Design Considerations (Qualities) Readability –Simplicity and Clarity –Orthogonality –Control Statements –Data Types and Structures –Syntax considerations Writability –Simplicity and Orthogonality –Abstraction –Expressivity
Programming Languages Design Considerations (Qualities) Reliability –Type Checking –Exception Handling –Aliasing –Readability & Writability
Programming Languages Design Considerations (Qualities) Cost –training –writing –compiling –executing –implementing –reliability –maintaining
Programming Languages Design Considerations (Qualities) Binding –Language definition time –Language implementation time –Program writing time –Program compile –Program load time –Program run time
Practical Considerations Architecture Contextual constraints Virtual machines and interpreters Standards Legacy Systems
Architecture Languages designed to match architecture –Von Neumann –Exception: Lisp machines –RISC
Contextual Constraints architecture application area operating system network programming community preferences –general purpose vs special purpose –compiled vs interpreted
Virtual Machines & Interpreters compiler written for virtual machine –written only once interpreters for real machines allows experimentation –eliminates machine specific details
Standards ANSI Cobol (1985) ISO Fortran (1997) ISO Prolog (1995) ANSI/ISO C (1999) ANSI Basic (1989) ANSI/ISO Ada (1995) ANSI Smalltalk (1998) ISO Pascal (1990)
Legacy Systems 90% programmer’s time maintaining backward compatibility necessary ponderous committee vs individual design
Assignment Be able to answer the review questions on pages 33 & 34, particularly –3,4,5,6,7,8,9,12,13,14,18,20,23,24,25,26,27,32