23 ms·
Dart language
- vegai 15y agoCreating an object: Greeter greeter = new Greeter() or var greeter = new Greeter() Defining a constant: static final myConst = 1 Plus there are classes, interfaces... It's just Java?
- haasted 15y agoLooks a lot more like James Gosling, actually ....
- vegai 15y agoI had a comment above saying something to the effect of "not everyone can be Ken Thompsons" and then edited it out, sorry.
- munificent 15y ago> var greeter = new Greeter() Well, it's hard to get that much better than that. > Plus there are classes, interfaces... It's just Java? Java didn't invent classes. It certainly looks a lot like Java, but it's more Smalltalk under the hood.
- masklinn 15y ago> Well, it's hard to get that much better than that. var greeter = Greeter() there, no need for `new`. Alternatively, var greeter = Greeter.new() or var greeter = greeter new if it's not acceptable to have arbitrary callable objects. > it's more Smalltalk under the hood. The speed and wide-spread use of Smalltalk with the regularity, flexibility and terseness of Java's syntax? That sounds like a recipe for success.
- munificent 15y ago> there, no need for `new`. Agreed. I didn't say you couldn't get better at all, just not much better. I'd personally be in favor of ditching new (or conversely making it a method on the class). > The speed and wide-spread use of Smalltalk with the regularity, flexibility and terseness of Java's syntax? Oh, you. You may be right. Making a new language is crazy, especially if you're aiming for widespread adoption. Still, you have to try, right? Dart is definitely more terse and more flexible than Java. Maybe not perfect, but it's heading in the right direction. Dart is no DSL-friendly beauty like Ruby, but I think: var odds = [1, 2, 3, 4, 5].filter((i) => i % 2 == 1); is pretty tolerable without being novel enough to scare people that have never programmed outside of a curly brace language.
- masklinn 15y ago> Agreed. I didn't say you couldn't get better at all, just not much better. I strongly disagree, it makes away with a keyword and magical syntax, that is much better. > Making a new language is crazy, especially if you're aiming for widespread adoption. That's not what I'm saying, I like new languages, and I like interesting new languages, but it pains me to see you defend (or even work on?) Dart, which so far looks even worse on the programming-language-progress continuum than Go does. It barely makes any progress on the very language it's supposed to replace.
- cromwellian 15y agoWell to be fair, the language it is replacing for the most part works, it's mostly just patching up problems: ability to optimize for startup performance, ability to program in the large, and ability to write tools easily (IDEs, etc) Most new programming languages are really just variations on those that came before them. You've got you're LISP derived, your Forth/Stack derived, your APL derived, your ML derived, etc. IMHO, it's hard to consider a programming language in isolation. As far as 'feel' or 'productivity', it really comes down to the ecosystem, the runtime and tools available. Here I think is where Dart hopes to excel -- make a JS-like replacement that supports a better runtime and tools story.
- 15y ago
- icebraining 15y agogreeter := Greeter()
- vegai 15y ago> Well, it's hard to get that much better than that. Ok, fine, but why have both forms?
- munificent 15y agoSometimes you care about the types, sometimes you don't.
- pajju 15y agoIt is. Google is betting heavy on android. Expect more Java style languages.
- frisco 15y agoThe "hello world" example is incredibly uninformative. What does that have to do with "structured web programming"? Where is this printed out on a web page? Does the console output there correspond to the html output? Or some other console?
- haasted 15y agoIt's actually runnable if you click the "play"-icon in the top-left of the code sample. The "Hello, Dart!" is written to a console emerging from underneath the code sample. https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/client/samples/hi/hi.dart https://code.google.com/p/dart/source/browse/branches/bleedi... is a more DOM-oriented version of the same program.
- frisco 15y agoI realize it's runnable -- that's what I mean by it's not clear what the console that appears underneath refers to. Is that "echoed" out to the page? Or something different?
- jmesserly 15y agoYeah, there are more links to code samples here: http://www.dartlang.org/samples/index.html http://www.dartlang.org/samples/index.html
- gambo 15y agoHmm strange, I can't see the "play"-icon using FFX 3.6.23
- dchest 15y agoDart currently compiles to JS that runs on Firefox 4+. http://www.dartlang.org/docs/technical-overview/index.html#howtouse http://www.dartlang.org/docs/technical-overview/index.html#h...
- funkah 15y agoYeah, exactly. This "hello world" uses a "print" function. What would such a print function do in a normal web app? Write to the console or something?
- russellallen 15y agoHmm. A little underwhelmed so far.
- rjd 15y agoYeppp... its like getting a birthday present. You get a moment of excitement and intrigue. You unwrap it, and .. socks. You know I'll probably use those socks someday, but its not what I was really hoping for.
- spaam 15y agobest comment ;D
- mda 15y agoI guess that was the intention, they bet on familiarity as well. Most changes are subtle, not necessarily a bad thing.
- simondlr 15y agoCan anyone explain why I should use this instead of other web programming languages?
- wavephorm 15y agoYou shouldn't. This has no practical use right now. Google's basically just showing us what they think JavaScript should look like.
- drothlis 15y agoFrom their "technical overview" page http://www.dartlang.org/docs/technical-overview/ http://www.dartlang.org/docs/technical-overview/ : "Dart will include a rich set of execution environments, libraries, and development tools built to support the language. These tools will enable productive and dynamic development, including edit-and-continue debugging and beyond—up to a style where you program an application outline, run it, and fill in the blanks as you run." Sounds like a Smalltalk-style debugger running in the browser. Though it seems these tools aren't actually ready yet: "This is a technology preview, not a product launch" -- http://dartinside.com/2011/live-from-dart-launch/#liveblog-entry-102 http://dartinside.com/2011/live-from-dart-launch/#liveblog-e...
- dongsheng 15y agoLooks like an extended javascript with strong typing and more OO support, is it designed to replace javascript?
- thepumpkin1979 15y agoNew MIME type "application/dart"... I suspect that Google Chrome will embed a Dart Runtime when it gets stable, that will be very interesting; I'm not sure if it's a good or a bad thing though.
- magicalist 15y agoOTOH it's not that uncommon these days, especially when these transpiled-to-js languages want to run without being translated ahead of time (though usually in production you would want to do that offline)...text/coffeescript, text/traceur, text/es-harmony, etc etc
- magicalist 15y agoon the other other hand, the live tweeting is saying "not yet in chrome" is listed on the "still not done" list, so maybe you're right :)
- thepumpkin1979 15y agoYeah, but I don't think any of these mime-types represent any threat for today's Javascript. OTOH Dart(or Dash)'s sponsor already gave us some clues of that their intentions are. I quote https://gist.github.com/1208618 https://gist.github.com/1208618 "Push for Dash to become an open standard and be adopted by other browsers. Developers using Dash tooling will be able to use a cross-compiler to target Javascript for browsers that do not support Dash natively." again, it says "target Javascript for browsers that do not support Dash natively [for now]."
- thepumpkin1979 15y agoWell... http://blog.chromium.org/2011/10/dart-language-for-structured.html http://blog.chromium.org/2011/10/dart-language-for-structure... "The Dart VM is not currently integrated in Chrome but we plan to explore this option."
- sktrdie 15y agoI don't get it. What's the runtime for this? The interpreter seems to be running on App Engine, so it's probably JVM based, right?
- jmesserly 15y agoSee http://blog.chromium.org/ http://blog.chromium.org/ There's a compiler that translates to JavaScript, and a standalone VM.
- georgemcbay 15y agoThough I saw no direct mention of this in any of the writeups thus far (they are just announcing it now at GOTO), it appears you can download code for the the VM, compiler, etc from here: https://code.google.com/p/dart/ https://code.google.com/p/dart/ (Look in the bleeding_edge branch) Currently doing a repo pull here so I haven't had much time to look around at it yet. I'm cautiously optimistic though, it looks quite a bit like I was hoping Dart would look (a bit of the ECMA4/ActionScript feel on top of JavaScript).
- shykes 15y agoI am most excited about the concurrency model! "Concurrency is supported via actor-like entities called isolates. An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing (10.14.4). No state is ever shared between isolates. Isolates are created by spawning (10.11)" http://www.dartlang.org/docs/spec/dartLangSpec.pdf http://www.dartlang.org/docs/spec/dartLangSpec.pdf I wonder how they compile this down to Javascript?
- psawaya 15y agoThat doesn't sound so different from WebWorkers, which you can already use from javascript in newer browsers. https://developer.mozilla.org/en/Using_web_workers https://developer.mozilla.org/en/Using_web_workers
- shykes 15y agoThe model seems slightly different - don't WebWorkers share state?
- dasmoth 15y agoNo, just message passing (notionally via JSON).
- thepumpkin1979 15y agoAgree, it would be more interesting to know if it has some kind of built-in parallel support.
- moomin 15y agoWell, you can implement pretty much everything you just described as a library. The only thing missing is preventing memory sharing, but that you can sort out at compile time. An interesting question is if this means V8 is gaining threads.
- Achshar 15y ago
- radagaisus 15y agoI don't understand this. The only thing different here is the async handling. Why would anyone want to switch?
- Someone 15y agoSwitch from where? If this were as commonly supported (and as performant) as JavaScript, and if, as I expect, this allows DOM manipulation, I would prefer it over it, if only for the strong typing. Also, I haven't read the spec yet, but I would expect the 'VM' to run Dalvik code. If so, this will make it easier to port your web app to Android.
- minikomi 15y agoFrom the menu example: document.query("#menu").nodes.add(sliderMenu.node); So, yes, DOM manipulation is there albeit kind of ugly.
- munificent 15y agoNot perfect, but I prefer that over: document.querySelector('#menu').appendChild(sliderMenu.node); If you have suggestions for improvement, please do pass them along.
- Robin_Message 15y agoBake in a jQuery-like thing, or make it easy to build jQuery-like things, since I would much rather write something like the following in any language: $('#menu').append(sliderMenu);
- munificent 15y agoWe had a separate jQuery-like lib that we wrote in Dart for a while before we figured, "why not just make the main DOM API better"? So this stuff: document.query('#menu').nodes.add(sliderMenu.node); Is a reflection of that. The ".node" part after sliderMenu will go away at some point. Our DOM lib doesn't currently work like jQuery's "collection-that-acts-like-an-object" style because we're worried about performance. Keep in mind that you can always ditch jQuery and go straight to the DOM if jQuery is too slow. If jQuery was the only way, you'd lose your fast path. So we've tried to come up with a DOM API that's easier to use, but still performant. If you've got ideas for how we can improve it, we'd definitely like to hear them.
- timclark 15y agoAaaarghhh! It is full of semicolons. Is it really necessary in the 21st century to create a language that terminates lines with semicolons? I am sure I have seen some other languages in the past that get by just fine without them.
- ch0wn 15y agoThis was my first thought, as well. Looks like I will still go with another layer on top like CoffeeScript to actually write my scripts. Curly braces for blocks are something I don't see the need for anymore, either.
- munificent 15y agoThe language isn't done yet. Now is the time to let us know if you want semicolons to go away. I know some of us on the team do too, but public interest will help a lot.
- clownz0r 15y agoI prefer languages without semicolons, but, for me, semicolons aren't a dealbreaker.
- maaku 15y agothey should not be mandatory
- masklinn 15y agoIf they're not mandatory, they should be out altogether unless required. Making them just optional is a path straight to js-land weird edge cases.
- munificent 15y agoThat's not true. Go, Python, Ruby and Scala all have optional semicolons without insanity. It's just that JavaScript's specific semantics for semicolon insertion (instead of newline elision!) are batshit crazy.
- ericflo 15y agoTo me this looks a lot like Java but with optional types.
- discreteevent 15y agoWhy didn't they go a bit further and have type inference? They proved already with Go that you can have type inference in a language and still have a fairly light/dynamic feel.
- munificent 15y agoType inference is a tooling feature, not a language feature for Dart. The tools can do some type inference now, and more may be added later. At the very least, I personally really hope we get fully inferred local variables.
- pornel 15y agoThe language could require that inferred types are consistent. a = 1 a = "1"; // error
- equark 15y agoYou really need to make a list of these types of response on your webpage.
- munificent 15y agoGood idea. At some point, we'll probably harvest a bunch of this and put together a FAQ.
- rmjb 15y agoIt's actually very reminiscent of ActionScript-3.
- tcard 15y agoA face-washed JavaScript with classes, interfaces and such stuff. I was expecting something more syntactically close to Go, or at least to Python.
- snprbob86 15y agoMeanwhile, I've been slowly eliminating my usage of `class` from all of my CoffeeScript code. I've found that my code is much more reusable, far less prone to `this` bugs, easier to reason about, etc. I used to be a huuuge OOP guy, but now I rarely find a use for classes...
- tcard 15y agoPrototypes are fine for a language like JavaScript. They keep things simple. I'd prefer that CoffeeScript (and Dart, of course) implemented a decent syntax for prototyping, replacing the JS mess, rather than trying to disguise them as leaky and half-featured classes.
- snprbob86 15y agoThere was a recent article on HN about Self and its prototype patterns. Looked far superior to Javascript's. But even still, prototypes only seem primarily useful if you want member-access as dot-notation or polymorphism by type. When preferring composition over inheritance, most polymorphic-by-type situations either go away or can be trivially replaced with maps. That said, CoffeeScript provides another interesting use for them: Simulating dynamic binding. Basically, the trick is that `this` becomes the dynamic binding context and `@` represents a dynamically bound variable. You use `fn.call @, x, y, etc...` if you want to pass the dynamic binding to callees. Nested bindings can be established with `Object.create`
- jashkenas 15y ago> leaky and half-featured classes. This is a common willful misconception. CoffeeScript classes are isomorphic to JavaScript prototypes -- the do precisely the same thing. In addition, there is a shorthand syntax for prototyping objects, if that's more your style: Dog = -> ... Dog::bark = -> ... Dog::run = -> ... Note that the above will produce the same result as: class Dog bark: -> ... run: -> ...
- pyrhho 15y agoThe thing I was really hoping for from the dart site was an "about" section, or a "why" section, explaining about the language and their goals, instead of just jumping to code examples...
- jmesserly 15y agohttp://www.dartlang.org/docs/technical-overview/index.html http://www.dartlang.org/docs/technical-overview/index.html has some information on the design goals.
- jamesrom 15y agoThat's a fair point, but it's pretty annoying when you read about some cool new language but you can't find any good sample code anywhere. anic and newspeak come to mind.
- ramchip 15y agoFor the record, anic was and still is pure vaporware. Sample code exists but there is no working compiler or interpreter to run it...
- skrebbel 15y agoA language that compiles to JavaScript really needs better browser support. Decent web apps use feature detection to provide graceful degradation for browsers from the stone age. Dart breaks this by making it impossible to run any code at all. I mean, "IE9 support coming soon!", what the hell? What about IE6? This isn't a CSS style or an animation library we're talking about.
- cromwellian 15y agoThis is not a product launch.
- skrebbel 15y agoThe lack of browser support implies architectural choices that will always make old browsers lag behind. It means that the generated JS uses modern JS features. If it would be easy to support older browsers, they would've done so already - at least to some extent. The fact that it compiles only to JS for the very latest versions of a small number of browsers gives me the impression that a lot of language/compilation choices are closely tied to these new JS features. This, in turn, implies that supporting older JS versions is non-trivial. Maybe I'm wrong, that'd be nice.
- cromwellian 15y agoOr maybe they've only been working on this thing for a few months and were slavishly fixing bugs right up to the announcement, and IE6 support wasn't really a priority? Except for Isolates -> WebWorkers, there's not really anything that can't be emulated in IE6. GWT has to handle a significantly more complex set of semantics and still works on IE6. But personally, I prefer if there wasn't IE6 support, or any non-HTML5 browser support for that matter. If you're going to do a new VM, do a clean-break, because legacy support is another factor which makes web development a pain.
- munificent 15y ago> It means that the generated JS uses modern JS features. I believe it compiles to ES 3, which is isn't exactly "modern JS features". IE6 is ten years old. At some point, you've gotta cut the cord!
- IdeaHamster 15y agoIs there a reason they didn't just call this ScalaScript?
- indigoviolet 15y agohttp://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html http://googlecode.blogspot.com/2011/10/dart-language-for-str...
- akavlie 15y agoIf you're going to go to the trouble of creating a JavaScript replacement, making something more like Java is the wrong way to go IMO. CoffeeScript is a lot more palatable.
- deleted 15y ago[deleted]
- jamesrom 15y agoCoffeeScript basically simplifies (and does a pretty good job, imo) existing JavaScript language features. Whereas, Dart adds classes and interfaces and a few other neat things. Admittedly, however, I do cringe whenever I see things like x.compareTo(y) or X x = new X();
- riffraff 15y agoas a sidenote, it does seem they have user defined operators, just not the starship <=> for compareTo
- bgarbiak 15y agoClasses, types, better syntax - it's all available in JavaScript today, in it's various 'forms' (CoffeeScript, Mootools, Closure, etc.). Dart isn't a bad language, it just doesn't bring anything exciting to the table (or I fail to see it). Seems like it's ECMAScript 5 but early-bound and with Java syntax. And it runs only on browsers that already support ES5 - this one is really underwhelming.
- socratic 15y agoIs this effectively GWT 3.0? The project page is very unclear, so I ended up on Wikipedia instead. Wikipedia actually has a leaked memo that seems to do a really good job describing the purpose of the language. Specifically, the language is meant for three environments: server-side, compiled to JavaScript client-side, and fast native client-side once there is browser support. (The main goal is better performance on the client-side, which is deemed to be very difficult with JavaScript.) However, the language looks so Java-like, one wonders why they didn't just use Java and extend GWT with a native Java client in Chrome. Did it just not make sense to bet the farm on Java when Oracle controls it? Also, what does the "structured" in "structured web programming" mean?
- IdeaHamster 15y ago> Also, what does the "structured" in "structured web programming" mean? I would guess it's a reference to the optional static typing. There's a growing movement behind static typing and functional programming that resembles the movements behind dynamic typing and OOP of a decade ago...
- fab13n 15y agoI'd guess it's also a lot about class-based vs. prototype-based. The latter often leads to messy architectures. It might be an intrinsic characteristic of prototype-based design, or because 99% of people learn OOP with a class-based language, I don't know.
- cromwellian 15y agoDart doesn't really share much with GWT. The basic language semantics are dynamic, not static. The types are more or assertions and documentation that generate runtime warnings, but do not produce compile time errors that refuse to let the app run at all. Dart's a lot more like CoffeeScript than Java.
- danmaz74 15y agoOnly, it looks worse than CoffeeScript from a readability point of view... just a first impression.
- cromwellian 15y agoProbably the biggest difference between JS and whatever revision to it you like, and Dart, is that dart is early-bound. That means, you can't change the list of methods or fields present on an object at runtime. It doesn't really make sense to ask "Why should I switch from a language I already love?" If you're already productive and love what you're using, then you should probably keep using it. There are people who want a language that is more modular, scales better than JS for programming in the large, for IDE tooling, or ahead of time compilation, etc. Take a look at the Dart spreadsheet Total for example (https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/client/samples#samples%2Ftotal https://code.google.com/p/dart/source/browse/branches/bleedi...) I find this code a lot cleaner than JS versions I've seen.
- snorkel 15y agoI was liking Dart's syntax but the early static binding is a deal breaker for me. Javascript would've been stuck in neutral if it didn't support mutable objects.
- dasmoth 15y agoVM snapshots for fast startup are potentially nice. But what's the format going to be like? Any realistic chance this will work with multiple browsers? Would need to be something closer to Java serialization than LISP-ish VM imaging.
- vjeux 15y agoIt doesn't look like to support JSON anymore: http://try-dart-lang.appspot.com/s/86QN http://try-dart-lang.appspot.com/s/86QN
- clownz0r 15y agoThis works though: http://try-dart-lang.appspot.com/s/M1wN http://try-dart-lang.appspot.com/s/M1wN It just doesn't have the syntax for maps that javascript has for objects.
- kaitari 15y agoIt appears to work without dot-notation: http://try-dart-lang.appspot.com/s/kJ4N http://try-dart-lang.appspot.com/s/kJ4N
- rshm 15y agoI was expecting dynamically typed Scala, with ready to go IDE from Google and truck full of apis and tools. Or a surprise.
- thristian 15y agoMozilla's Brendan Eich, inventor of JavaScript, on the Dart memo leaked a few weeks ago: A Dart to JS compiler will never be "decent" compared to having the Dart VM in the browser. Yet I guarantee you that Apple and Microsoft (and Opera and Mozilla, but the first two are enough) will never embed the Dart VM. So "Works best in Chrome" and even "Works only in Chrome" are new norms promulgated intentionally by Google. We see more of this fragmentation every day. As a user of Chrome and Firefox (and Safari), I find it painful to experience, never mind the political bad taste From here: https://news.ycombinator.com/item?id=2982949 https://news.ycombinator.com/item?id=2982949
- georgemcbay 15y agoI disagree with his premise. The Dart to JS compiler doesn't have to be "decent" compared to having the Dart VM in the browser to be useful in a world where other browsers don't use the Dart VM, it merely has to be "decent" compared to handcrafted JavaScript performing the same task in another browser. If direct Dart code runs faster than JavaScript on Chrome, that's a nice bonus, but if it runs as well as similar code that was originally written in JavaScript on the other browsers (when the Dart code is compiled to JS) that's good enough. Dart on the other browsers isn't competing with Dart on Chrome, it is competing with JavaScript on the other browsers and that's how it should be measured. And if it turns out apps in Dart on Chrome really blow away apps in JavaScript on other browsers to the point where both devs and users start embracing Chrome even more for these gains then hopefully that will light a fire under everyone else to either adopt Dart or do something to fix what would then be an undeniable problem of JavaScript.
- thristian 15y agoI think you have missed the context of his remarks; perhaps I should have pasted more from the original post. You seem to be talking about "what is necessary for Dart to be a viable Web content language", while (I believe) Brendan is talking about "what are the consequences if Dart becomes a viable Web content language". If the Dart → JS compiler produces "good enough" results, and web authors wind up adopting it en masse, then suddenly a chunk of the web "works best in Google Chrome", and every other browser manufacturer is put into a very, very awkward position. They can do nothing, in which case their continued relevance depends on Google continuing to ship the Dart → JS compiler (and diminishes as users switch to Chrome). They can license the Dart VM from Google, in which case their continued relevance depends on Google continuing to license the VM and we have another large chunk of the Web based on a single binary monoculture (which worked so well for Flash!). Or, they can try to develop their own Dart VM, in which case they'll be eternally chasing the tail-lights of Google's VM, kept behind by Google's head-start and Google's engineering power. None of those options is very pleasant, in the long run, for anybody who doesn't own Google stock. As Brendan's original comment points out, this choice is not unique to Dart. Currently browser makers have picked option 3 ("write our own") to deal with V8, option 2 ("licence Google's implementation") to deal with WebM, and so far option 1 ("ignore it") to deal with SPDY. Under the carefully-managed tension of ECMA, the ECMAScript standard has become a much more practical language to develop in directly, and to target from higher-level languages — and with the agreement of all the major browser vendors including Google. It's not immediately obvious that a project like Dart is even needed; even if it is a major technical advance, it's a political regression.
- zohebv 15y agoFrom whatever little I see, I am already hating it :-) This looks like Java for Javascript, if that makes any kind of sense. We are in the year 2011, PL design has progressed so much since 1990 that such an anachronism is unpardonable. I sincerely wish that companies like Google focus on hiring the right kind of person for designing programming languages. What is frustrating is that there are so many people who can do this job right, yet we are stuck with amateurish programming languages designed by companies like Google. Please try and hire people like Oleg Kiselyov, Simon Marlow, Erik Meijer or some one from the possible hundreds who have worked deep in PL theory for literally decades. On the face of it Gilad Bracha has great credentials, credentials that would make the HR folk happy but one look at some of the stuff he writes and we know things are not going to be good. http://gbracha.blogspot.com/2011/06/types-are-anti-modular.html http://gbracha.blogspot.com/2011/06/types-are-anti-modular.h... I think Phil Wadler gave him more respect than was due in the comments :-) Microsoft hired Anders Hejlsberg for .Net which I don't think was a good idea, he is a great engineer but not a PL theory expert. They however "rectified" the situation by hiring Erik Meijer later and his impact via LINQ and F# and improvements in C# is obvious. Not to say that Hejlsberg is not good, but Meijer is better. Getting back on track, I may be wrong but Dart makes me groan. It is one thing to design such a language in 1990, but quite another thing to do it in 2011.
- masklinn 15y ago> This looks like Java for Javascript, if that makes any kind of sense. It completely does. And I love that it manages to be completely incoherent with Go, the other "Google Language". That's so symptomatic of what google does on that front.
- clownz0r 15y agoWeird that a systems language and a web language are different, huh?
- cromwellian 15y agoOne has pointers and no security model and produces binary processor-dependent artifacts, the other has to support untrusted code, mobile code that runs on any device.
- yannis 15y agoclass Sunflower { static void main() { new Sunflower(); } No thank you! I would rather stay with prototype objects.
- voidr 15y agoA language that has type hints class keyword, and interfaces, I really think Google should have been better off implementing ES.next stuff... This is one of the most pointless projects Google has ever done, it doesn't solve any web developer problems, it's just the 999999th language. They should have just embraced Coffee script.
- jjm 15y ago"This is one of the most pointless projects Google has ever done, it doesn't solve any web developer problems, it's just the 999999th language." I would say this is a bit too early to take on the 'maximist' attitude, no? Like munificent said, someone has gota try. At least he put the flag post down somewhere, and I'm sure he's having fun. Where the maximist point of view doesn't help at the moment is that most of the time It is projects like this one where out of the 1000 features, one or two are genuinely super super awesome new. Eventually in time, after many projects like this, you end up merging all the 'cool' things you've learned you come up with something super awesome. Somewhat like learned progress. Already the project has grouped many minds together, and that has got to be beneficial. In fact I don't remember the last time anyone has offered up so many voices in such short time to any language actively being developed nor even in the infantile stages such as this one. Btw, from a philosophical point of view, today's 'web developer problem' might not be tomorrow's 'web developer problem'.
- nixarn 15y agoI like it. And if they make it work great on the server as well, that's a big plus. A google supported node.js would be great.
- deleted 15y ago[deleted]
- perfunctory 15y agoFunny to read all these comments just a few minutes after the announcement. I bet nobody had enough time to explore the language in any significant way. Yet very strong opinions already.
- clownz0r 15y agoOn the contrary, I was able to go through all of the tutorials, follow 2 separate live-tweetings, and start looking into the source before the keynote was over; I'd imagine many here did the same.
- pajju 15y agoAnd this website is not written in Dart.
- TheMoonMaster 15y agoThis looks it's just Java flavored Javascript. Why would we use this over languages that already work such as CoffeeScript, ClojureScript, or even plain Javascript?
- zeekay 15y agoWho wants to begin work on CoffeeScript-for-Dart? Possibly call it Arrow or Bolt, although I'd find Dash endlessly amusing.
- paulkoer 15y agoThe one thing I don't understand is why people work on new languages for the browser instead of giving us a platform (virtual machine / intermediate representation, whatever) to implement languages against. I mean here in this thread we are already seeing it. Some people like semicolons, some people don't. Some people like a prototype based object system, some people like a class based system. And on and on. I think what would really benefit us is a platform (like a JVM for the browser with a great API replacing the dom) where people could implement languages against. we would get 1) A lot of competition of languages (see what is happening on the JVM right now... Clojure, Scala, Groovy ... you name it), hopefully giving us better languages. Javascript has its strenghts but could you imagine that in such an environment a language that doesn't allow you to test whether or not something is a string would make it very long? 2) People could make their choice and be happy. Then you can program the server and the client in the same language, which is pretty much the main argument for server-side javascript. Let the languages compete instead of giving us one and now another language for the platform!
- tree_of_item 15y agoThis is what JavaScript is trying to be, with the latest revision. They're explicitly trying to make it a better target language for things like ClojureScript and CoffeeScript.
- paulkoer 15y agoWell yes, but I think the motivation here is more 'since javascript is the only game in town, we'll have to compile to that'. I am not aware of any changes made to Javascript to make it easier to compile to it. And I don't think anyone would choose Javascript as their runtime environment if they had a choice. I like Clojure and have dabbled with clojurescript but the workflow feels pretty hacky and it is clear that this is not what javascript was made for.
- fogus 15y agoDo you mind elaborating on the hackish parts of the ClojureScript workflow? It's alpha software at the moment, but we can always use some feedback.
- mckoss 15y agoTwo things I don't like about Dart, just from reading the tutorial: 1. Consuctor syntax requires repeating the name of the class when yor define the constructor. So if you change a class name, you have to carefully find all your constructors and rename them. 2. Instance variables in classes seem to be defined at the same level as class methods. Yet one is an instance attribute, and the other a class attribute. So you have irregular scoping rules based on type (data vs. function). This scares me as it indicates functions are "special" and not first-class types in the language.
- seddona 15y agoYou guys need to check out ActionScript, your re-creating it.
- SurfScore 15y agoI feel like at this point in the development of technology, we should be moving towards less programming languages (and ultimately less programming), not more. I haven't spent hours studying Dart, but what does Google hope to accomplish with this, besides getting their skin in the programming language game (see Microsoft). It doesn't really do much else that other languages can't, at least not that I can see. I mean, YOU CONVERT IT TO JAVASCRIPT just to get it to work! Come on! Programming languages are a lot like web browsers. There are some that are more suited for certain things than others, but having so many creates more problems than it solves (especially because they try to do little, insignificant things differently, just for the sake of being different).
- wulfric 15y agoWow guys. Google is not aiming at a next gen Haskell or ML. They are trying to create a less cluttered Java and a stricter, more performant Javascript. Judge a solution in context of the problem it is trying to solve. If they got Simon Peyton Jones to design this it would be somewhat intimidating for your average webdev[no disrespect]. I'm somewhat disappointed that they insist on a 90's C syntax. It's like Python/Ruby/Coffeescript never existed. C'mon Google, you can do way better...
- daviddaviddavid 15y agoI think this comment gets to the heart of the matter. People want something different. They want a Haskell. How many blog posts about Perlis languages have we seen in the past several months? Reading these comments I've come across the words: boring, uninspired, underwhelmed... I couldn't agree more. JavaScript's prototypal object model can at least keep my attention.
- dextorious 15y agoFrom the very first comment: "We are in the year 2011, PL design has progressed so much since 1990 that such an anachronism is unpardonable." It's meant to be a language for web development. Catering to the HUGE, EXISTING javascript dev crowd and meant to work with javascript (compile to, reuse staff) etc. Can we please remove our blinders for a little while and stop whining that it's not like Haskell or any other flavor du jour?
- Andi 15y agoYAPB Yet another programming bla-nguage
- Andi 15y agoI want node.dart. NOW!
- swah 15y agoThere is something magical about programming languages, and I just felt motivated to continue studying PLP.
- vjeux 15y agoHere's a little valid Ascii art program with Dart main() { var _ = 1; ;;;;;;;;;;;;;;;;; ;; ;; ;; ( (){ }() ) ;; ;; (_ ^_^ _) ;; ;; {; _|_ ;} ;; ;; ;; ;;;;;;;;;;;;;;;;; } http://try-dart-lang.appspot.com/s/y8YO http://try-dart-lang.appspot.com/s/y8YO
- sek 15y agoErlang style actor model and OO? I can just say awesome! The possibilities are endless.
- stephenhandley 15y agoPretty disappointed with the lack of risk with this. Conceptually seemed like something with a ton of potential, but the minute I saw the tutorial shoehorning the worst of Java and JavaScript into something new, it was a non starter for me...better being insulated writing CoffeeScript a layer up and waiting for a compiler. Things I've noticed so far that I don't like: get/set proliferation, semicolons, braces, positional args, var for instance vars, int/num dinostyle pseudo-primitives. It seems like they tried to do some cool things, but failed in execution. Like "Greeter.withPrefix(this.prefix);" one-line constructor definition .. where this.prefix is a "shortcut that assigns the parameter's value to the instance variable prefix". Eliminate needless code.. but instead of using a dedicated symbol to call attention to the sugar, they used "this." WTF.. did they specifically want to kill scanability. Things I've noticed so far that I like: using "_" as a prefix to enforce encapsulation. Enforcing naming conventions as syntax seems at least somewhat python inspired in the sense of bringing the whitespace is significant design to naming is significant.. wish there had been more of that. If someone other than Google were doing this it would be dead in the water already.
- harel 15y agoEither give me a brand new browser VM with a brand new modern language that is supported by all browsers or don't bother. If my code will be translated to Javascript I rather write it in Javascript and control it myself. I'll happily adopt a new browser language if it offers me benefits that I don't get from Javascript, but I really don't get the new trend of compile to Javascript languages.
- jashkenas 15y agoA question to ask yourself: If this had been Microsoft creating an IE10-only language to replace JavaScript, instead of Google, would you feel any differently about Dart?
- snorkel 15y agoThere's probably still a few managers left at Microsoft that can recall VBScript vs. Javascript.
- cwp 15y agoDefinitely. But if they released an open-source version of IE, started shipping IE frequently for Windows, Macintosh and Linux and released the Dart language spec and implementation under an open-source license... well, then I'd like it a lot better.
- rufugee 15y agoI'm really surprised to see all the hate here. It's early yet guys...give them time to hone it a bit. I'm perfectly willing to live with the Java-like syntax and feel, so long as: - I can write in the same language on both the client and server side - Solid libraries exist on the server side for interaction with RDBMSes, web services, etc - Good tooling support Those of you complaining about the syntax...do you honestly think regular javascript is any better? Personally, I loathe javascript's syntax and inconsistencies...if Dart can solve that and give me good server side programming support, I'll sign up. That's the problem with things like Node today...the server side libraries are loosely documented and implemented IMO...it's very much a Wild West environment.
- pornel 15y ago> That's the problem with things like Node today...the server side libraries are loosely documented and implemented Why would different syntax or explicit types change that? I don't think you have to replace JS to get better server-side libraries, and better language doesn't automatically give you better libraries and documentation.
- rufugee 15y agoI don't disagree with you. I'm simply saying that's what I'm looking for. Same language on the server and client...better libraries...better tools. If Google gets there with Dart, great! If javascript gets there, great! I'm not as hung up on language syntax, prettiness, etc (though it'd be nice). I'd rather focus on pragmatism and consistency across tiers.
- frzn 15y agoWill this language gain more traction than Go? What do you think?
- sambeau 15y agoThis is completely the wrong thing to do. Google should be proposing a standard, open, byte-code compatible, Intermediate Language standard that can run Javascript and in the interim run on Javascript. That is something I could see Mozilla and Apple getting behind. Only once they have actively campaigned for this should they be adding new languages to the browser which fracture the web. I had hoped that Dart would surprise us and turn out to be a 'machine-code for the web' implementation. This would have been a much smarter move, I believe.
- ConstantineXVI 15y agoOddly enough, if in-browser Java had "won", we'd already have such a thing.
- sambeau 15y agoTrue. But in return we would have had to endure 10 years of in-browser Java.
- tolmasky 15y agoWe would have just built something else on the JVM. You could be writing Ruby in the browser with JRuby, or Python in the browser with Jython, or Scala. This would be a much better world (tooling and performance-wise) than the current compile to high level JS strategy.
- wavephorm 15y agoAs opposed to 10 years of stagnant JavaScript, and a conversion en-masse of all all video, audio, game content to Flash?? It was really sad to see everybody moving to Flash JavaScript could've done video/audio and games a long time ago.
- leoc 15y agoNot necessarily - in that case, we might still be stuck with the Sun-versus-MS and Sun-versus-the-world games over control of the JVM, and with the JVM's startup-time problem. Though the startup-time problem was so bad that it's hard to imagine in-browser Java winning with the problem still there.
- topbanana 15y agoI was expecting first class language support for asynchrony, to get away from nesting and error handling JS hell
- nene 15y agoMy hopes were high, but the more read about it, the more it started to look like Java: class Foo implements Comparable Observable Deniable ... Why not have interfaces like in Go, where you just define a set of methods and all classes having the methods will automatically implement the interface. Collection<E> HashMap<K,V> HashSet<E> LinkedHashMap<K,V> List<E> Map<K,V> Set<E> Why not just Array and Hash? And what's up with the whole generics thing - that's just plain old Java. int bool String Object Why do some types start with lowercase and some with uppercase letter. Why not use a sensible naming convention? square(n) => n + n; square(5); // returns 25 square2(n) { n + n; } square2(5); // returns null Why not have an implicit return value everywhere? I could go just on and on...
- jurre 15y ago>int bool String Object Why do some types start with lowercase and some with uppercase letter. Why not use a sensible naming convention? Primitives and objects, it kind of makes sense but I do see your point.
- nene 15y agoBut the thing is, they are not primitives: > Although you might expect int and double to be primitive types, they're actually interfaces that extend the num interface. This means that int and double variables are also nums.
- nathanwdavis 15y agoThat's actually kind of like Haskell.
- vegai 15y agoThere's only one set of Rob Pikes and Ken Thompsons on this planet :-/
- masklinn 15y ago
- jashkenas 15y agoIf anyone has a good example of what a medium-size Dart script looks like when compiled into JavaScript -- I for one would love to see it.
- deleted 15y ago[deleted]
- deleted 15y ago[deleted]
- wbhart 15y agoHmm. print('${(1<<31)}'); -2147483648 (correct value is 2147483648) print('${(1<<30)+(1<<30)}'); 2147483648 (correct) print('${(1<<30)+(1<<30)+(1<<30)+(1<<30)}'); 4294967296 (correct) print('${(1<<30)x(1<<30)x4}'); 4611686018427388000 (correct value is 4611686018427387904) (I've used x instead of star here as the latter does not display on HN.) This is completely nonsensical.
- cromwellian 15y agoIt has the same numeric semantics as Javascript. Javascript does not have a 64-bit integer.
- wbhart 15y agoThis is not about the lack of 64 bit integers. Dart can have 32 bit or 31 bit or 30 bit integers or whatever it wants. But mathematically it doesn't make sense to have an int type which does not represent integers consistently. Clearly Javascript can represent 2^31 as a positive integer. In fact it can represent 2^53 as a positive integer (of course in reality it uses a double precision float) as can be verified by typing (1<<20)x(1<<20)x(1<<13) into a Javascript console. So why is (1<<31) not positive? This is surely something which needs to be fixed in Dart. If they want to make (1<<31) negative, then (1<<30) + (1<<30) should equal (1<<31) and so it should also be negative. Otherwise doing arithmetic is difficult and error prone, which makes it unsuitable as a target for other languages which want to compile down to Dart. In fact, not having at least 32 bit unsigned integers would be a major drawback. For efficiency reasons you want these to be handled directly by your VM using integer assembly instructions. This is the only way that you'll ever implement efficient bignum libraries for example which require FFT's which necessarily use integers that are an exact multiple of 32 bits in length (Z/pZ for p = 2^(2^L) + 1 usually, where 2^L is a multiple of 64 at least, usually).
- wbhart 15y agoFrom the Dart documentation: "Integers are not restricted to a fixed range. Dart integers are true integers, not 32 bit or 64 bit or any other fixed range representation. Their size is limited only by the memory available to the implementation" So they obviously haven't got this right. Not only does their implementation not implement this, but it is completely broken anyway because you certainly won't be more efficient than Javascript if your integers are implemented as bignums instead of floats.
- shn 15y agoHas programming language creation maniacs took over Google or what? What happened to Go. Why Google thinks that they can steal our precious time with these stuff. Why don't they eat their own dog food first and benefit from the nutrition and then develop sense of urgency to share it with world! I even regret to take time to write this comment.
- ttcbj 15y agoI am also disappointed, but in a different way that most commenters. I don't mind java syntax, and I prefer strongly-typed languages. My concern is that Dart seems to give up a lot vs. gwt, and not add much. That is, with gwt you get - strongly typed java syntax - it abstracts away browser differences, and supports many browsers - it lets you run mostly the same code on client and server, and gives you access to lots of java libraries on the server With dart, it seems you get a weaker java syntax, and you lose access to all the existing java libraries on the server. You also seem to get a new interpreted server side environment. Maybe that will be better/faster than the JVM, but that is not obvious to me. Overall, I agree with a commenter above who said that they should have defined a general VM for web browsers, similar to the JVM, but simpler/faster/more appropriate. Then, all kinds of languages could be cross compiled into it, while you could use the language natively on the server. I think their original memo got many of the problems right - javascript has become a limiting factor in advancing web development - but I think the solution lies in a more general VM approach.
- goin 15y ago"I think their original memo got many of the problems right - but I think the solution lies in a more general VM approach". I think Dart is the preferred way to target that VM. Staying at the language level eliminates binary format headaches! Besides, the web should not be binary.
- ohyes 15y agoI was hoping for something like the Dylan language. http://en.wikipedia.org/wiki/Dylan_programming_language http://en.wikipedia.org/wiki/Dylan_programming_language It was created in the 1990s and it still looks innovative, even compared to a lot of the new 'hot commodity' languages like python and ruby. I knew it wouldn't happen. If a big corporation like Google put money into something like that, I think it would dominate the market. But what they have delivered here isn't even interesting. (The other option for something I would want would be standardized 'web byte-code', so that you just re-target a compiler back-end to emit it, and your language can be used as if it were javascript. This is neither of those thing and I am sorely disappointed.
- minikomi 15y agoI like it... It's kind of like schemey-ruby.
- masklinn 15y ago> But what they have delivered here isn't even interesting. Not a big surprise. PL specialists (let alone theorists) have no place at google. Just look at the previous language coming from outside Google... Go.
- nickik 15y agoYes, man. Dylan ftw. The best language that does not have s-exp syntax. There are still some guys tring to get a good implmentation out. Dylan could have been what Objectiv-C is now. It was an awesome project it just had bad timing.
- krosaen 15y agoIt's interesting that dart provides the translator at the html level, which allows dart to support direct inclusion of dart scripts in an html page, and for one dart script to require another. However, it seems like this would actually make it harder to package up dart script files efficiently to minimize multiple http requests; it would be nice if dart had some way of emitting a single packaged up dart file as part of the html translation process.
- roman_vorushin 15y agoIt seems to be very misguiding when designers of some new programming language are heavily biased with some business needs or platform selection. Programming language is not just a technology. It's a way of communicating my thoughts. I don't want to think and write (and read!) in just an _efficient_ language.
- desireco42 15y agoIsn't this what coffeescript is, just that cs does it 100 times better
- cletus 15y agoI don't speak for the team but I believe I can add some perspective. Think of it this way: what is GWT? GWT os compiling Java, a statically typed language, into Javascript. If you've used GWT you'll know that particularly early on there was a lot of friction. What's simple in Javascript with anonymous objects and duck typing doesn't quite gel with Java so you've had to do things like use JSNI for edge cases. Google has some incredibly large and ocmplex JS apps (eg GMail). While GMail isn't written in GWT, GWT is aimed at that kind of application with deferred binding and the benefits of static type analysis. What if you took that expertise (of GWT and static type analysis in producing Javascript) to produce a language that could run on the server, run in the browser (for browsers that support that) and compile to Javascript (for browsers that don't)? The last point is particular is key to driving adoption as no one is going to develop only for Chrome. I see it as no surprise the syntax is Java-like. I fully expect sometime soon to see a JVM implementation that will then leverage all the existing Java libraries. In that context (IMHO) it makes a lot more sense. It might not be solving the problems you're interested in but it is definitely solving a particular set of problems.
- maratd 15y agoIf Google produced an innovative replacement for JavaScript, the world would listen. Instead, based on what they have released so far and your comments, they have released a language that is primarily designed to enhance their own tool-chain, which the rest of the world doesn't use and isn't interested in. We don't use GWT. Apparently, we won't use Dart either.
- Jyaif 15y agoA lot of people use GWT for large web applications instead of JS, precisely for the reasons Dart was created, we just don't go brag about it. The biggest problem with GWT was how slow the toolchain was, and this is adressed with Dart by having a native VM in Chrome.
- mikeleeorg 15y agoOut of curiosity, do you know of any notable non-Google sites using GWT? I see a few here, though none seem to be particularly large web apps - that I can tell, at least. http://gwtgallery.appspot.com/ http://gwtgallery.appspot.com/ http://www.gwtsite.com/whos-using-gwt/ http://www.gwtsite.com/whos-using-gwt/ http://www.reddit.com/r/programming/comments/aqsxq/does_anyone_actually_use_gwt/ http://www.reddit.com/r/programming/comments/aqsxq/does_anyo... http://www.quora.com/What-web-applications-use-Google-Web-Toolkit-(GWT) http://www.quora.com/What-web-applications-use-Google-Web-To...
- gabyar 15y agoWow, indistinguishable from java. Statically typed and uses generics. Are you kidding me. Dear Google: seriously? :(
- jcapote 15y agoWhy do languages still require semicolons in this day and age?
- LeafStorm 15y agoIt seems to me that Dart is to JavaScript as Vala is to C. Both Dart and Vala compile to their target languages, have syntax similar to their target languages, are additionally influenced by relatives of their target languages (Java for Dart, C# for Vala), and add an object system onto their target languages.
- timtadh 15y agoI was honestly hoping for an Open Intermediate Representation of web languages to be part of the announcement. One that both Javascript and Dart could target so developers could ship binaries to the browser. I am disappointed in the language and I am disappointed in the lack of imagination from Google.
- antimatter15 15y agoIt seems that the "hello world" dart example compiled into Javascript takes up 538KB (though after closure advanced compilation, this drops to 30KB - still much larger than the 20 bytes of JS). Unless the compiler is improved a lot, dart->js' runtime overhead probably makes it impractical for any app less than gmail-size.
- jroseattle 15y agoI fail to see what Dart accomplishes that other languages don't already accomplish. Not just syntactically, but all things considered -- runtimes, compilers, etc. Sorry to be critical, but this looks like technology for technology's sake.
- petercooper 15y agoI know many HN readers subscribe to my JavaScript, Ruby, and HTML5 newsletters so a public service announcement.. http://dartweekly.com/ http://dartweekly.com/ is up and will be publishing soon :-)
- seasoup 15y agoThe only problem I have with this sort of development effort is that it fails to recognize that Javascript is an awesome language unto itself and has no need of "fixing" by introducing a completely new language that is completely different. Sure, it needs a few refinements here and there, but by and large Javascript is an incredible, flexible, and battle tested language. As a web developer with 11 years of experience, who has worked professionally with RoR, Java, PHP, MySQL, Oracle, and PostgreSQL, my feedback is just stop. The world doesn't need another tool that obviates the need for engineers to learn Javascript to program on the web. Seriously, Javascript isn't that difficult. Just learn it, buckle down and spend a couple months writing Javascript and you'll be just fine. If half the time spent writing Dart had been spent learning Javascript instead, then you would think in prototypes instead of classes, anonymous functions instead of one off objects, callbacks instead of um... not having callbacks, and dynamic variables instead of casting, casting, casting. I'm not claiming Javascript is better then your language of choice, I'm just saying that as a language, it's awesome. It's not broke, and as a web developer I'm not looking for something to replace it.
- cromwellian 15y agoYou don't need to cast in Dart. Dart is not Java. It has concise closures as well. It has dynamic types. Javascript has problems. If it didn't, no one would be trying to evolve it and address it's weaknesses. The language had serious weaknesses, some of which were addressed recently (TypedArrays, strict mode, etc) and some of which there is no current fix (consistent, standardized, namespacing and modules), and some of which cause big performance holes ("with" statement). Prototype based inheritance is extremely verbose to use. That's one reason why CoffeeScript is well liked, and why Classes are coming to JS. Prototypes and eval() also make it hard to develop language analysis tools and IDEs which can provide correct code assistence, which can refactor large code bases, etc Javascript isn't broken if you're just writing a few lines of JS in jQuery to enhance a web page. But it doesn't really scale well if you're got 500klocs of code and a decent sized distributed team.
- drgath 15y agoSure, jQuery is bad at scale. And by "scale" I'm not talking pageviews, I'm talking features, development team, etc... For that, modular libraries like YUI and Dojo are the answer. You can create some of the most advanced web applications perfectly fine in JS as long as you approach it correctly. P.S. Don't ever use the term "klocks" unless you want to sound like a enterprise middle manager who hasn't touched code in 20 years. Just a friendly tip. :)
- commondream 15y agoI'm mainly curious why Google isn't going after some sort of bytecode for browsers, and then building a language on top of that. That would let developers use the language that works best for them, and would really open things up for new languages in the browser. Does anyone on the Dash team have any feedback on why you guys decided not to go that route?
- grimlck 15y agoThe incorporation of bignums is interesting - i'm curious how does that works when compiling to javascript (where double is the only numeric type) does that mean all integer math is emulated? Long emulation is slow enough in GWT, but you have the choice of using int if you don't need a long.
- nerdzero 15y agoAfter seeing so many negative comments primarily focusing on the syntax and verbosity of the language, I felt compelled to create an account to try and get some understanding of why this is. The way I understand it, a terse syntax is useful in getting something working quickly. However, this is not necessarily the best code when it comes to performance or maintenance. Adding "boilerplate" code not only makes the compiler/interpreter more efficient, it also makes the job of the maintainer much easier. Personally, it takes me less time to figure out what a particular piece of code is doing if the datatypes of variables and return values of functions are obvious. Dart seems to understand this well and so makes typing optional which is useful for prototyping but then also allows you to refactor and explicitly include types to gain performance and improve maintenance for production code. Am I missing something? If not this sounds pretty exciting to me.
- hbbio 15y agoThe current Dart buzz shows merely two things: (1) There is a need for better languages to program web apps. (2) Google marketing power is impressing. But, technically what Dart introduces is nowhere new. Have a look for instance at Opa (http://opalang.org http://opalang.org) which is open source and already does more than Dart. If you take out the marketing bulls... that it is going to replace JavaScript, when it now just compiles into JS as many other do.
- mabdt 15y agoIt looks like the website dartlang.org is down. I hope it will be up again soon so that we can compare the two languages in details.
- mkramlich 15y agocurly braces and semi-colons: welcome back to 1985 again! yawn I return to the snake.
- malbs 15y agostatic methods, inability to add behaviour to base objects, no metaclasses It's early days, and they haven't presented yet, but son I am disappoint. I guess I'm not super-excited about it because I was expecting something revolutionary, but when you think about where they're coming from, it was to be expected. Lars and co are simply building on V8, so it makes more sense that Dart is some sort of improvement on javascript, rather than something entirely new.
- malbs 15y agobut +1 to noSuchMethod()
- culebron 15y agoI am really disappointed seeing the "yet familiar" argument behind the C-like syntax. It takes a day to get used to Python syntax, and another day to make it subconscious, that is to stop forgetting it. The arrow in CoffeeScript is a pain to type, but overall CS saves you a lot of time. How come Google that can dictate rules to some extent, doesn't have the balls to fix the long lasting issue with syntax? Why voluntarily subject oneself to, probably, years of pain?! Did they just start following letter-by-letter the success stories, like the one of Javascript? (scheme+smalltalk+java/c syntax) I can't find an explanation to this.
- velagale 15y agoI see a lot of comments on : braces, semicolons ? Do they really matter for serious programmers ?
- goin 15y agoThe language could satisfy the trolls at both sides of the semicolons/braces fence: your favorite editor/IDE could support your style (with two-way tools). As for the preferred format, I suspect code with ; and {..} may remove some ambiguity, so it should execute faster. That's the decisive argument in my book. Besides being useful by itself, I understand Dart as an intermediate language: other languages should compile into Dart. Its syntax should be extremely consistent, so code can be reasoned about. For one day we'll need 99% accurate machine translation, like from chinese to english and back, but from Perl to Python or Javascript. In some respects that should be easier: translated functions can be tested to work identically.