I still think the "counterfeit typing" system is downright dangerous, and the rest the language is "meh" at best. I'd be willing to bet most of the design decisions were as a result of the wanting compile-to-javascript, and without that there's no way Dart would have kept its typing system.
Still, credit for at least trying to move away from javascript!
Why would I want to go from a more flexible prototype oriented model to a classical one. I don't get it, is it because it's more familiar to the untrained.
Prototype model is extremely powerful and allows for some really awesome designs, but it makes statically analyzing that code near impossible. That means doing a refractor of a method name is not really possible in Javascript as you do not know everyone who actually uses that method (it could be guessed, but not guaranteed).
Having a more strict object model makes it easier for larger teams of people to work on the same code and have a smaller chance of screwing up the implementation when changing code.
I think it is natural that Javascript gurus feel they are losing something (prototypes and related programming patterns) in Dart. Java folks feel that the weaker type system is a loss. Dart is a pragmatic language. It is purpose built for web programming in the large. I think you really have to use Dart to understand the balance of flexible, rapid development (influences from dynamic languages) and team productivity (influences from Java and the like and the improved tooling).
I still think the "counterfeit typing" system is downright dangerous, and the rest the language is "meh" at best. I'd be willing to bet most of the design decisions were as a result of the wanting compile-to-javascript, and without that there's no way Dart would have kept its typing system.
ReplyDeleteStill, credit for at least trying to move away from javascript!
Why would I want to go from a more flexible prototype oriented model to a classical one. I don't get it, is it because it's more familiar to the untrained.
ReplyDeletePrototype model is extremely powerful and allows for some really awesome designs, but it makes statically analyzing that code near impossible. That means doing a refractor of a method name is not really possible in Javascript as you do not know everyone who actually uses that method (it could be guessed, but not guaranteed).
DeleteHaving a more strict object model makes it easier for larger teams of people to work on the same code and have a smaller chance of screwing up the implementation when changing code.
Tim, Steve: there's a very simple solution! Don't write code in Dart unless you like Dart! js isn't going away anytime soon or perhaps ever.
ReplyDelete(I'm willing to be convinced, but I haven't done anything substantial with Dart yet...)
I think it is natural that Javascript gurus feel they are losing something (prototypes and related programming patterns) in Dart. Java folks feel that the weaker type system is a loss. Dart is a pragmatic language. It is purpose built for web programming in the large. I think you really have to use Dart to understand the balance of flexible, rapid development (influences from dynamic languages) and team productivity (influences from Java and the like and the improved tooling).
ReplyDelete