1.6 Related Work and Influences
Like Smalltalk and Java, Dart is class based and supports single inheritance, but it augments this with mixin-based inheritance, very similar to the model first implemented in the Strongtalk dialect of Smalltalk. Because class methods in Dart are not true instance methods as in Smalltalk, but instead Java-style static methods, the models are not exactly the same.
Dart’s constructors have a syntactic similarity to those of Java, but in fact differ in critical ways. All of the above topics are discussed in the next chapter.
Dart’s approach to type checking is also very close to the one developed for Strongtalk. Types are explored exhaustively in Chapter 5.
Dart’s view of concurrency is close to the original actor model (albeit, imperative), again very different from any of the languages cited above. The success of Erlang has been a factor in the adoption of an actor model, yet unlike Erlang, Dart has a non-blocking concurrency model. Dart also has built-in support for asynchrony heavily influenced by C#. See Chapter 8 for details.