9 ms·
Why Dart is not the language of the future.
- dextorious 15y agoMay I point to the irony on posting why a language is not "the language of the future" on perl.org? [UPDATE: yes, please, down vote freely, because humor is dangerous].
- deleted 15y ago[deleted]
- nodata 15y agoThat's a reactionary comment. We'll see if the post was right in a year or so.
- dextorious 15y agoWell, sure, the post can be 100% right. It's the source that's the "ironic" part.
- nodata 15y agoI'm not sure it's ironic - nobody uses Dart yet.
- sambeau 15y agoI think it's completely valid for a bunch of super-smart language geeks who have spent 10 years learning from their own mistakes to make comment on a new language, especially one that due to the backing of the biggest web company in the world will gain traction whether or not it it is any good.
- Mithaldu 15y agoI wouldn't worry too much about traction. See Google Wave.
- mhd 15y agoAd hominem, anyone? While "Perl" and language criticism in one headline might be worth a "teehee" moment, I fail to see any arguments in the article that seem to stem from the pedigree of the author. The only time he mentions Perl is when he's talking about threading, where there's some kind of feature parity – and he's not too happy about it. Never mind that Perl hackers do have a certain penchant for language hacking (understandably…), starting with a plethora of object systems (Moose getting quite popular) and ending in extreme absurdity[1]. [1]: http://www.csse.monash.edu.au/~damian/papers/HTML/Perligata.html http://www.csse.monash.edu.au/~damian/papers/HTML/Perligata....
- dextorious 15y ago> Ad hominem, anyone? While "Perl" and language criticism in one headline might be worth a "teehee" moment And my comment was just that: a "teehee" moment. Oh, and "ad hominem" means "against a person". I only pointed to the irony of future-language advice coming from the Perl camp, never said anything against the validity of said advice or the person giving it.
- mhd 15y agoNote that I didn't reply to your original post. While one might argue whether this really is irony or just a tired "haha, Perl" joke (or about the applicability of ad hominem by association), I was referring to the more immediate "envy" issue. Not that I don't regret posting, as I don't think digressing in this direction is worth a discussion here – although that would've taken place without my contribution. "Perl, right, yafeelme?" is basically the "What's the deal with airline food?" of the programming world…
- bad_user 15y agoHey, some Perl hackers are not business types working on serious software, but some of them are great hackers nonetheless ... it's also a good thing you haven't seen Damian Conway in a presentation talking about programming in a Klingon dialect. Your head might have exploded from the sheer absurdity of it - but me, I was standing there thinking about a time when programming was fun for me and I loved every second of it. Also, calling an ad-hominem while insulting an entire community? Really?
- sambeau 15y agoIt doesn't befit the HN community to be ridiculing the Perl community. First the Perl hackers were the original web start-ups. Many of the problems you don't have to worry about were either solved by them or were solved by people who wanted to fix things wrong with the Perl toolchain. This makes Perl a huge success in historical terms even if it on the wane today and, even if it is on the wane today, it is still used by many huge organisations. The Perl 6 project has been a worthwhile and fascinating project to follow for the past 10 years. While many see it purely as a failure there is a lot to praise and learn from in the experiment. Here's what I have learned from watching it for most of the early years: * Designing a new language by committee is very hard * Keeping a community focused on creating a Minimal Viable Product can be very hard * One bone-headed programmer can wreck a project * Very clever people can make very stupid decisions, especially when operating in a group * It is better to announce nothing than to announce and then not ship soon afterwards. The internet is like a child with ADHD Having said all of that Perl 6 is working now and has some fascinating, innovative features if (to many people's taste) wrapped in some ugly and frenetic syntax. Go read the history of Perl and Perl 6 before you just join the chorus of boots.
- sambeau 15y agoThere is a lot of great wisdom trapped in Dan Sugalski's blog. I've tried to recommend his articles before but they've never gained any traction. http://www.sidhe.org/~dan/blog/ http://www.sidhe.org/~dan/blog/ Of particular relevance here is his Parrot Retrospective: http://www.sidhe.org/~dan/blog/archives/000435.html http://www.sidhe.org/~dan/blog/archives/000435.html Especially the last two items. One being the list in the wrap-up: good advice and the other being the one about Leo—the man who single handily derailed Perl 6. One guy is pretty-much the reason we all laugh at Perl now. I watched it happen: he refused to build a MVP, he kept throwing away working code to re-architect it bigger and more convoluted ways. There's a big lesson there for every start-up. If you do take a look be sure to read Dan's well-written blogs about language design and implementation, especially those tagged "What The Heck Is:" http://www.sidhe.org/~dan/blog/archives/cat_what_the_heck_is.html http://www.sidhe.org/~dan/blog/archives/cat_what_the_heck_is... I've always held a lot of respect and sadness for Dan Sugalski. The guy was not only a brilliant architect and hacker but he had the knack for always being right. It's sad that he didn't stand his ground and was sadly pushed out of the project. I get the impression he had some tough times after that. If any of you guys see he CV come up you shouldn't think twice in giving him a senior role.
- dillon 15y agoI personally don't find an irony. Perl may not be the most popular language ever, but it definitely has its place. I do find an irony that the 0.1 specification of Perl is worst than the 0.1 specification of Dart.
- prakashk 15y agoBut, keep in mind that Perl 0.1 wasn't intended to replace a Javascript-like language. It was created as a replacement for Unix shell, and tools like sed, awk etc.
- chromatic 15y agoI do find an irony that the 0.1 specification of Perl is worst than the 0.1 specification of Dart. Why is it surprising that a language designed to occupy a niche between shell and C in 1987 had a spec faster and looser than a language designed from (let's say) 2009 through 2011, based on an existing, popular, and well-understood language with well-publicized flaws?
- njharman 15y ago> Perl may not be the most popular language ever, but it definitely has its place. Sure, but is it? Does it have any chance at all of being "the language of the future"? Or, is it a very old, mature language that has reached a plateau or is in slow decline?
- mthreat 15y agoI also find it ironic that this link to perl.org took 15 seconds to respond.
- buster 15y agoDespite all your downvotes i thought the same when reading (perl.org) behind the headline ;)
- swah 15y agoThose points just mean Dart isn't revolutionary, which is pretty much a requirement for a language to replace Javascript.
- dextorious 15y agoActually what you say makes perfect sense. Say Google unveiled a Scala, Haskell or even Go like language. Sure, the hip crowd would be pleased. But would it ever gain traction with the web dev masses? Hell, those languages have not that much traction even outside web development. Now, if Google had unveiled something like Ruby or Python, that would have also pleased the HN crowd (maybe a little less that some extravagant functional language with crazy type tricks). And it could possible gain traction too. But that too would hardly be revolutionary.
- mhd 15y agoOne also has to remember that Google itself intends to use this language a lot, so it's much more likely that they approximate something they already use. And they're doing a lot of Java, where Dart doesn't seem too exotic. In some other thread, Dart was compared to GWT, and I think that's getting pretty close. For teams that would've used Java/GWT before, doing it in Dart instead isn't a huge jump. Probably not even as huge as Scala, where at least you'd be able to remain within the secure embrace of the JVM. (Not a huge jump for Android programmers, either. In light of the Oracle lawsuit avalanche, this might be interesting…)
- MatthewPhillips 15y agoWhat is it about Go that would prevent traction where Dart will not. Not having classes?
- dextorious 15y agoOther things too. The use of pointers for one (although limited).
- chc 15y agoScala is gaining a lot of acceptance even without the backing of a major sponsor like Google. I daresay that if Google were behind Scala, we wouldn't be having this conversation.
- sambeau 15y agoThis is not a bad article despite the stupid title. Take-up is all that matters in the future; the quality of a programming language has rarely had any influence on take-up.
- qntm 15y agoSo what does influence take-up? And does Dart have it?
- sambeau 15y agoI dunno, something like: * The backing of the largest web company in the world. or * Inclusion in the second-most popular browser in the world. Yep. That aught to do it.
- guard-of-terra 15y agoVBScript had both (actually the browser was the most popular), and look how far it went.
- afsina 15y agoit only worked in IE and Windows.
- sambeau 15y agoTrue, but times were different. Microsoft was being evil in the browser wars, being a monopolist and pissing off the hacker community: just the people you need for a new tech like this to take off.
- mdaniel 15y agoOne can also argue that VBScript is not tooling-friendly. I am talking a little out of school, since I have never had to use VB.net; it could be wholly different. But I have had my fair share of VBScript interactions and those were not fun (Microsoft-isms aside).
- 15y ago
- mrspeaker 15y agoVery interesting article. After playing with the examples and looking at the docs for a bit, it really felt "old school" - but I assumed that that was just a facade to lul any corporate java types into a false sense of familiarity before busting out the modern goodness: much like JavaScript's own "Surprise! I was really SmallTalk all along!" magic trick.
- munificent 15y ago> "Surprise! I was really SmallTalk all along!" Self, actually. Dart is closer to Smalltalk in Java's clothing.
- ohyes 15y agoThere are a lot of unwarranted conclusions drawn here. I think this article is FUD (and I don't really care for Dart). > Dart programs may be statically checked. The static checker will report some violations of the type rules, but such violations do not abort compilation or preclude execution. > In other words the "static checker" is a lint-type development aid, not a language feature. My reading is that the language is optionally typed (similar to SBCL). The type checker will warn you when you have a type declaration that appears to be incorrect, and will optimized based on these declarations, but will not keep you from running code that violates a type-check. This is a remarkably good solution for dynamic languages. > Here's a strange thing: the one and only true value is the boolean literal boolean true. Everything else is false. That means that code in if (1) { ... } will never execute, because 1 is a number, not a boolean, and there is no implicit conversion to boolean. You'll need to write if (1==1) instead. This makes as much sense as 'everything' being true. You would write if (true) {...}, but I can't imagine why you would do that. > There is no implicit type conversion between numeric, string or boolean types. Ok. This is a good thing. Auto conversion is bad. > The distinction between string and numbers allows to re-use the addition operator + both for addition and concatenation. However, without strong typing, this will almost certainly prove to be a bad idea. From the specs, it looks like "2" + 2 will be a concatenation, and 2 + "2" a run-time exception (in the absence of implicit conversion from string to number), but experience infirms this: string concatenation happens in both cases (although with a warning in the second one). This seems to directly contradict the first point. Which is it? It should do a dynamic type check and generate a run time exception in both cases. I don't see anything to convince me that "2" + 2 will be a concatenation... in the spec. >Thus, isolates are a heavyweight thread control model very much like Perl 5's ithreads. That means that they are good for data isolation, but heavy to use and hungry in memory, because spawning a new isolate will imply cloning all the objects and data structures of the running libraries. There is absolutely nothing that implies this. There is a tiny section in the spec about isolates. They could easily be lightweight like Erlang processes.
- alttag 15y ago> You would write if (true) {...}, but I can't imagine why you would do that. In haste to make your point, you overlook that Boolean expression are used in loops too. Combined with a "break;" I'm sure many here have used a "while (true)".
- jriddycuz 15y agoThe worst of both worlds: Dart fails to provides the advantages of static languages, without compensating by the flexibility of dynamic languages. This was my impression exactly when I first read about Dart. This is the language that Google wants to replace Javascript? Please. Javascript may have some strange design quirks (or outright flaws, depending on who you talk to), but at least it has the sense to have a meaningful boolean context. I understand that you can't try to revolutionize everything if you're targeting a wide audience, but this just looks like decaffeinated Java.
- Nitramp 15y agoMeaningful boolean context? I understand that the original author is a Perl programmer which probably means he has wildly different views of the world, but seriously? "Meaningful boolean context"s have given us things like the abundant "if (!!foo)" in JavaScript. And then he goes on to criticize absence of auto-conversions, which are the other plague of dynamic programming languages (see "===" & friends). I don't see how anyone could actually want that kind of litter in his programming language.
- alttag 15y agoI think one of the reasons JS succeeded is precisely a major complaint of experienced developers: globals [1]. But this, (perhaps as with PHP) is what enabled novice developers —some of whom eventually became experienced developers—to learn the language easily. We all started with some bad practices, and as we matured our code did too. But the loose, forgiving standards are precisely what enabled broad use in the first place. When a language imposes more constraints on the programmer (it may be for their own good!), it limits adoption and growth. 1: From the summary of Javascript: The Good Parts, "... Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation. Unfortunately, these good ideas are mixed in with bad and downright awful ideas, like a programming model based on global variables."
- deleted 15y ago[deleted]
- politician 15y agoI think you're on to something there. Doesn't processing also encourage the use of globals as a way to make it more accessible to artists who are just learning how to program?
- j_baker 15y agoI think there are very few who would say that globals shouldn't be allowed altogether. The problem is that JS relies a bit too much on globals all being crammed into one namespace. I'm an advocate of the python model (although I should maybe call it the Modula-3 model): only allow module-level globals. You get globals if you need them, but no worries about code mangling your variables.
- cwp 15y agoActually, Gilad Bracha, one of the designers of Dart does say exactly that. He's also working on another language that has no static (ie, global) state. See http://newspeaklanguage.org/ http://newspeaklanguage.org/
- 15y ago
- ajanuary 15y agoThe comments under the "Feeble Typing" section make it clear the author has never seen or read Gilad talk about optional typing. For one example, read http://bracha.org/pluggable-types.pdf http://bracha.org/pluggable-types.pdf
- sadfasdfads 15y agoThe way I understand it, Dart is a higher-level abstraction of Javascript. People thought that Java was crap too when it came out and said C/C++ was still king. Look how that went. Perl has been out fucking forever and still isn't in the browser, so stop whining. Javascript whipped your ass in this arena, Perl.
- sambeau 15y ago"People thought that Java was crap too when it came out and said C/C++ was still king" I was there in 1995 and I have no recollection of anyone saying that. People were generally excited by its possibilities. The worry was about a) embedding a VM into a browser back when memory was limited and b) java was controlled by one company and wasn't an open standard. Javascript won the 'browser war' because a) it was already there so it didn't need a plugin b) it was 'good enough' for its time c) it had Java in the title d) it had the sense to become an ECMA standard. Perl never had any plans to be in the browser it was always a Unix command-line tool. What is interesting is that Java started as a language for making UIs on iPad-like devices, The first web-server was written in Objective C, Perl gained traction as the way CGI programs were written. Now, Objective-C is used for programming iPads, Java moved from UI to Server and displaced Perl for corporate web apps. Meanwhile Javascript has quietly solidified its role in the browser and may finally make the leap to being a major server tech.
- sadfasdfads 15y agoI was there in 1995, too. People were excited about the possibilities in Java and applets, because that was the only purpose in the beginning as far as most were concerned. Then people started writing UI apps in Java and starting to write other standalone apps and it was deemed "slow" and people made fun of it. People seem to forget that these days, because it wasn't long before it took off and became popular. "Perl never had any plans to be in the browser it was always a Unix command-line tool." Perl is not (just) a "Unix command-line tool". It is an interpreted language. It was a preferred language for old school webapps in the mid-to-late 90s, and continued in use a lot through the 2000s. Now for the majority, it has been replaced, except for code that is still running on old servers. So why are Perl programmers ranting against Dart? Javascript is somewhat of a sore spot, even though the average Perl programmer would not admit to it and may not even realize it. A client-heavy web application that doesn't try to do things quickly saving keystrokes is about as far from Perl as one can get. Dart is "Javascript part 2" to the Perl programmer, and subconsciousnessly eats away at the Perl programmers ego. Even though they can't explain why, they feel as they must destroy it.
- pyre 15y ago> if (1) { ... } will never execute, because 1 is a > number, not a boolean, This hasn't stopped Ruby from being popular.
- scotth 15y agoI guess you mean the opposite hasn't prevented Ruby from being popular. All numeric values are truthy, including 0.
- koenigdavidmj 15y agoA lot of Ruby idiomatic methods will return either a value or nil, which is falsey, so things like: x = meep if x # do stuff end will run as most might mean.
- pyre 15y ago> I guess you mean the opposite hasn't > prevented Ruby from being popular. I was stating something more like "the fact that there is a hard split between numbers and booleans, and everything -- barring null -- by default evaluates to true." Since everything is a object instance in Ruby, asserting a variable is basically only evaluating whether or not it is null.
- saucetenuto 15y agoIn Ruby it's the other way around: 1 is truthy and the block will execute. Everything in Ruby is truthy other than the null reference and Boolean false. I can understand forbidding non-Boolean values in Boolean contexts - it's not something I'd want myself but I think I get why a reasonable person might. Dart's semantics, though, are really strange: they follow no precedent I'm aware of, and don't seem to offer anything useful in themselves. Does anyone else have some insight here?
- enmanuelr 15y agoYes, please. Tell me how this language, before it even launches, is finished, or has been tested in the real world, is already doomed to fail. Oh and it's posted on a Perl blog. Completely objective I'm sure.
- jbooth 15y agoIs it just me, or is every dart criticism follow the pattern: 1) I have a hobby horse 2) Dart gets released 3) Flog hobby horse Go had a bunch of similar criticisms, mostly for not being "innovative" enough and favoring a small, solid feature set.
- nickik 15y agohow is having classes, interfaces, generics, optinal types, operator overloading and functiontypes a small, solid feature set? Scheme, self that are languages with small feature sets.
- jbooth 15y agoI was talking about go, which doesn't have generics, optional typing or operator overloading, doesn't really have "classes" (arguable), and a fairly tight type system which covers structs, interfaces and functions in a minimal way. I don't really have an informed opinion on dart yet, I'm just noting that 90% of the complaints I'm seeing consist of people with a hobby horse that predated the Dart announcement.
- prakashk 15y agoI don't really have an informed opinion on dart yet, I'm just noting that 90% of the complaints I'm seeing consist of people with a hobby horse that predated the Dart announcement. It's a good thing then that the author of this article falls in your 10% group: someone who actually knows a thing or two about language implemetations, and not a hobby horse rider.
- jbooth 15y agoHe may know a thing or two about language implementations, but his complaints are predictable: he wants it to look more like perl and less like Java. Additionally, his opinions on the implications of their concurrency model are entirely based on perl's implementation and IMO not necessarily correct in another context (message passing was probably chosen specifically to avoid needing heavyweight threads). I'm not a web programmer but those complaints seem superficial to me, I'd probably spend a little time using it before coming to that conclusion.
- digamber_kamat 15y agoI will not use dart because it comes from google. Wont let them own everything about the web.
- digamber_kamat 15y agoI will still not use dart!
- aristidb 15y ago> Which means that the expression (a==a) might be, in some pathological cases, false. Most languages (including Perl) have at least one case where a==a is not true. (0.0/=0.0) == (0.0/0.0), or any NaN == NaN expression.
- regularfry 15y agoThat's less a language thing than it is an IEE754 float thing, as I'm sure you're aware. It's justified there because it's a genuine propagation of an "undefined" result. I'm not sure that is the sort of protocol user code should be able to opt into by accident.
- deleted 15y ago[deleted]
- bryze 15y agoIf we're going to be posting judgmentally titled articles, then why don't we post "why perl is the language of the past." I suspect the main reason languages like perl and FORTRAN are still used is because of legacy and tradition. But I acknowledge that is my opinion, not fact, so I wouldn't post such a title. Seriouly, we need to stop the pomposity. What about "My concerns about Dart 0.1", or "Early Criticism for Dart 0.1"?
- deleted 15y ago[deleted]
- dreamdu5t 15y agoDart provides and enforces a bunch of idioms that you don't need in JavaScript in the first place! Adding classes to a language that... doesn't need classes. If anybody but Google released Dart HN wouldn't give two shits.
- rayiner 15y agoLike 80% of these things are true for Scheme/Lisp/Dylan. Canonical true value? Lack of implicit type conversions? These are good design decisions, not warts.
- samth 15y agoIn Scheme/Lisp/Dylan/Racket/Clojure/Your favorite lisp dialect everything except #f is true -- Dart is the other way around.
- rayiner 15y agoRight, it's the opposite convention from Lisp. I'm trying to distinguish from say Perl, which doesn't have a canonical true or false value but identifies a set of things that "seem like they should be false" like 0 and "".
- nickik 15y agoThe question is not what they share the question is what dart lacks. The two most importend things are (a) dart has statments and expressions (b) no macros. Then dart does not have a nice concept of true/false witch most lisps have.
- dos1 15y agoTo me Dart feels a bit like the Embrace/Extend/Extinguish behavior of Microsoft. There's nothing I've seen so far that really makes me excited about Dart, and it kind of feels like Google is really just creating this new thing for the sake of being different. It seems like they want to unilaterally make decisions on the future of the web. We all know how well that works.
- bascule 15y agoThis article conflates "dynamic typing" with "weak typing" all over the place. First he whines that type declarations aren't mandatory (at least within the scope of what a type inferencer can resolve), claims the runtime won't be able to determine type information (which V8) can already do... ...then he goes on to complain that there's no automatic type coercion! This is probably one of the worst misfeatures of JavaScript (and Perl and PHP), but after a short tirade about "weak typing", he's longing for automatic type coercion? Sorry dude, "3 dog night" + 2 should not equal 5
- deleted 15y ago[deleted]
- ooooooooooooo 15y ago
- ooooooooooooo 15y ago
- roopeshv 15y agoI'll just leave them here. (http://www.google.com/search?q=chrome+why+we+don%27t+need+another+browser&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:unofficial&client=firefox-a http://www.google.com/search?q=chrome+why+we+don%27t+need+an...) http://www.uxpassion.com/2008/09/google-chrome-nah-we-dont-need-another-hero/ http://www.uxpassion.com/2008/09/google-chrome-nah-we-dont-n... http://www.extremetech.com/computing/79620-who-cares-about-googles-chrome-browser http://www.extremetech.com/computing/79620-who-cares-about-g... http://floggingenglish.com/2008/09/03/google-chrome-just-because-you-can-doesnt-mean-you-should/ http://floggingenglish.com/2008/09/03/google-chrome-just-bec...