Good designs are:
- discovered, not invented.
- opposite of random
Strong typed languages help produce good designs. (I couldn't agree more, after spending almost 2 years now in Ruby space.)
Patterns (abstractions) & Constraints (types)
Type systems should be 1) precise, 2) sound, 3) simple
Odersky addresses issue of Scala's type system complexity, admitting that the complexity comes out of the large combinations of typing features that arise from the set of possible combinations of its modular (OO) and functional typing features.
DOT (Dependent Object Type calculus) & Dotty (experimental language): Simplify typing complexity by focusing on just supporting the module typing features internally, i.e., in the compiler.
It's comforting to know that the parts of Scala I've found most confusing (e.g. when do I define a class using 'class MyClass[T]' or 'class MyClass { type T }') are at the core of what Odersky is trying to simplify.
No comments:
Post a Comment