The first dart SDK is released today. Since the initial announcement, most web developers have been strongly against dart. The typical argument is that javascript meets our needs and even if it does not there are a bunch of other languages translated to javascript. Why do we need a new one? Because google can take control over it?
While these arguments are true, I see dart in the angle of a command-line tool developer. For javascript or a language translated to javascript, such as coffeescript, it cannot provide basic file I/O and system utilities, which makes it not suitable for developing command-line tools at all. A few years ago when I investigated nodejs, it did not provide proper file I/O, either (it seems much better now, but I have not tried). Another problem with Javascript is that it was not designed for JIT at the beginning. Naively, a language designed with JIT in mind is likely to perform better.
From a quick look, Dart apparently overcomes the major weakness of javascript mentioned above. It has clean C++-like syntax with modern language features, inherites the flexibility of javascript, supports at least basic I/O and system utilities (perhaps a replacement of nodejs?), and is designed for JIT from the beginning. I have not evaluated its performance, but I would expect it will compete or outperform V8 in the long run, though the release note seems to suggest that right now V8 is faster. I will evaluate its performance when I have time.
I have to admit that I am a little anti-google in general (not much), but I applaud google’s decision on developing the dart programming language amidst massively axing other projects. From a quick tour, it seems to be the closest to the ideal programming language in my mind (EDIT: I should add that this is the ideal scripting language; no matter how much I like dart, I will always use C for performance-critical tasks).
I am looking forward on hearing your progress with Dart.
I strongly suggest you revisit go. I think you
ruled it out too early. Here is how go stands
against your ideal programming language list (points
where go does not meet your requirements in ‘*’).
– C like syntax. Much less verbose.
– Despite being compiled, it can be used in a scripted way
by using the go tool (go run ..). The compilation times are
extremely low.
– Garbage collected
* main() required. Not a big problem. Yes,
you won’t be able to run oneliners.
* There is no dynamic typing. This gets alleviated with short variable
declaration and interfaces.
– Speed. Go is very fast. The profiling tools are very effective.
– Strings are immutable, but you can easily perform your computations
in a slice(array) of bytes. That’s mutable. Then convert to string.
You actually want to keep that in mind when coding in go since that
will boost the application performance.
Now, some other features that come with go for free that I find extremely
powerful:
– Simple design. All the language features are easy to understand.
-Go’s concurrency features (channels and goroutines) allows you to express
beautifully certain problems. Go multiplexes your goroutines in threads at low level so a well expressed program might run efficiently on multicore machines.
– Amazing standard library. Well designed and covering everything you need so thirty party libraries are rarely required.
– The compilation process is efficient yielding low compilation times.
– Native map type.
– Very clean package system. Using thirty party libraries or tools is extremely easy.
– Integrated and easy unit testing support.
– Uniform coding formatting among developers via the “gofmt” tool.
-drd
Can you elaborate a little bit more on your reasons for ruling out go?