Dart is a practical solution to a concrete problem. As such, Dart’s design entails compromises. Dart has to run efficiently on top of web browsers as they exist today.
Dart also has to be immediately recognizable to working programmers. This has dictated the choice of a syntax in the style of the C family of programming languages. It has also dictated semantic choices that are not greatly at variance with the expectations of mainstream programmers. The goal has not been radical innovation, but rather gradual, conservative progress.
As we discuss features whose semantics have been influenced by the above constraints, we shall draw attention to the design trade-offs made. Examples include the treatment of strings, numbers, the return statement and many more.