1. Overall Simplicity a. Small no. of constructs makes language easier to learn b. Feature multiplicity (many ways to do the same thing) c. Operator overloading (operator has more than one meaning) Orthogonality a. A small set of primitive constructs can be combined to build legal control and data structures Control Statements a. No GOTO statements that break top-down approach of code execution Data types and structures a. The ability to define data types and data structures Syntax Considerations a. Identifier Forms (do not restrict identifiers to short lengths) b. Special Words c. Form and meaning (Designing statements so that their appearance makes it obvious of their meaning) d. Appearance of special words/commands suggest their function 2. a. It is high level language, with high level abstraction from assembly code b. i) Training - is easier ii) Developement - Allows classes, abstraction, high level languages iii)Maintenence - Pointers make it hard, uses camelHump syntax iv) Compiling - Free v) Executing - Fast and efficent vi) Memory - No garbage collection 3. Makes code less readable, lack more complex control statements, program structure is less obvious, more lines of code compared to high level 4. Type Checking a. Language provide type checking either in run time or compile time to reduce silly errors. Exception Handling a. Allows the program to capture the error and try to recover from it or die gracefully Aliasing a. Have 2 or more distinct referencing methods or names for the same memory cell Readability and Writability 5. Disk I/O was very slow, (use less disk I/O as possible) Hardware I/O was very slow RAM was very limited 6. Translate pseudo code into program code Advantages: a. Hardware portability b. Software development before hardware c. Potential of extensive program runtime checking Disadvantages d. Slower execution compared to native code e. Slower compile times 7. Labels make the code more readable Allows user to identify sections of code that the program jumps to