Love is like quicksilver in the hand. Leave the fingers open and it stays. Clutch it, and it darts away.
Dorothy Parker

sundaeMore than a year ago, I wondered what language I should learn next.  At the time I concluded PHP.  Not that it was the best language, just the most attainable.  Well, I have been busy with so many things, I never did anything with PHP.

Instead, I decided JavaScript was more universal.  When I found nodejs, I realized, learning just one language could work on both the client and the server.  The tools to create looked pretty good, but JavaScript is a loose language that allows a developer to do dumb things and shoot himself in the foot.  But JavaScript is also powerful with first class functions and closures.

The problem returns back to on going debate between static and dynamic languages.  Static languages allow the compiler to help avoid typo mistakes and greatly facilitate refactoring for cleaner, more reusable code.  Dynamic languages allow for quick prototyping and getting something out the door fast.  But dynamic languages suffer when scaling to large projects and separation of duties.

Finally, there is a good answer.  The new Dart language by Google bridges these concerns.  You can optionally add static typing and use it as little or as much as you want.  The output code is JavaScript.  Since Dart is abstracting the code, as pieces are added to the WC3, some of the Dart output can implement new HTML5 features instead of creating JavaScript.  Dart also comes with a virtual machine(VM) that runs Dart code natively on the server much like nodejs.  The Dart VM is also coming to the Chrome browser so Dart does not need to convert to JavaScript.

With Dart, I can create Dart VM scripts, Dart Web Servers and Dart Web Clients with one attractive (similar to C# or Java) language.  Finally, I can program in one language and cover every need on every platform.  It is still early in the Dart world, but by summer of 2013, some great things will be happening.  Go check it out at http://www.dartlang.org/

Tags: ,

Leave a Reply


*