- Simplicity
- Small number of basic components
- One syntax :: one meaning
- Increment x with x++; x=x+1; x+=1; ++x;
- Y=SUM(I,J); Array or function ???
- Perl deliberately violates
- Orthogonality
- Any composition of basic primitives is allowed.
- Need small set of primitives and ways to combine them
- Violation: Out parameters for functions
- Violation: Return types for functions
- Violation: Functions as first-class objects
- Non-orthogonal often to simplify implementation
Criteria: Readability & Writability (Cont.)
- Control Statements/Constructs
Which control mechanisms to include?
- Data Types
* Primitive (e.g. boolean, char, unsigned)
* Structured
* Provide abstraction.
- Syntax
* Matters more than you think!
* Identifier length, reserved words, layout, etc.
- Abstraction
* Hide details to manage complexity!
* Process abstraction
* Data abstraction