Google To Introduce New Programming Language — Dart
An anonymous reader sends this excerpt from El Reg:
"Google has built a brand-new programming language for 'structured web programming,' one that appears to be suited to browser-based apps. Two of the search giant's engineers will discuss Dart, Google's new language, at the Goto international software development conference next month. News of the new language was posted to the Goto website. There aren't yet any technical details on Dart but the bios of the two Googlers presenting at Goto strongly suggest a bent towards programming for the web and browser."
What's that make now, over two dozen different languages for web development, with ludicrous levels of overlap? Great, now things can get even MORE complicated. And, of course, MS and Apple won't adopt it--making it real useful, just as long as all your visitors happen to be using Chrome or some future version of Firefox.
SJW: Someone who has run out of real oppression, and has to fake it.
http://xkcd.com/927/ Nuff said.
SIG 666 - Signature stolen by the devil
Can you discuss why you don't like JS? I personally like JS (coffeescript more so), and would like to hear your thoughts on the language.
Slashdot is proof that Sturgeon's Law applies to mankind.
Goto conference--awesome name for a programming conference. However, their logo: "goto;" is a bit confusing, where are we going? Perhaps I should be reading it as "goto conference;".
Pretty much. What's there to say? Until there are details, all we know is that Google has a language called Dart.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Did anyone really start using the last language they used, Go?
The problem with slashdot is that most of its users were bullied and stuffed into lockers as kids!
A new programming language create a huge problem, before start solving anything. And its that you lose all the work done with libraries. Everything. A new language is like a natural disaster that wipe civilization to the caves again.
People is doing a lot of cool stuff with Javascript. JS is starting to becoming a decent enough language to write code for the web!.
http://jquerysbestfriends.com/#slide1
-Woof woof woof!
I got this link from my twitter feed, based on the assumption that Dart is Dash renamed.
http://markmail.org/message/uro3jtoitlmq6x7t
So there's hope.
As for why one wouldn't be estatic over javascript, there are many good reasons in that email, many others in The Good Parts book.
There's always room for something better, while not denegrating the existing.
Cynical geeks are so Millenial.
I think we can keep recursing like this until someone returns 1
It may be older than dart, but I think I'll stick with C. ;-)
Admittedly, most of my programming these days is number crunching rather than web apps.
Because not liking JS makes you look cool?
I take the Stephen Stills' approach to programming language: If you can't be with your dream programming language, just use the one you're with. :)
These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
I'm kind of confused as to where google is going these days.
Is this just a side effect of hiring too many bored CS graduates -- put enough in a room together and they come up with their own languages?
I just can't see this being used outside of google -- Web Programming is largely a solved problem, and there are already a plethora of options. Since MS and Apple won't touch anything that comes out of Google, it'll only ever be relevant on the server side -- which is where there are already too many options.
Unless this does something radical -- and judging by what Go was, I doubt it -- this will probably be a niche thing they use internally.
Can you discuss why you feel the need to ask an AC to elaborate or why you would "like" hearing the thoughts of an AC on something?
"A person is smart. People are dumb, panicky dangerous animals and you know it." - K
I'm not AC, but I can opine about this. The Javascript language, not too much problem. Enclosures grabbing any variable in scope and keeping them around is a major pain. That's all. The API of Browsers: Oh, my complaints are legion, but that's not really about Javascript anymore than the Win32 API is about C/C++. I wonder if AC is complaining about the browser API and not the language?
The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
The problem with adding yet another language to the mix is engineers as a whole need to focus on simplicity and good standards and stay away from reinventing the wheel. Diluting the market with more languages to "make web development easier" or "help with web development performance" or even "fill the gaps of other languages" is ludicrous. The problem is most anything can be done very simply and effectively with the existing tools that are available, but really developers are always looking for the next language that's "easier to learn" or "fills my gap of boredom in my current language". We'd be far better off focusing on truly understanding and deep diving into the languages we have. If there are gaps or short comes (which inevitably there will be!) then we should work to fix those in the language, not reinvent the wheel again.
I have no idea why I would want to switch, this article is kinda meh. Go speculate some more.
For those in universities, picture how long it would take to adopt such a language.
For those with inhouse systems, wanna recode your app for google? :)
10+ years experience needed, of course.
Steve's Computer Service, Hobbs, NM
Pretty much. What's there to say? Until there are details, all we know is that Google has a language called Dart.
Well, it comes with a whole new model of software development. Basically, you throw darts on a dartboard with keywords and punctuation printed on it.
The Tao of math: The numbers you can count are not the real numbers.
So it's a PHP derivative then.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Hmm, judging from your uid, I'd estimate you're at least 24 years old, probably older. Which is depressing.
sic transit gloria mundi
Cause I like javascript and I wanna hear why others don't?
Slashdot is proof that Sturgeon's Law applies to mankind.
In related news, a couple programmers from the Dart team have begun work on a functional version of Dart, called "Fart".
That's nothing compared to the logic programming version of it: Lart.
The Tao of math: The numbers you can count are not the real numbers.
If PHP is passe, then why can you embed it in HTML code via Ice? What would be the point?
oh wait ...
Who logs in to gdm? Not I, said the duck.
Learning a new language doesn't take huge amounts of time. Watching the next wave of 'tools' come washing over the side that will make me more productive because it "just does it", makes me laugh. If all anyone does is what the next tool was designed to do, it just does it, but for some reason no one ever wants to stick just with what it does and suddenly I am figuring out how to twist the new tool to do what the inspired people want.
I suspect the real lesson I need to learn well is "Use programming to make your life easier, don't attempt to make a living programming".
Every time I hear a manager say "That's not hard to do is it?", you should be able to do that in a couple of minutes, I cringe.
God: "I don't leave footprints!"
A few things, off the top of my head:
There are probably other reasons to dislike JavaScript. Putting Self in a browser would have been a lot better than this crappy cut-down Self clone with Java syntax that we ended up with.
I am TheRaven on Soylent News
Data Access in real Time. It's what run the NAS heads..
He is actually only 14. Poor kid was raised by slashdot.
No worries. Fusion power is only 10 years away....as we've been hearing for the last 30 years.
Who cares how their lawyers "feel" about a dictionary word that's marketing a structured programming language, not a software package, that no one in the market will be confused by? Nobody, except maybe some other lawyers looking for more gravy.
--
make install -not war
abondon it six months later.
But it has fallen through cracks after the takeover.
With the frustration of working with so many different languages and some that only work when you load in a bunch of code (jQuery...awesome, but JS should do all this natively) or a framework, I'm very curious to see if Google is in fact focusing on web development and can provide a platform that allows for simplified coding without lots of browser overhead. Why do we think that languages should stop and never evolve or change or die? I for one don't want to still be coding 20 years from now with JS and PHP the way they are. Would love to have something that works hand in hand between server, db, and browser in a more seamless way. I'll wait to see before passing judgment.
jsut athnoer menagiensls ltitle psrhae for you to dcoede. Why do we wtsae our tmie dnoig tihs?
Enclosures grabbing any variable in scope and keeping them around is a major pain.
I've been doing perl now for a while (~10 years or so). And closures grabbing any variable in scope (that is actually mentioned inside the closure) is a godsend. I can't imagine another way. That sounds like a feature, not a pain. (As to your other points, I don't do JS/ECMAscript, so I can't speak to them.)
Is Google really lumping C and C++ as "C/C++"? That was an easy way to troll comp.lang.c last time I checked.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Why the heck aren't they at least using Parrot? It's not hard to target and it would really help the project to get some extra programmers on board. In theory Parrot would allow code sharing between all the different languages that target it. So Dart could call Ruby which can call Python, etc. It's the great unifier of the programming religious wars, and nobody seems to talk about it anymore. Even when it's finally DONE! If you're going to make a new dynamic language, please, please make it using Parrot.
I have a theory that the truth is never told during the nine-to-five hours. - Hunter S. Thompson
Another one I see is not using method="get" on a form, and instead having a link that runs JavaScript that literally builds a url of name=value pairs of the form fields. Bonus points when they forget to properly encode the values.
Granted, most of my gripes come from bad designers, and aren't actual shortcomings of JavaScript itself.
I don't much care for the interactive dart shell - shart. Make one accident and your coworkers will never let you live it down :(
Do you even lift?
These aren't the 'roids you're looking for.
Referenced by your closure is a good thing, but Javascript grabs every variable in scope and makes it available inside your closure leading to unpleasant memory leaks galore.
The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
All HR sees, or keyword filters is: 10 Years experience with Java
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
That sent a cold chill up my spine.
I can tell you've replaced a few vacuum tubes in your time.
"When information is power, privacy is freedom" - Jah-Wren Ryel
Hahaha ok buddy, go tell that to the folks who wrote node.js or couchdb.
Slashdot is proof that Sturgeon's Law applies to mankind.
Probably the same way that Frank McCabe feels about 'Go':
http://www.informationweek.com/news/software/soa_webservices/221601351
The first is subjective... there are plenty of good things about dynamic weak typing.
ASI is garbage... and you're right so I personally don't use it.
I haven't been bit by scoping rules too many times, I think that's mostly because I don't write JS like it's C or Java.
I honestly never ever use octal. Either decimal or hex. That is a valid gripe but a small one.
The === vs == operator thing is dumb, but hardly as dumb as PHP's situation, and honestly in all the lines of JS I've written, I've never had to use ===.
Dumb but a small issue.
Dumb as well, but easily mitigated by not doing it.
You can poor-man's namespace. It's not as elegant as Java's or C++'s namespaces, but plenty of people manage to make it work.
Slashdot is proof that Sturgeon's Law applies to mankind.
You need 3rd party libraries to clone an object.
Cause I like javascript and I wanna hear why others don't?
I speak as somebody who came from a Java background when I first look at JavaScript. It just felt like a toy language, and I think the main things were no static typing and lack of support for things like namespaces.
Granted, there's a big divide between the dynamic typing and static typing folks, so some of it is a matter of preference.
If you allow the use of a C++ compiler, you can write code in pure C or C++. Hence, C/C++. But then, it's never been particularly hard to troll a Usenet group.
Breakfast served all day!
Huh? what? Uh, I have nothing against gay people, I have a chuckle myself every once in a while.
I am a bit peeved about all the fabulous names used by java "apps" and "applets" and "beans" and "singlets" and "servlets" and stuff. It just makes me want to EXECUTE them all with EXTREME PREJUDICE.
But I really try not to refer to master/slave components anymore, that's just offensive. Hardware should not be bound thusly.
I wonder if creating new language (and presumably VM) is Google response to Oracle efforts to turn Java into a big steaming pile of crap. I like dynamic languages like Python or Java Script but strong types enforcement (or better: strong enforcement for overall programming contracts also known as APIs) and compiler ability to catch as many errors as possible are key issues when choosing language for bigger applications.
Completely insane constructor semantics trying to look a bit like Java in a prototype-based language (new foo() calls foo() with this set to a new copy of foo.prototype. WTF?)
It's not necessary to deal with those all the time though... Check out "JavaScript: The Good Parts" sometime. He covers methods to write your code so that you never touch .prototype after making a "method helper". (And there's really no need to use '.constructor' or 'new'.)
The rest seems like personal preference to me.
Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
C is not a strict subset of C++. There are just enough subtleties to be annoying; perhaps even dangerous.
Please note though, I'm not placing myself in the "C/C++" pedant camp. I just see it as shorthand for "C or C++" and it never really bothered me.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Hopefully this new language addresses concurrency with lightweight processes, immutable message passing and location transparency, security with capabilities and has a preemptive scheduler like Erlang. Also it would be nice to have a nice type system with a FP/OO hybrid language with no shared mutable state. Built-in fault tolerance and replication would be nice too.
But who am I kidding there is a 1% chance of that happening.
Cause I like javascript and I wanna hear why others don't?
Global-by-default-unless-declared for variables is a recipe of disaster.
Scoping rules are fubar. If I declare a "var" inside a pair of curly braces, it should only be visible in those curly braces - not outside of them, and most certainly not before the line it is declared at! Every other curly brace family language which has explicit variable declaration does it that way, but not JS.
Syntax for lambdas is overly verbose - not only there's no expression form, so you have to write "return"; but "function" itself is 5 chars longer than it should have been. This is annoying in any type of code where lambdas are heavily used, such as when using map/filter/... chains, or Node.js style async programming with explicit continuations.
"new Boolean(false)" is considered true in a conditional expression. Yes I know it's just a corner case of a simple general rule, but it shows how silly the rule is in the first place - either make it "just work", or else forbid using object references in conditionals in the first place.
While we're at it, what's up with the whole separation into primitives and objects? For Java it made a little sense because of perf concerns, but for JS it makes none. Python and Ruby have demonstrated how a dynamically typed language can have a true single-root hierarchy for all types, including primitives, without sacrificing perf (tagged pointers FTW). Coincidentally, that's why the previous point is not an issue in Python - there's no Boolean object type separate from the primitive type there because there's no need for it - the primitive is an object type.
JS standard library is very limited. When you can do less that ANSI C standard library out of the box, that's sad.
Lack of weak references (makes it really hard to write nontrivial code that doesn't leak)
Is this only an issue in JS implementations that use reference-counting - i.e. old IE versions?
For that matter, isn't being unable to garbage-collect cyclic graphs non-standard-compliant?
Google, wanna do something bold and needed? Blow up the HTML/CSS/JS browser. Create a new "GUI Browser" that makes creating desktop-like apps much easier. Biz owners keep wanting desktop-like behavior. Base the GUI language on mostly XML. One has to be a certified rocket scientist to get even simple GUI activity to work right on different platforms with the current "standards". Even big-name big-money sites F it up often.
Table-ized A.I.
Global-by-default-unless-declared for variables is a recipe of disaster.
ES5 strict mode already disallows that.
If I declare a "var" inside a pair of curly braces, it should only be visible in those curly braces
The "let" keyword will fix that. It has block scope. Eventually all variables should be declared with "let".
Syntax for lambdas is overly verbose
There is still no agreement in the ECMAScript comitee about which option to take, but there are two very good proposals:
- Arrow function syntax taken from CoffeeScript: (x) -> x * x;
- Block lambdas, which allow you to treat chunks of code as data
Personally, I love arrow functions.
"new Boolean(false)" is considered true in a conditional expression..
I never heard of that particular example and trying "true == new Boolean(false)" always evaluates to false in a console. But yes, the == type coercing operand is the worst part of JavaScript. The === operator solves 99% of cases. For the 1% that it doesn't help with, ECMAScript 6 will have an "is" operator, and before that probably an Object.is() function.
While we're at it, what's up with the whole separation into primitives and objects?
I agree with you, everything should've been an object from the start. That's probably because of the Java legacy.
I never heard of that particular example and trying "true == new Boolean(false)" always evaluates to false in a console.
That's why I mentioned a conditional expression. Try:
As for the rest of it, the key word in all your replies is "will". Yes, I know a lot of it is being treated for EcmaScript vNext, but we're talking about what's available for use today (and, realistically, one can't just stick to Mozilla alone and use their extensions - we'll have to wait for the standard, at least for an implementable draft, and then for browsers to pick it up). And today, these are are still issues - the fact that changes are considered for the next language version is a proof of that.
The other problem is that, even once the changes are there, existing semantics would still remain for the sake of back-compat, and will provide a source of perpetual confusion for newcomers, and plenty of opportunity to write bad code. I'd expect most people to pick "var" over "let" for declaring variables, for example, just because "var" is the more obvious construct. And then they'll run into scoping issues, esp. with lambdas...
It's the exact same problem that C++ is facing. Most of the recent (STL and after) additions are good, but there's lots of old cruft there dating back to ARM C++ and K&R C. And they can't just throw it out of the language.
Maybe they need to come up with some kind of "use sanity" mode to build on the existing "use strict", that would kill all existing garbage in the language. Then we could set a simple regex commit filter to check that it's always there, and call it a day.
Personally, I love arrow functions.
Given that Oracle has just settled on using arrow syntax for their lambdas in Java 8, I hope that JS will follow. That way we'll at least get some syntactic unification over curly-braces family, what with C#, Scala and C++ all using arrow for that already.
Maybe they need to come up with some kind of "use sanity" mode to build on the existing "use strict",
That's the idea. You'll be able to set "application/ecmascript-6" or something similar to the type attribute of the script tag.
I think in the context of a discussion related to a (not even published) new language that aims to fix front-end development, the future of JavaScript is more relevant than its present.
I think in the context of a discussion related to a (not even published) new language that aims to fix front-end development, the future of JavaScript is more relevant than its present.
That's true. And somehow I don't see Apple or Microsoft racing to implement whatever Google has to offer in IE and Safari, respectively - which would pretty much kill the idea on the spot. Sure, they can compile to JS - they even say so explicitly - but there's no shortage of languages doing just that already, and it didn't really help them take over JS as the language for the web.
Pragmatically, I do realize that JS is most likely the high-level programming language for the next decade. Especially now that it (and HTML) is essentially the only way to write portable apps between desktops and all major mobile platforms. And then consider Win8, where "apps should be writable in HTML5/JS" is an explicit design goal - if you're a JS developer, you really should watch the presentations on BUILD come September 13th, there will be a lot of relevant goodness there. And I don't think that Google is suddenly going to de-invest on their major push for HTML5 as the development platform for "Google connected experience", either, at least definitely not short-term.
Which is why it's good that stuff is being fixed, and that all implementations (finally also including IE - well, better late than never) are striving to catch up on conformance, and actively competing on perf. Still, I wish that a better designed language would be the base of all these efforts - it would save us a lot of time on fixing things, which could then be used to improve it in other areas. Python in that role would have been awesome.
Note that "dynamic" (as opposed to "static") and "weak" (as opposed to "strong") are orthogonal in this context. Dynamic type checking can be a good thing. Weak typing... not so much.
The point is that the current JS scoping rules have no easily discernible advantage over normal lexical block scopes. It's a "feature" which leads to hard-to-find bugs for no advantage.
Sure, we have JSLint and/or strict mode, but that's not really a full solution.
(I realize JS is its own languge, but the mere fact that the syntax is so close to C/Java should be taken into account when departing from "normal" semantics in C-like langauges. Especially if it doesn't actually have any noticable advantages.)
Read "JavaScript: The Good Parts" (or just watch this) for why you should NEVER EVER use "==" in any capacity.
HAND.
No, it's a problem with any collector. A tracing collector still needs a mechanism for breaking cycles. It can collect garbage cycles, where two objects reference each other but neither is referenced anywhere else, but that's a less common case. For example, consider a notification delivery object. This is a pretty common pattern - objects register to receive notifications of a particular type, then other objects send notifications and the notification centre routes them to any interested objects. The notification centre needs to keep a reference to the objects that are interested in notifications, but this should be a weak reference because the object should be collected if that's the only reference to it.
I am TheRaven on Soylent News
My Favourite language is APL (Check out apl360 and the book by Gilman and Rose)
Leslie Satenstein Montreal Quebec Canada