Design principles of languages
Expressiveness: matches human ideas of grammar / syntax / meaning
Redundant: more information than needed (why?)
- Types can be thrown away during runtime
Abstract: Exact computation on CPU not fully determined by code.
- e.g. memory management
- concurrency management
- allocating multiple threads, do not specify when they go out of scope.
- virtual threads
- sharing processors