Chapter 6 implicit context -- which + to use C value model: r-value vs l-value immutable -- cannot be changed primitive vs object: boxing in Java orthogonal -- features can be combined... are independet Java -- definite assignment -- no variable is undefined precedence and associativity short-circuit (Pascal) C -- & vs && and | vs || -- for logical values structured programming -- vs goto recursion -- was not allowed in FORTRAN, had to be requested in PL/I Chapter 7 -- type equivalence, compatibility, inference system programming and type breaking -- Looking at the bits of a floating point number! https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html Math.getExponent() Double.doubleToLongBits orthogonality oddities character sets? C char is 1 byte Java char is 16 unsigned bits UTF-8 is representation of Unicode with its 1112064 codes can require up to 4 bytes (32 bits) though codes can require up to (21 bits) COBOL (and PL/I) ....... PIC 9(6).9(2) ranges saw 0..100 types equivalence type punning... https://en.wikipedia.org/wiki/Fast_inverse_square_root (Quake III) types are MORE important now but what about JavaScript??? https://javascript.info/types JavaScript is what happens when amatuers define programming languages https://en.wikipedia.org/wiki/ECMAScript http://www.ecma-international.org/ecma-262/9.0/index.html