Stepwise refinement
Objects, classes, inheritance, polymorphism
Functions as first-class entities, higher order functions, closures
Declarative programming, “what” over “how”
Parses program and executes it. SL1
Parses program and produces machine code or byte codes. SL4
Interprets bytecode, just-in-time compilation
terminals, nonterminals, productions, start symbol
expr ::= term (("+" | "-") expr)*
term ::= factor (("*" | "/" ) term)*
factor: number | "(" expr ")"
number)Primitive, reference types (classes, interfaces, arrays)
while