1. Syntactic Consistency - Things that look similar similar should be similar - Things that look different should be different 2. No its control structures are mainly based on the GOTO statement The GOTO statement has 3 different versions that mean different things 3. B**2 (B squared) Orthogonality problem (* is multiply, ** is power, * can be pointer , ** 2d array) 4. array[1] *(array+1) 1[array] *++array Second element can be accessed via 4 methods 5. Structured Program Principle (jumps all over the place) Defence in depth principle (cannot do syntactic and type checking) 6. while loop (constructed with GOTO statements) GOTO (L1,..., LN) E GOTO L, (L1, L2, ..., LN) 7. Somewhat. Due to pass by reference, it allows the user to modify the actual value of the variable thus violating the information hiding principle. Fortran uses the common block principle to overcome it. 8. Problem with equivalence and aliasing 9. A computed GOTO either jumps to one of several labels based on the value of an expression, or jumps to a label that has been stored in a variable. GOTO (L1,..., LN) E GOTO L, (L1, L2, ..., LN) 10. The ability of the use of algebraic expression 11. Integer in strings 12. Common Block (can overwrite other people's memory data) <-- Equivalence Pass by reference (overwrite other people's data in variables) Embedded Spaces(accidental access to non existant/other people's data) Automatic variable declaration(programmer's syntactic error, cause weird problems with calculation)