Dart Bashing
I’m amazed at how the JS communities are already bashing Dart; even before it gets out. I can see lots of good reasons to make a new language; new languages appear almost every day, a few of them make it to real use, but most disappear. No reason to barf at them for that, if you don’t like it; just ignore it.
Now, I don’t know what Dart will be like; but as I posted earlier, the only way I can see this being successful is not trying to be a better JavaScript. It seems pretty obvious that JavaScript cannot be pushed away easily, so why even try? So, I don’t think that’s what they’ll try.
There are lots of other languages that are also not trying to be JavaScript: Java, C#, F#, Clojure, C, C++, Python, Objective-C, Ruby, Erlang, Haskell. The list goes on. Most of these target other audiences that JavaScript; they solve other problems; they are good at other things.
One of the things that are important these years to be “good at” is to build client apps; i.e. programs that run in/with the client environment (mobile apps, desktop apps, interactive web applications, …). Java never really succeeded as a client platform (Android app framework is terrible, Java on the desktop never happened); C# only so because of Microsoft’s muscle. JavaScript and Objective-C on the other hand are some of the languages that have frameworks and/or client containers that are really good for this kind of work. And I think that Google will try to — at least initially — position Dart as a language in this space of building client/GUI apps. So in that sense, it is likely to be a “competitor” for JavaScript; but that’s no reason for bashing it, is it?
There are many areas where we’ve become a lot smarter since the last batch of main stream programming languages came into existence in the mid-90′s. Java, C# and JavaScript can’t easily be changed/improved in fundamental ways because they also need to be backwards compatible to some degree. Its now more or less “common knowledge” that we’re challenged with concurrency (and utilizing multicore), and that some aspects of functional programming is needed to make this better. We now know that distributed objects is not such a good idea; it’s better to send data explicitly around and reinterpret it when it arrives. We’ve come to realize that we need a better module system than provided in those languages. It has become apparent that it is a big advantage if it is easy to create internal DSL’s, one of Ruby’s big advantages. We’ve learned a lot of things, and if the Dart team is able to wrap up those leanings of the last 15 years and repackage it as a new main stream language, there’s a good chance for success I’d say.
One example: When I was at NeXT we often talked about how difficult it is to build apps that run things concurrently — i.e. with threads. Mind you these were smart colleagues I had, and we had no idea how to do this in a proper structured way. Everything we could come up with felt like a hack; still today in Objective-C you have to be very careful to get things processed on the main event loop. In JavaScript this problem is “solved” by programming such things entirely event driven in one thread; making you program “backwards” in may ways. In Java/Swing runOnMainThread is a horrible explicit way to have to schedule things to make them “thread safe”.
But there are other options: Erlang gets this right. With message-passing concurrency and selective receive you can do concurrent and event driven programming with a lot less headaches. As it happens, Erlang just isn’t a language that comes pre-installed on all desktops (even though it is now in standard Ubuntu distribution), and Erlang also does not have a good GUI library. Erlang was not created for doing GUI programming. But the idea would fit perfectly well to do concurrent + event driven programming in GUI programs. I’ve said this numerous times, and will do again, GUI is the next killer-app for actor programming.
So that’s just one area where there is IMHO, immense opportunity for improvement. One can only hope that message passing concurrency does, in some way, make it into Dart. I am an Erlang-head after all. But even without, there is a lot of other areas in which the programming language community has learned from our troubles with the old main stream languages, and so there is amble room for improvement.
I welcome the attempt. No bashing from here.
11 Responses to Dart Bashing
Follow us
Follow @DartInside
Recent Tweets- Universal Rotating Car Mount Auto Windshield Holder Dock Window Suction Cradle Stand for T-Mobile Samsung Galaxy S T959 (Vibrant) / Google Nexus S / Gravity Smart / Samsung Dart (Comes with Suction Phone Holder) Online Shopping solarpanelsheater.com
- Oscar Tong - Google+ - [翻譯] Dart異步編程 [原文] A Tour of the Dart Libraries -… plus.google.com
- Don Ramesh - Google+ - Batman meets Dart Vader. plus.google.com
- DroidsCrack, DroidsCrack: Throw The Knife Free 1.0.5 droidscrack.blogspot.com
- Universal Rotating Car Mount Auto Windshield Holder Dock Window Suction Cradle Stand for T-Mobile Samsung Galaxy S T959 (Vibrant) / Google Nexus S / Gravity Smart / Samsung Dart (Comes with Suction Phone Holder) Best Offer Promotion solarpanelsheater.com





I too am looking forward to hearing more about DART. And I also bemoan the awful hacks currently required to do threaded programming. Just wondering why you say the Android framework is “terrible”. I’m no fan boy, but it works for me.
I’m looking forward to Dart – I’ve always admired Smalltalk and Newspeak. Being part of the JavaScript community, for me, it feels like it’s the other way around: I’m seeing a lot of JavaScript-bashing from Dart fans. It seems like Google is withdrawing all of its JavaScript love exactly when JavaScript is finally getting traction (in terms of adoption and in terms of progress on ECMAScript 6 – which is shaping up to be fantastic).
So, I greatly welcome Dart. The only thing that spooks me is that while other browser vendors are pushing JavaScript hard (especially Microsoft), Google considers it “not viable in the long term” and wants it replaced. That should explain the reactions of the JavaScript community. I suspect that Monday’s presentation will strike a different tone – you don’t have to hate JavaScript in order to like Dart.
Here’s some JavaScript love from Google:
http://infrequently.org/2011/09/google-the-future-of-javascript/
Kneejerk reaction by idiots that rip anything Google does since they will probably retain control of the language’s development. They fail to see the alternative which is every webapp having to go through gatekeepers like Apple and Amazon.
Clearly a language thrown together in a week in 1995 to allow falling snow and scrolling marquees in the status bar is going to have significant flaws when every revision must be backwards compatible.
js-fan, and really exited about dart, I do hope that it will be a better javascript, and not yet another clunky static language
For me, and I believe many others, it’s more of a emotional let-down, not a logical defense, that we feel. We all dreamed of a language that would be fun to work with and that would make us more productive, with easy tools to use and with a breadth that would take us beyond what we imagine possible in web programming.
Dart is not so revolutionary.
While some of my expectations may be too far to go, even for Google, my JavaScript-programming self didn’t want another java, or another java-javascript hybrid or java-[enter function/dynamic language here] hybrid.
I wanted something pretty, more along the lines of CoffeeScript or Python but with awesome tooling and easy-to-use libraries for building rich web apps. GWT had pretty great tooling (Eclipse plugin) and a large library for creating rich web apps, and even the same language on both client and server side. But (with a capital B) it was Java. Love it or hate it, a lot of web devs steer clear of the language for some logical and some illogical reasons.
JavaScript developers have a reason to be upset with Dart–it’s not really JavaScript. On the other hand, we have reasons to be happy, like static typing not being a requirement.
But really? The Dart people took the lollipop we were sucking on, drug it around in the dirt, then attempted to wipe off the dirt, repackage it, and sell it to us like it were new.
For most JavaScript developers, Dart likely won’t make an emotional connection. But fandom aside, Google is looking to commoditize developer productivity for enterprise web apps just like Java did once and like GWT was trying to do too. It’s not emotional, and it’s not short-term.
Dart is a long-term strategy. And it is not cool.
People are bashing (if you can call that bashing) Dart because:
a) It was pre-announced to add up hype
b) There was a leaked memo saying that Dart/Dash is “the clean break” from JavaScript and that the goal of the language is to “to replace JavaScript as the lingua franca of web development”
c) In the end, Dart came out as a nice Java-like language. But being a nice language is not enough for the ultimate JavaScript replacement. We—JavaScript community—would much rather see JavaScript evolve into a better language.
I am sure that the reaction would be much different if Dart came out without pre-announcements and leaked memos. I am not saying that Dart crew wanted the memo to be leaked or the hype to be built up—but, well, that happened.
Anton
P.S. Leaked memo: http://pastebin.com/NUMTTrKj
Nice summary. From what you’re writing I’m guessing you should take a look Opa (http://opalang.org). Opa is a unified platform for web development (it compiles to Javascript on the client and to native code on the server). It shares a lot of goals with Darts, but is open and is around for a while.
Opa is functional and its concurrency framework make you feel as if you everything was one-threaded while behind the scenes it can utilize many cores and even machines (many parallels with Node.js here).
Also Opa has a message-passing concurrency primitives (shared sessions) akin to those of Erlang.
Because we expected a new and clean language ala Ruby, Python, Smalltalk, CoffeeScript, Self or even Newspeak and not some “Java Script” (pun intended), which is boring and uninspiring.
Cool would have been a fully message-based language with optional typing.
Proud Dart basher without even considering its technical value.
The reason is vehemently singular: I don not trust Google handling Chrome. Why is it so hard to figure this out!? I will fight tooth and nail against any effort from any body to place a toll at the gateway of the web – and the browser is just that. Therefore I do not want to hear about dart. The expressed mindset of the Google executives is that privacy is a thing of the past. Hear me Schmidt? So Dart VM, hear me out: You won’t replace JavaScript in my browser (firefox) anytime soon.
HTML, albeit slowly, arrived to a more manageable state with its fifth incarnation. We need to push JavaScript to where we needed. CoffeeScript is a good example.
Dart is a futile experiment in the dustbin of corporate ‘take-over-the-world’ delusion.
Dart has not just bashing from JS community, but from everybody.
The reality is that Dart goal is to be a better JS. That logical since JS as of today is terrible. Most of the guys in the JS community would never learned and liked it if javascript wasn’t the de facto standard for web client processing.
More than that, most developpers denyied JS for years and thus real dynamic applications tooks year to flourish. In fact outside of MS, Yahoo or Google, only few company are able to develop real higly interactive web application with a quality and complexity comparable to desktop ones.
So yes we need a better JS… In a sence
But at the same time, many JS fan like JS because you can be started in no time, because its simple yet powerfull.
Google and other big companies need a Java like language for all the benefits statically typed language have for large code database. All the tooling, IDE support, the refactoring…
But if you just want to hack a few line of code to add a cool effect on your website, this will just slow you down. And many here use JS just for that. They have a website for their client mostly HTML/CSS, and a few lines of JS to make it more dynamic, more trendy. They can hack it by changing 1 line in a HTML page, click reload, and it’s done.
I also think that with the Oracle case against google, and with the very slow and unsatisfaying java evolution google realize that they don’t really want to invest on GWT anymore.
So they just think why not just make our language? If it become the standard, it will be a huge asset for us, and by controlling it we would be able to use it where we want (not like JAVA and phones…) and make it evolve the way we want.
So they wanted a language, and to have only one to rule the world, because if they allowed alternative the language would not be a such greate asset.
But by trying to please everybody with one language, they’ll please nobody. Being staticaly typed and dynamically typed at the same time is strange. Embracing interfaces and mono inheritence is not really what many dynamic typing fan would want.
What we need in fact is something like the JVM or CLR. A VM, a platform with many strong and interresting choice. Something modern that could address the problems related to web developpment.
But this would be only a VM. Thoses interrested on a lightweight language could have it. Those wanting something strict like java would have it. Thoses wanting ruby, python, scala or whatever could have it.