-
simplicity / ease of understanding
-
minimal: avoid clutter in the core
the less carved into stone, the better. methods >> functions >> syntax
-
correctness: everything should work
-
uniformity/generality:
minimum of magic or crockery (special cases) Principle of Least Astonishment
-
extensible
-
expressive power primatives chosen for usefulness in creating language features
-
"high albedo" (reflectivity)
minimum of hidden machinery (entirety of class system is visible from programs; VM code & scopes currently less so)
-
performance: avoid premature optimization
-
modularity
-
ease of use / useful diagnostics this is not a language for beginners
-
safety this is not a language for beginners