7 ms·
JavaScript is the future...maybe
- egeozcan 14y agoAuthor has some good points. What I don't like is this superficial "the future" label. Hopefully, "the future" won't be about just one technology. In my opinion, it should be more about using the right tool for the right job. Even though I'm a big fan, it's obvious that JavaScript is not the answer to all of you casual programming questions, let alone the very complex ones.
- FourthProtocol 14y agoAs far as JavaScript goes he's not off the mark. The thing that saddens me a bit is that it's yet another post about a particular language/technology/thing. No language/technology/thing is better than another. It may be better than another in a particular context. This is as true for Android as it is for Visual Basic and Arduino. While this is obviously my personal opinion, I think the industry as a whole might benefit a lot more from a post that discusses the pros and cons of building a solution that targets say, the web, a phone, tablet and a desktop. And how such a solution might do authN and authR, synchronise data using store/forward, work in an offline scenario (aeroplane, underground, Gobi desert...). Talking about specific technologies in such a context is useful. It is even more useful when considering environmental factors such directories, monitoring software, privacy, advertising and so on.
- lmm 14y ago>No language/technology/thing is better than another. It may be better than another in a particular context. This is as true for Android as it is for Visual Basic and Arduino. Disagree, strongly. Progress exists. The languages of today really are better than the languages of 20 years ago. Android really is better than winCE (and this is speaking as someone who was a fan of winCE when it was the best thing available, and spent a fair amount of effort compiling apps for it), not just in some situations but overall.
- FourthProtocol 14y agowinCE today is far superior to Android when creating an app that relies on Active Directory. Similarly, whilst LINQ may represent progress in that it makes querying XML, an object model or SQL Server easier, it's terrible when the requirement calls for a complex data model that bears little resemblance to the in-memory representation required by the app. That's what I mean by context.
- PommeDeTerre 14y agoNo language/technology/thing is better than another. It may be better than another in a particular context. I don't really buy into this reasoning. If a given language is worse than every other in almost every context (the "global" context, if you will), then it's clearly an inferior language relative to the others. JavaScript does exhibit this. It has exactly one thing going for it: it's the only scripting language widely available in web browsers. Aside from that, it's inferior to most other languages in almost every respect. Its syntax is mediocre. Its semantics are inconsistent and often outright confusing. It's missing critical features that are essential for anything but the smallest-scale development. Its performance is only just somewhat poor today, due to a huge amount of effort from Google and others, otherwise it was downright abysmal in its early implementations. Its libraries are more bandages for its numerous problems, rather than tools that empower developers. The supporting tooling is quite bad (Chrome's developer tools or Firebug don't compare to a real debugger, for instance). The community leaves a lot to be desired, especially given the high amount of ignorance and the extremely bad "advice" that is passed around so often by its members. We shouldn't be politically correct when it comes to technology. Some programming languages are worse than others, and we shouldn't shy away from saying this. JavaScript is an inferior language, like it or not.
- rohern 14y agoHear, hear! It has exactly one thing going for it: it's the only scripting language widely available in web browsers. Please let us change this. We are marching into the future heady with ambition and the common tool is JavaScript. This is a sad state of affairs.
- MJR 14y agoIt's missing critical features that are essential for anything but the smallest-scale development. What in your opinion is smallest-scale development? Millions of users using your application each year? Do we need web apps to support billions of users each year now? JavaScript is the most superior scripting language widely available in web browsers. Until there is an alternative it cannot be an inferior language because there is nothing equivalent on which to base a comparison.
- runaro 14y agoIf you look at the definition of "good" in Noah Webster's American Dictionary of the English Language, it will say "fit for a particular purpose" to say that nothing is any better than anything else is to ignore purposes.
- krutulis 14y agoI'm baffled by people's obsession with finding The One Programming Language. Would the world be better off if everyone spoke and thought in only English?
- amouat 14y agoI agree with your sentiment, but there is still a lot to be said for being able to use the same language on the server and client within a single application. I'm currently investigating ClojureScript for this very reason.
- PommeDeTerre 14y agoWhy do so many people consider using the same language on the server and on the client to be such an accomplishment? We had exactly that situation for many years. We'd write our server software in C or C++, and we'd write our client software in C or C++. A bit later on, and we saw Java become popular. Soon we were writing server-side code in Java, and accessing these servers using client apps written in Java. Some time after that, we saw people and organizations more in the Microsoft camp doing the same with VB.NET and C#. It's only with the relatively recent rise of web apps, and the inflexibility brought on by JavaScript being the only viable scripting language supported by the major browsers, that we've seen this issue arise. Having to use JavaScript on both the client-side and server-side shouldn't be seen as beneficial in any way. It's actually just a very negative side effect of JavaScript being the only option for client-side web development.
- amouat 14y agoI wouldn't use the word "accomplishment"; you're right - it's a side effect of JavaScript being the only option. But why complicate things with multiple languages if you can use one? Then all developers can understand and edit the codebase.
- stingraycharles 14y agoJavascript isn't the only language you can develop web applications on, in the same sense that assembly isn't the only language you can develop server software on. Javascript is what all browsers natively speak, and if you want your language to be understood by a browser, you must compile it down to javascript. The same can be said about assembly: it's the language that all CPUs speak, and if you want your application to be understood by a CPU, you must compile it down to ASM. In this way, you can see javascript as the bytecode of the internet. So this shouldn't be seen as something negative: it's great, actually, that javascript is evolving in this way. It will allow for more flexibility: you can write your server software in clojurescript, your client software in coffeescript, and still share some common libraries for functions you need to call on both client and server.
- forgotAgain 14y agoFrom reading the post it seems that JavaScript is the future if Microsoft supports it.
- anonymouz 14y agoI find the gray on gray-stripes very straining on my eyes and stopped reading. http://contrastrebellion.com/ http://contrastrebellion.com/
- killahpriest 14y agoAgreed, but as a short term solution http://www.readability.com/addons http://www.readability.com/addons.
- themgt 14y agoAgreed, maybe. All this "the language/platform is just a tool, become a better carpenter" stuff is too clever by half. If you haven't played with CoffeeScript + socket.io + express + etc recently, I'd highly recommend doing so now. I'm in a similar position of looking at node.js a year or two back and thinking "this has promise", but gave up after hitting wall after wall, four layers of callback-clusterfuck down, trying to do anything real. But things have changed. The combination of the crazy stupid money Google et. al have poured into VMs with payoffs on the client and server-side, the scalability of event-driven coding, the rapidly evolving breadth and quality of the node.js ecosystem, the modern powerful feel of CoffeeScript, and the slick simple abstractions provided by socket.io (why are there not compatible server-side libraries for other platforms?!), really are starting to give JS that Yegge "next big language" feel. If you'd told me 5 years ago there'd be serious companies replacing nginx/apache with a dynamic reverse proxy written in javascript, I would have laughed in your face. Now it's reality.
- programminggeek 14y agoUm, JavaScript is cool and all and you can use it in a lot of places, but for things beyond nontrivial apps, Node.js is going to be hard to scale to larger teams. Maybe that is a good thing. Maybe having a bunch of smaller services talking to each other is the way to go, but so far node hasn't solved the inherent callback soup problem.
- crazygringo 14y agoI worked on a Node-backed website with a team for a year, and we had no problem with callback soup. However, we did use IcedCoffeeScript which made dealing with callbacks a lot easier. But, scalability-wise, programming in Node was no different from any other language. What do you think makes it hard to scale?
- niggler 14y agoThis was a disappointing article. Rather than focusing on the strengths of javascript, the author is trying to sell TypeScript. There are many compile-to-javascript languages, but the real strength lies within javascript itself. In my experience, the JS ecosystem is really strong. v8 really pushed the performance bar, and the upcoming features (stuff like Buffers/Views for contiguous memory) make it possible to write programs that look and behave like C programs. The breadth and depth of nontrivial open-source projects and code segments is impressive, and the IRC communities are fairly vibrant. I tried an arithmetic benchmark to compare JS performance between node.js and vert.x. As it turns out, the JS implementations under node.js even smokes the Java implementations!
- jenius 14y agoI started programming with ruby, and was really pretty reluctant to move to less clean languages - it was just hard on my eyes when I was used to reading and writing clean and understandable ruby code. But javascript won me over in the end, and I now write most of my apps with node. Totally unrelated to hype or to this article or to anything -- the reason why was mostly the challenges that came with switching to js. The two challenges that particularly intrigued me were: - Making async code clean, readable, and manageable. As themgt mentioned, this is a really tough challenge. It took me months of going over and over my code, continually reading about promises and async flow control etc. to really "get it". And once I got it, it was really empowering, and the ability and choice to run pieces of code in parallel or in series (which you don't get at all with sync languages) is something I'm now very reluctant to give up. - Writing code that has more syntax (braces, semicolons, low level loops, etc) and still making it clean and readable is a challenge that I think has improved the way I write all code for the better. It's so much more difficult to make javascript adhere to the cleanliness standards that I'm used to with ruby that I spend a lot more time thinking about how elegant and readable my code is and optimizing it for that purpose, which I think nobody would argue is a great thing for a developer to work on. So without comment on whether javascript is "the" language or "the future", which, as other people have mentioned, is silly to speculate, I would strongly recommend picking up node and using it to build a few apps, if just for the purpose of dealing with the two points I mentioned above : )
- atomical 14y agoWhat important/high traffic sites run off Node?
- kodablah 14y agoIt might seem trite, but a CoffeeScript + TypeScript combination would make me very happy. I have been developing in TypeScript recently because the IDE support is awesome (and I'm a static typing enthusiast). Now if I could just reduce the verbosity and save some keystrokes...