Fusion of data and code
Templates versus macros
Transition from prototypes to classes
Explicit representation of visual state
Declarative programming