7 ms·
> They use special tricks, like (a+b)|0, to force results to be in the int32 range, and avoid overflow checks. Why is this not seen as the worst idea ever? Why
by duaneb 14y ago
> They use special tricks, like (a+b)|0, to force results to be in the int32 range, and avoid overflow checks.
Why is this not seen as the worst idea ever? Why this great resistance to moving away from javascript?
- mccr8 14y ago> Why this great resistance to moving away from javascript? To what? What scenario do you envision where Apple, Google, Microsoft and Mozilla are all willing to implement a single new language for the web?
- duaneb 14y ago> To what? What scenario do you envision where Apple, Google, Microsoft and Mozilla are all willing to implement a single new language for the web? Well hopefully we wouldn't make the same mistake again by going with a language and we would just implement a VM on which JS is implemented. It would be much easier to validate the correctness of a VM anyway, achieve better speed than was possible before, and not tie people down to a (painful) language. On a personal note I would actually start to view the web browser as a platform instead of a bunch of tangled strings, cans, and tape. EDIT: I didn't answer your question. But, as a developer, I will only move to the web for my default programming language when I have bytecode or assembly to look at, not some convoluted scripting language. Hopefully, Asm.js is a minor, minor bump on the way towards the browser as a usable platform for arbitrary development.
- deleted 14y ago[deleted]
- TheZenPsycho 14y agoOh. Right. A VM. On the web. Because that worked reallllly well when Java did it.
- duaneb 14y agoYes, because all VMs are as bad as the JVM, which was never intended to be run through a browser.
- TheZenPsycho 14y agooh my, how old are you, little boy? http://en.wikipedia.org/wiki/Java_applet http://en.wikipedia.org/wiki/Java_applet "Java applets were introduced in the first version of the Java language in 1995" Remember, why Javascript is called Javascript. So it wouldn't be seen as competing with Java as "the language of the web". Java, and its VM was designed for the web. To run in a browser. It was given every conceivable chance, and it utterly failed because ultimately, it's fundamentally a terrible idea. But somehow fellows like you are too headcopped to see history for what it is, and you are doomed to repeat it. I remember when most developers would be surprised if you told them you could make programs in Java that are not applets. And java had a reputation for being "that really shitty slow painful web language"
- munificent 14y ago> It was given every conceivable chance Except that it didn't have decent DOM integration...
- TheZenPsycho 14y agoYes it did. The DOM was designed to be used from JAVA. which is why it seems so out of place and verbose in JavaScript.
- TheZenPsycho 14y agoto gives some context and history: September 18, 1995: Netscape 2.0 released with Java and Javascript support. This has the DOM level 0-. Java is marketed as the language for "Big boy apps" and javascript is merely the scripting "glue" that lets java access DOM level 0, which is limited really only to reading form data and changing the .src attribute on some images. [1] 1998: "The initial DOM standard, known as "DOM Level 1," was recommended by W3C in late 1998. About the same time, Internet Explorer 5.0 shipped with limited support for DOM Level 1. DOM Level 1 provided a complete model for an entire HTML or XML document, including means to change any portion of the document. Non-conformant browsers such as Internet Explorer 4.x and Netscape 4.x were still widely used as late as 2000." [2] August 2001: Internet Explorer 6 is released with still " and partial support of DOM level 1" [3] in the same month (August 2001) Netscape 6.1 is released [1] netscape 6 was the first Netscape browser based on the "Mozilla Application Suite", what Firefox is based on today. It's hard to find detailed information on this, but I would also guess that Netscape 6 had "Partial Support" for DOM Level 1 February 6, 2002 (6 months later): Java's J2SE 1.4 runtime is released, and has, again, Partial DOM level 1 support, along with the ability to directly manipulate the page that an applet is on without using Javascript as "glue" Which of course is the whole point of the DOM, as a "language agnostic" API that needed to be used from not just Javascript, but Java, C++, and VBScript and whatever other language. It was, to be fair, shitty, but we are talking, at this time, 2002, people are using IE6 and netscape 4 still. Browser support for DOM matured around 2006, and so did Java and its applets, keeping pace right along with the browsers. People generally don't really understand that Java and Javascript are two seperate languages. It's all just "Java, that really shitty slow web language" [1]:http://en.wikipedia.org/wiki/Netscape_(web_browser)#Release_history http://en.wikipedia.org/wiki/Netscape_(web_browser)#Release_... [2]:http://en.wikipedia.org/wiki/Document_Object_Model#Intermediate_DOM http://en.wikipedia.org/wiki/Document_Object_Model#Intermedi... [3]:http://en.wikipedia.org/wiki/Internet_Explorer_6 http://en.wikipedia.org/wiki/Internet_Explorer_6
- munificent 14y ago> Well hopefully we wouldn't make the same mistake again by going with a language and we would just implement a VM on which JS is implemented. A VM still needs some kind of well-defined input format, and that's a language. Whether it's human-readable text or binary doesn't make that big of a difference. Either way, designing language semantics is hard.
- MatthewPhillips 14y ago> Whether it's human-readable text or binary doesn't make that big of a difference. To people like the grandparent, that is the only thing that matters at all. It's not a technical problem they have but an emotional one. They do not want the code they write to be a second class citizen to the code someone else writes, and they will absolutely be ecstatic to see us throw away the last 15 years of progress and start from stratch in order to alleviate that problem they have.
- skatepark 14y agoMeanwhile, you web guys are throwing away the last 30 years of progress on consumer application development, and starting from scratch. Web apps are not documents.
- MatthewPhillips 14y agoWeb apps serve a purpose that didn't exist 30 years ago.
- skatepark 14y agoNow I'm very curious what you think that purpose is.
- coldtea 14y agoIts like CS newbies, in the first year of Uni thinking that OSs should be written in assembly to be faster....
- ajasmin 14y agoNow Apple, Google, Microsoft and Mozilla will all have to ensure that tricks like (a+b)|0 are executed optimally though.
- nnethercote 14y agoYeah, but that's not hard. And there's a spec that makes it extremely clear which tricks are necessary -- no need to reverse-engineer someone else's implementation, and no risk of tricks that work today breaking tomorrow.
- cpeterso 14y agoThe beauty of this approach is that browser vendors don't have to execute these quirky expressions optimally. They are standard JS, so they will already work.
- deleted 14y ago[deleted]
- chc 14y agoWhy this great insistence on moving away from JavaScript? If it serves the purpose well enough, I see no problem.
- PommeDeTerre 14y agoIt really doesn't, though. For the first 12 or so years of its existence it was basically unusable. It wasn't until jQuery hit the scene that it started to meet even the bare minimum level of usability. Even then, it still took a huge amount of effort and investment from Google, Apple and Mozilla to make it what it is today, which admittedly isn't very good at all. Even now, it generally only looks like a "good" option to those who don't have experience with other, better programming languages (PHP excluded; it's nearly as bad as JavaScript is). Developers who do have more experience with other languages usually use JavaScript very reluctantly, and this is especially true when it comes to the best developers. The fact that CoffeeScript, TypeScript and Dart get so much attention just further shows how bad JavaScript is. Developers don't want to use it, and so they try to hide it to a large extent (CoffeeScript), or modify it to be more like languages like C++, Java and C# (TypeScript and Dart). JavaScript should have been replaced many years ago, if it ever should have even been included in Navigator so many years ago.
- wwweston 14y ago> For the first 12 or so years of its existence it was basically unusable. It wasn't until jQuery hit the scene that it started to meet even the bare minimum level of usability. jQuery didn't address problems with the JavaScript language -- to the contrary, it's a pretty good example of the power JS has and what can be accomplished with it. The problem jQuery addressed was the DOM API (and some other points of interface with the browser), which was probably the most significant pain point, and which probably wouldn't have been much different had another language been chosen. > Developers who do have more experience with other languages usually use JavaScript very reluctantly Yes, by and large, one of the biggest problems with JavaScript might be that people seem to approach it as if they don't or shouldn't have to learn it instead of whatever else they're already familiar with. I fit that description from 1999-2003 or so -- along with the description of someone who had/has experience with other "better" programming languages -- but after a few key pointers about scope and functions from someone who had taken the time to learn to use it, I don't share your apparent view at all. My experience has been that it's serviceable and more or less on par with Perl, Python, and Ruby... to the point where my suspicion is that most developers for whom the language itself is a significant obstacle wouldn't do appreciably better were JS magically replaced with something like any of those three. > Developers don't want to use it, and so they try to hide it to a large extent (CoffeeScript) CoffeeScript is JavaScript semantics with different tokens and a handful of shortcuts/sugar. More power to people who enjoy using it, but to the extent anybody's arguing that it's good enough, they're also arguing that JS really wasn't that bad all along.
- k3n 14y agoIt's not moving away from, it's addressing shortcomings. As you should know, JS only has 1 type of numeric representation in userland, Number, which serves both floats and ints. Not surprisingly, operations with ints are much more efficient than with floats, and if an optimizer can introspect your code and determine that some value will only ever be an int, internally it will represent it as a int. Otherwise, it's forced to use a float representation. Thus, coercing all values to values that can be internally represented as ints can yield a significant performance boost.
- shardling 14y agoAnd importantly, still work on browsers that don't specifically support asm.js. They'd be slower, because they wouldn't be taking advantage of the available optimization, but the code would still run.
- pcwalton 14y agoBecause backwards compatibility is really important. x86, the Windows API, TCP, IPv4, and Unix (compared to Plan 9) are all examples of things that are full of cruft, but they persist because they have the right survival characteristics. Besides, all it really comes down to is that the bytecode format has a weird encoding when sent over the wire. That's OK. You can view it as isomorphic to a format with a more natural encoding if you'd like; such a "disassembler" would be trivial to write.
- skatepark 14y ago> Because backwards compatibility is really important. x86, the Windows API, TCP, IPv4, and Unix (compared to Plan 9) are all examples of things that are full of cruft, but they persist because they have the right survival characteristics. All of those things were also incredibly successful at what they did. JavaScript and the DOM have not been incredibly successful at turning the browser into a first-class application development platform. This is for many reasons; network performance, CPU performance, the difficulty of composing rich APIs, the lack of cleanly defined re-usable widgets and libraries (eg, the non-suitability of the DOM), the difficulty of interacting with the host. Given that, why not start fresh for targeting applications? Leave JS in place, let your system target it as an output format for backwards compatibility, and -- finally -- clean up the massive cruft of the web as an app platform. Discarding decades of experience in producing effective consumer applications on the desktop (and now mobile) is foolish.
- samth 14y ago> JavaScript and the DOM have not been incredibly successful at turning the browser into a first-class application development platform. Seriously? From where I stand, it looks like browser-based applications are destroying the desktop-based software market with alacrity, and are coming for mobile. And also that major vendors like Google and Microsoft are shipping desktop platforms where JS (and sometimes the DOM) is a primary way of developing applications. The browser as application development platform is one of the two most important developments in software development in the last 20 years. That looks "incredible successful" to me.
- deleted 14y ago[deleted]
- azakai 14y agoNo one is saying (a+b)|0 is pretty. If you care about syntax, you would probably use something like sweet.js to make a macro for it or something like that. asm.js is not concerned with pretty syntax. It just takes the existing type of code emscripten and mandreel have generated for a long time now, and writes a formal spec for it. That's useful to get code to run faster. That's it.
- coldtea 14y agocitation needed
- sultezdukes 14y agoWould you be happier if COBOL was the lingua-franca of the web? No dig on Javascript (always had a soft-spot for prototypes), but at the end of the day we have different languages for a reason.