Why JavaScript Is Doomed

Update: I posted an update to this post where I talk about why I was wrong about JavaScript here. We are all human, we all make mistakes. I’m leaving this post and not deleting it, because I think it is important to learn from our mistakes.

JavaScript is a bubble.

Just like the housing bubble.

Just like the .COM bubble.

Girl with big bubble

And just like any bubble, the JavaScript bubble is bound to pop.

Sure, JavaScript is everywhere.  It appears to be growing at a rapid pace.  But I’m willing to bet that we are getting close to a complete reversal that will throw JavaScript down from its throne, shattering its JQuery scepter with it.

JavaScript never really made a comeback

Part of the problem with JavaScript is that it’s propped up on the back of another technology. See, JavaScript itself was rejected long ago. If JavaScript was a wonderful language to develop in, its wonders would have been praised years ago when it was first introduced. But I remember cursing JavaScript 15 years or so ago.  And I wasn’t alone.

Yes, I know it was a dark time, but recall, if you will, your pure hatred for JavaScript.  You know, before it was so cool.

Then how did this ugly wart of a language become so popular?

Well, you see, it was this little library called JQuery. JQuery solved a very real and annoying set of problems that wasn’t around when JavaScript was first invented: manipulating the DOM and making Ajax calls.

JQuery was basically designed to make JavaScript possible to work with. Before JQuery, DOM manipulation and Ajax calls were difficult. After JQuery, they were easy.Cactus treated with a bandaid

So JQuery ended up being this big band-aid that covered up all the ugly JavaScript code you didn’t want to write and made doing what you wanted to do much easier.

You may disagree with me on this point, and you are welcome to do so, but even if JQuery isn’t the reason JavaScript is so hot right now, do you honestly think JavaScript would have become so popular if JQuery never existed?

The problem with JavaScript

I want to love JavaScript. I really do.

I know it doesn’t sound like I do, but just like I can’t make myself like sweet potatoes—even though I know how good they are for me—I can’t like JavaScript.2091023-051

I’ve tried many things. I’ve put some butter and brown sugar on a freshly baked sweet potato. I’ve doused it with hot sauce. I’ve even pretended it was a regular potato and dressed it up like one. But, the fact remains, I just don’t like sweet potatoes. It’s something in their very nature that I despise.

I’ve tried the same thing with JavaScript. I’ve added libraries that make it much sweeter, like JQuery and Backbone.js. I’ve used tools like CoffeeScript and TypeScript to try and pretend it was a more palatable language. But the fact remains, JavaScript has some things that are fundamentally wrong with it that no amount of covering up or pretending will fix.

If JavaScript wasn’t so ugly at heart, then a book called “JavaScript, The Good Parts,” probably wouldn’t be the #1 best-selling book on Amazon for JavaScript, the #3 best-selling book on web development, and the #4 best-selling book on software development, would it? (Go ahead and check it out for yourself if you don’t believe me.)

I don’t really need to tell you again what is wrong with JavaScript. If you use JavaScript, you know. If you don’t use JavaScript, just search for “why JavaScript sucks” on Google and you’ll get plenty of answers.

The point is, unless we are going to be completely disillusioned about it, we can probably all agree that JavaScript is not the greatest programming language that was ever created, and that it has some glaring weaknesses.

My point is not to bash JavaScript

Before you pitchfork me, I want to clear a few things up.

I don’t hate JavaScript.

I don’t suggest you shun JavaScript and go off with me to a floating island in international waters where we will build a new internet, one that isn’t infected by JavaScript.

I actually use JavaScript.
Not only do I use JavaScript, but I have to use JavaScript and so do you.

And if you are smart and want to have a good career in software development, you’ll take everything I am saying with a grain of salt, knowing that I could be completely wrong.

If you are smart, you won’t just dump JavaScript out the window, betting that it will fail, because it might not. It might grow to become the one universal language that replaces all other programming languages. JSON sempiternus!

But, on the other hand, if you are smart, you won’t put all your eggs in the JavaScript basket either. Even though the world seems bright and cheery for JavaScript developers today, it also seemed equally bright and cheery for Blackberry devs not too long ago. And look how that turned out.

And if you are solely a JavaScript developer or you really like JavaScript, I sincerely don’t mean to offend you, but I offer this piece of advice: You are not the technology you happen to be using.

Trust me, if you’re a good developer, you’ll still be a good developer even if JavaScript goes away.

What is actually awesome about JavaScript has nothing to do with JavaScript

No one gets up in the morning and says, I want to have bamboo shoots shoved under my fingernails. (Ok, well maybe some people do, but those guys are still writing object-oriented Perl.)

Yet, at the same time so many developers get up in the morning, fire up their IDE—or excuse me, lightweight text editor which has 50 plugins installed to give the capabilities of an IDE, but is not an IDE—and write JavaScript code. Why do they do it, unless they think JavaScript really is awesome?

It’s because all the stuff around JavaScript and built with JavaScript and on top of JavaScript is actually pretty awesome.

As much as I loathe JavaScript itself, frameworks like JQuery, Durandel, Backbone, Angular, Knockout and more are pretty darn cool.

Not only that, but JavaScript is everywhere!

Every browser is a JavaScript interpreter. Every notebook, PC, tablet, and smartphone can run JavaScript.

There are even cool server technologies, like Node.js that are built with JavaScript.

JavaScript runs in the browser, it has plenty of hooks in it for manipulating the DOM, and it has tons of cool libraries that give you the power to do awesome things, what’s not to love?

This is the part where I tell you what is not to love

holding hands

What’s not to love, is that all of that stuff has nothing to do with JavaScript itself.

Take JavaScript away and replace it with another programming language and you don’t really miss anything.

Ever seen a movie star without her makeup? Makes you realize that any halfway decent looking woman could be a movie star, with the proper styling.

The same goes for JavaScript. It is a language that has been dressed up to look like something it is not. What we all love about JavaScript is not the language itself, but all that makeup that has been caked on, a little bit of mysterious seduction it infers, and the stylish clothes it wears.

But, what is starting to happen already, and what I believe will continue to happen, is that people will start to get sick of that caked-on makeup look and high maintenance personality of JavaScript.

All those frameworks were really useful at first, but they are becoming such a huge mental burden. Are you worried about what JavaScript framework you need to master and keeping up with what is the hot one to use on any given day? I am.

You can only build so much on top of something else, before you have to wipe the slate clean and start over.

I don’t know when this will happen with JavaScript, but I am pretty sure it will happen.

It is very likely that a language like Dart, that can do everything JavaScript can do and more, will likely someday dethrone our web development king.

JSON sempiternus!

By the way, check out my new experiment on YouTube, going to release a short video each week.  Let me know what you think.

Getting Started With a Programming Project
About the author

John Sonmez

John Sonmez is the founder of Simple Programmer and a life coach for software developers. He is the best selling author of the book "Soft Skills: The Software Developer's Life Manual."

  • Erik Gross

    Great video, John. Please make more. I have friends who want to get into development, or understand a bit more what it is I do, and this is a great description of one of the most important elements of development.

    • jsonmez

      Thank you. Appreciate the comment. Planning on doing a video once a week.

  • http://twitter.com/timalmond Tim Almond

    Looking at Dart, it seems to be quite similar to Typescript in many ways (which is, I think a well-thought through solution to improving Javascript). I’ve been using it for a while and I find TS far more tolerable than JS.

  • Florian Bösch

    Javascript won’t go away. It’s just that in the future of Javascript, nobody will do javascript. I’m a javascript programmer, I haven’t written a line of javascript in a year.

    Wait, what?

    Yes, see, it is pretty ugly and unpalatable, and there is a pleathora of preprocessors for it. I like Coffeescript, but there’s no lack of alternatives in that space, but that leaves us just with two teensy problems:

    1) Debugging coffeescript still sucks, you have to browse trough the generated JS
    2) Targeting JS from languages like C++ (or Java, gasp) or C is slow, like ridiculously slow.

    Fortunately both these problems don’t matter. They don’t because two awesome things have happened.

    1) We’re having source-maps now, you can translate any other language to JS and get stack traces and debug it in the language you wrote it. You won’t look at javascript anymore. It’ll still be javascript, but you won’t be forced to look at it. Much the same way you won’t look at x86 native code (most of the time) to debug your C program.

    2) We’re going to get asm.js, which is a very ugly but typesafe subset of Javascript that you can compile straight to native code.

    So sure, javascript is dead. Long live javascript. Far as I know, most smart people stopped writing it long ago anyway, and now use whatever aglomerate of preprocessors to target it. And that is good.

    • jsonmez

      That is an excellent point! Great comment.
      My only argument would be that at some point the middle man has to get cut out.
      It is pretty hard to jump through the hoops to not write JavaScript only to compile to JavaScript.
      If browser compatibility weren’t an issue, certainly a different technology would be the solution. I just keep thinking that with Opera jumping to Blink and Google moving off off WebKit that we may see a clearing open rapidly which will allow for a change.
      Could just be wishful thinking though.

    • Kenan Sevindik

      I had several times called javascript as “assembly language of web” in my discussions related with RIA and after seeing your comment mentioning about those source-maps etc, I am pretty sure it is…

  • http://about.me/dillieo Dillie-O

    I’m guessing it will ultimately boil down to what you can use to manipulate the DOM on a web page to server your dynamic needs. CSS3 helps to some degree with hovering and the like, but replacing content is another thing.

    I’ve also been interested in CoffeeScript, that comes as the new default when building Ruby on Rails apps. Ultimately though it just translates back to JavaScript, so maybe we’re in the same boat. 8^D.

    Thanks for your insights!

    • jsonmez

      Your welcome. Appreciate the comment.

  • http://blog.wekeroad.com robconery

    Hi John. Knowing you “virtually” as I do and having heard you on Hanselminutes, etc, I have to say I’m shocked at this post.

    Your title is powerful and your opening lines are nothing less than sensationally inflammatory to a good many people. But you spend the latter half of your post under the title “My point is not to bash Javascript”.

    I hate posts like that. Make your point, stand on it, don’t waffle. Your hyerbole is condescending and rude. This whole post makes me feel like you’re manipulating me and everyone who comes across your title and that’s below you dude.

    That aside, some thoughts for you in response:

    Javascript did indeed jump to the fore due in large part to jQuery AND Crockford, at the same time. Then Node came along and things went nuts.

    I don’t think it’s accurate to say “Javascript was rejected long ago”. Not at all. It’s been universally reviled, but from what I understand it’s the only language you can use to reliably instrument the DOM. Always has been.

    If I could sum up your post using small chunks of your post:

    “… we can probably all agree that JavaScript is not the greatest programming language that was ever created, and that it has some glaring weaknesses.”

    Right. Check. It’s why CoffeeScript/TypeScript exist and why Crockford wrote what he did etc.

    Your follow on points seem to be “I’ve tried to use it and I don’t like it – it will hopefully be replaced by Dart”.

    I think that would be great. The problem is that the browser makers can’t seem to agree on implementations of anything (video codecs, standards, etc).

    While we’re waiting for that to happen… it might be a good thing to embrace and adapt if you’re going to work in the web space. Or on the Microsoft stack. Or maybe with Node? I’ll agree that it’s a nutty learning process, but it’s not that hard now is it?

    • jsonmez

      Hmm, I can see your point about the title and then the “my point is not to bash JavaScript.”

      I can tell you, honestly, that I didn’t intend mislead.

      The whole idea behind the post is that I think JavaScript will be dethroned, because there is just too much piled up on top of it.

      Web developers writing JavaScript code today don’t actually write JavaScript, they use frameworks.

      JavaScript has become a DSL factory to some degree.

      There is a contradiction within myself at the same time between disliking JavaScript, but liking all the cool things that can be done with it.

      When I really think about what I like, I find that it has nothing to do with JavaScript itself, but what was built on JavaScript.

      Like, I said in the post, I know I could be wrong. I just see JavaScript as a bubble right now.

      Anyway, thanks for the feedback. Sorry you didn’t like the post.

      Perhaps I should have said “My point is not to bash JavaScript developers.”

      • http://weblogs.asp.net/bleroy Bertrand Le Roy

        “Web developers writing JavaScript code today don’t actually write JavaScript, they use frameworks.”
        Not true. Many people write direct JavaScript (more and more so as Vanilla Web becomes a viable option). This sounds like “.NET developers don’t actually write C#, they write BCL (or MVC, or WebAPI, or you name it).”
        Also, jQuery was necessary not because JS sucks, but because the DOM sucks. jQuery helped us find the awesome parts in JS by showing what the patterns could look like.
        Looks like JavaScript is not a language for you, but that’s about it. That’s fine. I can’t stand Ruby myself, but I don’t go around saying that it’s dead.

        • http://twitter.com/MonocularVision Michael McGuire

          “Also, jQuery was necessary not because JS sucks, but because the DOM sucks.”

          THIS. jQuery had nothing to do with JavaScript and everything to do with browser differences in implementing things like AJAX and the DOM.

          While there are some parts of JavaScript that most agree were not well thought out, to toss the whole language aside because of a few bad decisions seems strange.

          I think once I decided to learn JS for what it was, rather than trying to understand it through the lens of my existing class-based OOP understanding, I learned to enjoy it.

        • jsonmez

          Well, JavaScript certainly isn’t dead. But, still don’t think it can last forever.

          I suppose as more capabilities become standard in the browser, we’ll see libraries like JQuery become less necessary and we already have to some degree (especially on mobile, where JQuery can be bloat.)

          But, at the same time, try and write a complex web application, especially a SPA, without using any JavaScript frameworks. Not saying you can’t do it, just saying it is pretty painful.

          Good point about the DOM issues bringing about JQuery. I’ll still maintain the JavaScript wouldn’t have gotten popular without JQuery though.

          • http://www.facebook.com/thastark Matt Stark

            Writing a .Net app up from TCPIP is pretty painful. That’s why there are frameworks layered on top.

          • SilentLennie

            The only reason we are able to do all these things to Javascript is because Javascript is as flexible as it is.

      • http://weblogs.asp.net/bleroy Bertrand Le Roy

        Another thing to notice is that all the successful JS frameworks are strongly idiomatic, so no, they wouldn’t be anywhere near what they are if they had been built in another language.

        • jsonmez

          That is a good point. I can’t argue with that.

          • Japa Alekhin Llemos

            see what i mean?

      • Japa Alekhin Llemos

        Hmm let me just do an analogy here: “Web developers writing JavaScript code today don’t actually write JavaScript, they use frameworks.” Are you saying that this post isn’t written using “the alphabet” because you used a language called English. To clarify my argument, the alphabet is like a programming language, and the English language is a like a framework built on top of the alphabet. There are also other languages built on top of the same 26-letter alphabet. When writing a web-app using CakePHP (a framework for PHP) are you not writing still in PHP? The main point here is that even though you are using jQuery, you are still writing JavaScript code. Because what part of jQuery isn’t JavaScript?

        • jsonmez

          That is exactly my point. When the abstraction becomes more powerful than what it abstracts, what it abstracts is becomes much less relevant.

          We normally don’t say that people write in alphabets, we say they write in English.

          Even when I am writing unit testing code, many times I am not actually writing C#, even though the code is in C#. Instead I am writing another language that is built on top of C# that happens to be composed of C#, because the abstraction has overpowered the underlying idea.

          • Luiz Felipe

            If this is correct, javascript will go way of ‘assembly’ of the internet, and this is what is happening to it. The better tools we have like coffeescript, less we have to mess with it. Perhaps only they aren’t so developed like the tradicional compilers, but when they do it, no more javascript to bother you, just like now we have to write little assembly. I mean, some programmer have to write the assembly, but these are niches, majority of code is compiled today, even javascript are compiled by browsers.

          • jsonmez

            Exactly, I can see this happening. And if it does, to me it is the same as JavaScript being “gone.” Because it may exist, but if you don’t code in it, it doesn’t matter.

          • http://www.facebook.com/elementplace Josh Hoffman

            I see this theme show up a lot in your comments. If you like the libraries and if you don’t code in JS it doesn’t matter… than why wish for something ‘better’? It sounds like what you are predicting has already come true.

          • Japa Alekhin Llemos

            “That is exactly my point. When the abstraction becomes more powerful than what it abstracts, what it abstracts is becomes much less relevant.”

            I can’t write jQuery without writing JS, jQuery IS JS. I also can’t write English without using the alphabet. You usually “abstract” something to make it powerful, does that mean all abstractions makes what was original irrelevant? Try to write jQuery without using any JavaScript. You can’t because it was built on JavaScript.

            “We normally don’t say that people write in alphabets, we say they write in English.”

            Yes we do, before we write in English (or any other language using the alphabet) we are first taught about the alphabet. Try to flash someone’s brain and remove the alphabet from his knowledge (since according to you, it’s now irrelevant because of the more powerful abstraction) and I assure you he won’t be able to read/write English. Same with JS and jQ

            You can’t say you’re writing C# code while you’re not actually writing C# code.

          • jsonmez

            You can take the API of JQuery and the idiom of it and use it without JavaScript.
            You could do the same with English using sounds instead of “alphabets.” Think about that one for a second ;)

          • Japa Alekhin Llemos

            Yes there’s a jQuery-like API for PHP, it’s called phpQuery. It’s not jQuery anymore, it’s phpQuery. jQuery is JavaScript, phpQuery is PHP.

            You remove JS, you lose jQ. Even though something else might work exactly like it abstracting another technology, it’s not jQuery anymore.

            My only point is that abstraction doesn’t make the original irrelevant, it makes it stronger/more powerful!

      • Tony Gingrich

        I have to disagree with the notion that JS is somehow deficient or otherwise becoming outdated.nnMy career is that of an “applications” developer, as opposed to “web” developer. That is due to the fact that I would rather develop an interactive and robust solution than a (please forgive me) “flyer”. So, I started off with .Net, Java, and C++, and focused primarily on desktop and systems software. That was until “Web 2.0” was coined.nnPrior to the “Web 2.0” revolution, I had only dabbled just enough with JS as needed to produce occasional roll-over effects in web pages. At that time, I had a very poor opinion of JS; first, because I had never truly “learned” it; and second, because all I had to go on were copied/pasted crappy examples traded across Stack Overflow and already in use within existing web projects–poorly formatted, complete ignorance to data types, and glaring syntax errors that SHOULD HAVE caused browser crashes (can’t tell you how many hours I spent confused by simple missing semicolon terminators).nnIn 2011, I finally received my first task of a web-based application. Actually, it was only a module to be embedded on a static web page. The client wanted a Google Earth map with way-points being dynamically generated from an external datasource. Not very interactive, but it was more than enough enthusiasm to throw me over the edge to learn JS. I was very impressed with the language; so much that, it was the first time I acknowledged JS as a language, and not some “hack-code” used to create petty presentation effects. The language and its syntax is utterly simple, and it was loosely-typed; yet, profoundly powerful.nnI ran into several problems, however. The first was the fact that not all browsers, at the time, supported Google Earth. In such cases, the client wanted to fail-over to Google Maps. The 2 APIs had some similarities, but their differences were profound enough to seeminly require a separate JS library, each. Well as an applications developer, I wasn’t anxious to embrace the notion of maintaining 2 libraries for the same subset of top-level functionality. So, my initial JS learning curve was served by writing a wrapper API which included its own browser detection and abstracting/exposing both the Earth and Maps APIs through a single object. However, this first issue was not inherent to JS or to web applications. In virtually all aspects of serious software development, wrappers are often written to solve similar problems. This had no impact on my new-found enthusiasm for JS.nnHowever, here’s where I believe the author could be misled about JS: the second problem I encountered with that first project–browser compatibility. At the time, jQuery was around; however, I was fresh in the learning curve of JS and was reluctant to add more to my plate by throwing jQuery onboard. Consequently, I wrote my own “native” JS AJAX calls to Google’s APIs. So far, so good. I plugged right on along, using FireFox as my development and testing browser. Life was absolutely awesome…until the hour came when I was finally ready to test against other browsers, specifically Internet Explorer. CRASH! IE didn’t have an HttpRequest object defined in its JS runtime. So, there went another round of browser detection, to determine if I needed to use Microsoft’s ActiveX object, or the other browsers’ HttpRequest object.nnThat was not the only cross-browser incompatibility. There were the other usual suspects: innerHTML vs innerText, when or when not to use a textNode, and a host of others that I can’t immediately recall.nnThis is why jQuery came in handy. jQuery was NOT required for DOM manipulation. JS served this purpose very well, long before jQuery. What jQuery DID do was abstract DOM manipulation and AJAX to cross-browser compliant objects, encapsulating browser detection and allowing developers to finally write single libraries that could be reliably executed on the “Big 5” browsers. There was/is also MooTools, and a wide array of other JS frameworks devoted to the same tasks.nnAll of the above to illustrate my point: JS gets a bad reputation for incorrect reasons. Differences in browsers’ runtime environments are largely to blame for the pain of writing native JS, and for the perceived necessity of frameworks such as jQuery.nnBut what about AngularJS, Knockout, etc…? While those frameworks do provide abstraction, cross-browser compatibility is not the motivation for their development cycles–and by extension, neither is JS. Angular was written to bridge the design gap between HTML for presentation and web applications. I think AngularJS’s Introduction page states it very well: “Angular is what HTML would have been had it been designed for applications.” This is arguably true for all similar frameworks.nnAs you can see, JS is not deficient or obsolete. HTML could certainly use an overhaul, in order to reduce/eliminate the demand for Angular-ish frameworks. And, browser vendors could do a great deal of good service to development communities by finally abolishing their relics from the “cold war” days of 90’s browser wars, and establishing strict adherence to W3C standards.

        • jsonmez

          Wow, thanks for the in-depth and insightful reply. You make a lot of very good points.

    • Junaid

      #Robconery……… You represented me Thanks :)

  • Santosh Joseph

    I was just having this discussion the other day. From my experience I recall Perl back in the day was very popular with tons of modules…and then it started to decline (2 reasons for the decline..perl 6 couldn’t make it out of the gate and python/ruby are better scripting languages).
    But for the Javascript bubble popping…it will more of a slow leak if Dart or Typescript picks up traction. If not the Javascript bubble will still keep growing.

    • jsonmez

      I could definitely see that is might be a slow leak instead. That is probably more likely. Good point.

  • http://Typecastexception.com John Atten

    Hmmm . . . I follow your reasoning, to a point. I agree that unadulterated JavaScript is UGLY. But then, so is unadulterated assembler, and we’ve been building abstractions on top of THAT for most of the history of computing.

    Jquery and the various frameworks represent a similar abstraction. Coffescript and (even more so) Typescript act almost like compilers, recieving a more coder-friendly input, and outputting (from what I understand, anyway) Javascript which is often better than one might write themselves. Again, kind of like C or C++ –> Assembler –> Machine code.

    I would be great if all the funkiness (“quirkiness” to some, like it’s “cute” or something) could be removed, and then rebuild a more robust language on top of it.

    I DO take your point. There is so much happening with the many various frameworks, and often (to my rather novice view, anyway) they create what feels like a fragile development experience. But computer programming as a “trade” is still young, and the architecture of the web and web development is younger still.

    You make very good points throughout your article, but I do believe calling Javascript a bubble might be going a bit far.

    • jsonmez

      Heh, yeah. We’ll see. Like I said I could be wrong.
      But, I think Google is up to something with the combination of Blink and the new high end Chrome book.
      I think it is possible that Blink replaces Web Kit and with it Dart suddenly is everywhere.

      • http://Typecastexception.com John Atten

        That would be cool . . :-)

      • SilentLennie

        It isn’t gonna happen.

  • http://twitter.com/Livesoftware Livesoftware

    Am I the only one who likes writing pure javascript + jQuery?

  • Liam McLennan

    Your post doesn’t address the title question, however, here are some nice things about JavaScript, to rebut the point you didn’t make:

    – first class functions
    – powerful and simple reflection and meta programming
    – fast, ubiquitous interpreters

  • bakaohki

    Javascript will still be around when Dart will be long gone – because the simpler, more widely spread virus wins. It’s like a cockroach, or maybe cancer – you can’t fight it unless you coordinate all that effort, and that will not happen soon. Hell, it never happened, it never will.

  • Pingback: JavaScript is doomed (and it stinks badly) | Aventuras en .NET()

  • Avron Polakow

    My sole criterion for using a language over the last 43 years of programming is CONTINUITY. My 40 year old COBOL still works!! and most of my javascript of 14 years ago works flawlessly even graphics without svg, vml or whatever (see the maths graphs at avronp.com in the javascript section).


    Compare to my silverllight apps (eg GIS maps) which after a bare 5 years cannot be viewed on this MS SURFACE. Great language but zero on continuity.

    Besides which, after having come from OO programming, javascript is fantastic with OO if you know how to use it, and objects are very simple to learn and manipulate.

    Without frameworks I wrote my own Ajax interface (using XMLHttp) and Generic DOM access (both sniffing and functional checks) – which only required expansion as touch became available – almost 12 years ago.

    As far as I know Browser programming is at present limited to two languages: javascript and XSL. As for graphics after Flash and Silverlight, it’s either HTML5 canvas or svg. Both are only programmable with javascript. All that while back I used VBScript, but that’s prehistory.
    Most procedural languages are equifunctional so what do I care for all the doilies and antimaccassars that they have been covered with? We all have our quirks.
    Avron Polakow

    • http://www.facebook.com/elementplace Josh Hoffman

      I wonder why CONTINUITY is so important. Sure your COBOL might still run but so what? Maybe 20 years ago when software iteration happened over multiple years and could only be released with physical distribution that makes sense. Now, by the time the software is written it is already days from obsolescence.

  • Dennis Jakobsen

    JavaScript got a bad rep. from all the bad browsers not having complete or identical implementations. THAT made DOM manipulation hard. That is not an issue anymore. JQuery has lost it’s purpose now that old crap browsers like IE are gone. It DOES have easy CSS like selectors and a LOT of frameworks depend on it, so it will probably be used for at least another decade. JavaScript has no competitor, comparing it to a blackberry is ridiculous.

  • boubiyeah

    JS is pretty crap but it’s not bad enough that people want to throw it away, at least for now (It could be worse! Imagine a language without closures like Java! haha). You think dart is better? Meh, it’s a bit of an “outdated from day 1” gimmick… I’d rather have a dynamic language than a language with a crappy type system (Check Haskell or Scala for an example of good type systems) Though, having a polyglot web would be saner, but right now the big players are not willing to pursue that road.

    That said, all the excitement, ecosystem, conferences about Javascript always leave me a bit puzzled… I mean, it’s just a toy language! Even the changes that will come in years from now (ES6) won’t change that. Our industry showed that it’s not always the best technology that will win and stay but in the case of Javascript for web development… Well, there just weren’t any serious competitors lol. What’s really carrying Javascript right now is the outstanding job the browser implementors have been doing, making the web a sound platform for application development.

    Javascript isn’t good but whether it’s doomed is way beyond you or me. Will Microsoft still exist in 50years?

    • jsonmez

      Will it exist in 10? I’m not sure, since the farm is bet on Windows 8 and WP8. The world is changing rapidly.

  • http://www.facebook.com/marty.galyean.5 Marty Galyean

    I’ve been around the coding block several times. There is a perpetual urge to churn code and development environments and languages in the name of “fixing” things, but the solutions, while creating a huge new market in books, blogs, seminars, and such, nearly always end just as useless. It typically isn’t the language that is the problem. It is the code and lack of vision and money to “do it right”. I’m so weary of “code churn” that I am very reluctant to be involved in that drain in our economy(ies) any further. If I see yet another layer of virtualization or abstraction on top of a previous one in lieu of actually fixing the underlying layer I’m going to have an aneurysm. There is far too much “hipster fashion trend” in programming and not enough “engineering”.

  • http://www.adrianmiu.ro/ Adrian Miu

    There’s a little theory called “evolution” that would explain why javascript will not go away very soon. And neither is PHP. Of course, some cataclismic event may whipe out all the dynosaurs (ie: the ugly languages we love to hate) but evolution shows animals that appear to be more fit for a task end up sooner.

    The death of javascript will come when developers (of browsers, applications etc) will decide to kill it. If you’re willing to bet you know how the swarm of programmers and CEOs of the world will behave, go for it.

    PS: Nostradamus was a fraud ;)

  • Simbosan

    The crying shame about Javascript is that it ever existed. Imagine an alternate universe where the browser scripting language was a serious fully featured maintainable language with the power to script a simple web page but also suitable for large enterprize code bases… Lets call it Uberscript.

    Just imagine that “server side uberscript” actually wasn’t so stupid as to make you want to punch walls.

    We use Javascript because we have to, we force ourselves to like it in order to live in the current reality with minimal pain.

    But it is still shit, and the longer we waste time band aiding it into usefulness the worse for the web and the worse for us. Let us have a new proper language for the web or a portal into the wonderful world of Uberscript

    • Jonathan Neufeld

      You’re on the right track. I want you to get mad. I don’t want you to protest, I don’t want to you riot. I don’t want you to write the W3C; I don’t know what to tell you to write. I don’t know what to do about the lack of tools, or late-bound type-less languages, or Microsoft or the crime in “get put post delete head trace options”.split(“\s”).forEach(function(method) { me[method] = function() { console.log(arguments); } }). All I know is that first I want you to get mad!

    • Sebastian Morkisch

      There was already an “Uberscript”. Most people avoided learning it. –> PERL

  • http://www.facebook.com/randy.long.7927 Randy Long

    As a codger code, my first IDE was an IBM 029 card punch, I see javascript as part of a venerable tradition. I’ve bet on superior technology that sunk like a stone — thinking of DECnet, VMS and the Amiga. I’ve come to appreciate that every situation is logical if viewed from the proper perspective.
    I’m happily moving to javascript while not abandoning c#. To me, it’s like going back to a primitive technology, like buying a ’45 Merc.
    I’m also going to be more careful. VS has saved me from myself many times. I enjoy coding, and using javascript seems to be the price of admission.

  • Andy Beak

    You haven’t discussed NodeJS at all. It’s getting increasing amounts of traction.

    jQuery is built on Javascript so how can Javascript be doomed if you replace it with something built on it? You didn’t discuss viable open source alternatives for client side programming, or how HTML5 has expanded the capability of Javascript with the canvas object.

    Dart is tightly tied to its vendor (Google) despite being OSS and compiles down to Javascript (which you say is doomed so I don’t see how Dart is not). Only Google has any plans to implement it, so unless your user is using Chromium your frontend won’t work.

    One of the awesome things about jQuery is that it smoothes out cross-browser compatibility issues. You’re going to need something similar for Dart when (if) each of the other big web players decides to implement it.

    You don’t like the syntax, so the language is doomed?

    • jsonmez

      The point is that if you build enough abstractions on top of something, the thing underneath because irrelevant and replaceable.
      When I am using JQuery and Knockout.js or some other templating engine to do JavaScript, am I really writing JavaScript anymore?
      At some point the API to the framework is much more important, so you can get rid of the middleman.
      Not only will this happen more, it has already happened, as JQuery is not needed anymore, in many cases, since browsers implement CSS selectors natively now.

      Google moved off Webkit and started Blink. Blink run Dart without compiling down to JavaScript. If Opera and other WebKit users switch to Blink, which is highly likely, all of the sudden everyone except IE runs Dart. This is a plausible thing, I’m not that crazy.

      Cross browser compatibility layer is becoming less and less important as the standard API across browsers is becoming much more uniform.

      • psan

        “When I am using JQuery and Knockout.js or some other templating engine to do JavaScript, am I really writing JavaScript anymore?”

        That’s like saying that using C# with .NET isn’t C# anymore. Every language has its libraries and that’s not the same as the language itself.

      • Adam Rackis

        “When I am using JQuery and Knockout.js or some other templating engine to do JavaScript, am I really writing JavaScript anymore?”

        Yes. Yes you are. You might as well ask “If I’m using WPF/WinForms/Silverlight/ASP.NET am I still writing C#?”

      • http://www.facebook.com/cyber0 Peter Boocock

        Cross browser compatibility will still remain a matter of importance until there are no other rendering engines to cater for apart from Blink with Dart scripting. It will be interesting to see how this develops. Will Firefox [nearly 30% of web users] take on a Blink rendering engine? Will Safari [OK – just 4% of users – remember that’s millions of computers] adopt that rendering engine? I think we are going to be faced with cross platform and cross browser compatibility issues for quite sometime. BTW, if you deploy any JS library you will still be needing to write some JS, albeit only the least amount required for the task at hand. You just won’t need to write that library that you’ve deployed.

  • brianm101

    To be honest if JavaScript is bad, jQuery is worse! It has the most horrible syntax and nearly impossible to read with out comments. jQuery development owes way to much to cut and paste for it to be safe environment. Its saving grace is its backwards compatibility – now being diminished with the latest release (not a good move!).

    What we really need is a compiled object orientated alternative to JavaScript, more like its c# or c++ cousins. Guess it won’t happen as JavaScript meets the criteria for success not elegantly, but in a way that is just good enough and popular enough.

    • jsonmez

      Yes, I agree. :)

      • http://gatesvp.blogspot.com Gaëtan Voyer-Perrault

        Given how much effort is going into C# and C++ to add more “javascripty” features like first class function and better syntax around async methods, I’m not clear about this direction.

        I honestly don’t think that a “compiled object orientated alternative” is really the right direction at all.

        Javascript in the browser is all about managing and responding to events that happen. Events like “the user clicked” or “I got data from an XHR call” or “let’s validate” that input”.

        And it’s very good at managing exactly those type of interactions. Is the lack of object orientation annoying? Sure. Is it damning? Not really.

        And hey, if we really want object orientation and static types and better compilation. We can all just use typescript. Right?

    • Paul Scott

      I completely disagree. jQuery is so much more than a wrapper that equalizes browser inconsistencies. It provides a much clearer, cleaner, and shorter code path than purely native code. And, it’s incredibly simple. Once you learn jQuery, you can look at code you’ve written years ago and instantly understand it. If you think otherwise, my guess is that you have not really learned or understood it.

      • brianm101

        Agree jQuery is more than an equaliser, as a library it’s got a lot of nice functionality, it’s just horrible in the way it has to be used, bad design at its best….

  • http://twitter.com/sujesharukil Sujesh Arukil

    I do not agree with anything you say in this blog (alright, I agree jQuery played it’s part in bringing people back to working on the client side, but Node.js has really taken it another level).

    I believe the world is moving towards the web and Apps (mobile, tablets, TVs, Gaming consoles… you name it). Your assertion that there are way too many things piled on Javascript and people don’t really write javascript, but use frameworks, it is like saying, people don’t write C# anymore, but are using frameworks like Web API and ASP.Net MVC.

    I am definitely one of those people who hated the maintenance hell JavaScript used to be. write your scripts anywhere, inline event bindings, global variable issues… the fact is, you are looking at JavaScript from your ability to conceptualize everything as OOPs. Unfortunately, the language was never meant to be OOPs.

    The Web technology is evolving. Today, ASP.Net MVC and Web API is cool, tomorrow something else will take its place. Not because these technologies or frameworks suck, but because it would be made better and easier to work with.

    Javascript is going through an evolution, as much as it has become a revolution. ECMAScript 5/6 standards and more to come, the future I feel is bright. Though I do feel it has a long way to go before it can become a great server side language (Node.js is stepping in that direction), it is a great language to work on the browser so long as you know how to. It is here to stay and anything new that will come, will come because there will be an absolute need for it and believe me, it will be with JavaScript in mind.

    • jsonmez

      Don’t get me wrong, the same is true of C# and many development technologies today.
      That is one reason why I have been really liking the language Go. It has built into the language many things done currently with libraries.
      This is how programming languages evolve.
      First there are languages; then frameworks are built to make the languages more capable; then the features from the frameworks are built into the next generation of languages.
      You may be right though, we’ll see. Thanks for the comment. :)

      • http://twitter.com/sujesharukil Sujesh Arukil

        I do believe that, when people have not worked with JavaScript much and all of a sudden hear about all the cool libraries (knockout, backbone, angular), they tend to feel overwhelmed by all this. A generic feeling that, the core point of JavaScript is now gone and the void is being filled by using a 100 libraries.

        At the same time, a small search on Nuget would show you 100s of IoC containers. Ninject, StructureMap, Unity, SimpleInjector. Now, which one would you use? Or would you write your own? They all accomplish the same task. I loved your pluralsight course on Inversion of Control. You showed a small sample IoC container, homegrown, poor man’s injection. Well, it is just that, a library, a small framework. You work with what meets your needs and how well you can adapt to it. I worked with jQuery before, now I work with Knockout primarily. If need be and Backbone or Angular serves my purpose, I will learn how to work with those. But, if I don’t know JavaScript, no matter how many libraries you bring, it is pointless. Just like, if you don’t know C#, what can a library like Ninject do for you?

        I see your point in some way. But, writing the death sentence on JavaScript because of the umpteen number of libraries is a little harsh. The language might evolve or another language will take it’s place, but it is not a bubble that will burst, but might be pushed off the grandfather of modern Web language!

        Still a fan John, still a fan!! :)

  • http://www.facebook.com/henry.sharp.948 Henry Sharp

    Pointless article. You can’t blame javascript because it’s not good at manipulating the dom. Javascript has nothing to do with the dom or ajax calls. Blame the way the Document or the Window objects were implemented, blame the way the xmlhttprequest API was written, but definitively not javascript. JQuery has nothing to do with javascript, it is not a band-aid that covers javascript flaws, it just wraps poor APIs. C# or Java can’t manipulate easily an html document without some external libraries, does that make these languages useless?

    • jsonmez

      That may be true in the case of JQuery, but what about all the other 100s of JavaScript frameworks?

  • Runnin Bare

    Reading this drivel was a waste of time. I thought maybe I’d find out about the weaknesses of javascript. Your title “Why Javascript is doomed” made me think you were going to educate us about what was wrong with javascript and why it wouldn’t last. While you continually bashed javascript, you never mentioned why it was so bad. Only that many ‘cool’ things had been built on it. If you’re going to blog about programming languages find something useful to say. I’ve made note of your name so that I won’t waste my time reading your inane commentary again. Thanks for nothing.

    • jsonmez

      Likewise, I have seared “Runnin Bare” into my mind and scrawled it onto my arm with a dull knife as a lasting memorial to this comment. Good day sir!

      • Clint Nash

        I agree with the comment. “This drivel is a waste of time” and the number of likes and retweets is disgusting. You are spreading baseless mis-information that is counter-effective to the actual advancement of the web.

        If you knew what is going on – you would know why this is uninformed fantasy. Others supporting you are also out of the loop. In short: those who say no – don’t know. Makes me wonder about hatespeech.

  • Mat Landers

    Its jQuery not JQuery. Man this bothers the crap out of me across the Internet. At least get the name right.

  • http://www.facebook.com/profile.php?id=578453615 Kevin Dill

    Your points are as relevant as mainframe developers lamenting the fad of web development. Javascript has proven to be as resilient over the years as SQL, no matter how many “experts” predicted it’s demise. I feel bad that you feel you have to remain in the world of “every-action-requires-reloading-an-entire-page”… but good developers adapt to technology changes, not bash them based on past experiences using poor browser implementations.

  • http://twitter.com/vansimke Michael Van Sickle

    Hey John, I agree with the other commentors that have mentioned how disappointing posts like this are.

    JavaScript has successfully solved a problem that no other language has been able to do – provide a true write once, run anywhere experience.

    Sure, JavaScript can be pretty ugly, especially if you are supporting older browsers. However, I defy you to start over writing a client-side app that targets IE9+, Chrome (vLatest), and FireFox (vLatest). Don’t use a library, don’t use a framework, just write the code. You might be surprised how much of the ugly bits of JavaScript coding are gone.

    If your point is that the paradigm of JavaScript is somehow “wrong” (i.e. prototype based inheritence, etc.), then I would encourage you to look at the direction that the “big” boys (C#, Java, c++) are going in. From my point of view they are trying to implement many of the things that JavaScript has had for years (closures, functions as first class citizens, lambdas, self-executing functions, …).

    I know that it could just be how I’m wired, but I have not found a language that allows me to be as expressive, or develop faster than JavaScript, and I’ve studied quite a few. I wrote a complete game for my kids in JavaScript over the last week in my spare time, it was easy, fast, and there was little to no ceremony involved.

    Will JavaScript evolve, sure. Will other languages be built on top of it to provide a “better” experience, of course. However, I see that this language has solved a problem in a way that no other language has been able to solve as successfully and, when you learn the paradigms, you find that VanillaJS (http://vanilla-js.com/) might be the only framework you need.

    • kaller

      Hear hear. Finally someone who is not afraid to talk technical. I concur. For example – what made Facebook a success? No it wasn’t whats-his-name. No it wasn’t a “social phenomenon”. It was TECHNOLOGY. That was a new(ish) KIND OF DATABASE that allowed the relationship links to be maintained and walked, where relational vendors did not. (Notice how careful I was just then not to bash relational database technology. I bashed the vendors.) In the same vein, note that SQL is an escaped labrat – so if I was to bash SQL I would bash it for its logical inconsistency and unintelligent vendor developers who are too dense to understand how to fix that.

      Javascript got rid of explicit pointers. That has good and bad. In fact that makes Javascript less like assembl y because pointers are fast. (I like Delphi/Lazarus, even if I do have to watch my pointers when I initialise an object within a subroutine). JS was intended as embeddable code for devices so it was built to be lightweight. That is the point, then it found a new home in the browser/server, so good then. Its all about paradigms, and if you can’t speak about paradigms then better to not speak at all.

    • http://twitter.com/MindJuiceMedia Ken Carpenter

      JavaScript didn’t succeed because it “solved a problem that no other language has been able to”. It succeeded because there simply were no other languages for developers to choose that were installed in the browser by default.

      We could just as easily have ended up with node.py or node.rb.

      • SilentLennie

        Well, you do you know Javascript was the choice at the time ?

        Because Javascript does not have any blocking libraries, that was the whole point why it worked.

        And webdevelopers already understand the model, they’ve been doing the same thing in the browser for years.

      • recompile

        There were competing alternatives in both Java and VBScript. You must not remember, but for several years, IE (5-6) was essentially the only browser. That is, there were no viable (or even mildly popular) alternatives. IE supported both JS and VBS natively. Java, while optional, was near universal, with very few users lacking the popular add-on. (Even OSX came with Java built-in back then! It’s difficult to articulate how strong the hype surrounding Java was at the time. I don’t know that we’ve see anything like it since.)nnnnAnyhow, the point being, VBS and Java had ample opportunity to become the “language of the web”, yet they both lost to JavaScript.

        • mindjuice

          1. You must not remember a little browser called Netscape. It came out before IE and it was pretty damn popular too. It was the first browser I ever used, and I rarely used IE even though back then I was doing Windows development.nn2. Java was not and is not an alternative to JavaScript. Writing Java applets is entirely different and separate from web development. I’m well aware of the hype that existed, and I did more more than my share of Java dev in the 90s and early 2000’s. It was just hype though. Java and the JVM had/have so many problems. I never want to do any Java dev again as there are much better choices now.nn3. VBScript had no chance at becoming the standard, because it was Microsoft-only, and Microsoft also supported JavaScript. Everyone could see other browsers gaining market share on IE, so who would even consider going IE-only with VBScript. It would have been crazy.nnAgain, there were NO other alternatives to JavaScript.nnHaving been doing more JavaScript dev lately though, and reading Eric Elliot’s articles and Kyle Simpson’s articles on good ways to use JavaScript, I’ve forgiven Brendan Eich for his trespasses, as he did put in some good functional bits.

          • recompile

            1) Netscape had collapsed during the period to which I’m referring. It was not competing with IE at the time.nn2) You forget your history. Java competed with VBScript and JavaScript for dynamic content on the web. While we distinguish things like that today, that was not the case at the time. nn3) No one could see other browser gaining share on IE because that simply wasn’t the case until around 2003. Even then, competition was weak. Equally, there was nothing stopping competing browsers in those later years from implementing VBScript.nnnnAgain, there were at least two competing alternatives.

  • Paul Scott

    jQuery, being written in Javascript, is strong evidence that the language is both powerful and sound. But keep in mind that Javascript itself is a minimal language, and that much of what passes off as Javascript is in reality environmental. The DOM and global properties and methods are not part of Javascript. Analyzed properly, I think you’ll find that Javascript (or maybe more accurately, ECMAScript) is a pretty strong and useful tool. I certainly do.

  • Simon Martinelli

    I’m not sure that you really know JavaScript…

    • Jonathan Neufeld

      I’ve written frameworks and web-apps entirely in JavaScript for several years, I think he’s spot on about many points. There are better languages out there. Perhaps we should put away the keyboard and invest more time in political action to encourage the W3C to standardize a more suitable language for the browser virtual machine.

      There is no reason to defend JavaScript as a terrific language, a language that doesn’t even have support for importing 3rd party libraries. That’s because the language was never intended for this purpose, it was only meant to provide limited functionality to web pages. As I said, we should stop writing code and start making noise over at the W3C.

      • jsonmez

        Fantastic point. And not just because you agree with me. We need to push for alternatives.

        • Michael Carter

          I use JQuery and Javascript every day on my current project. I love the flexibilty, but this is also part of the problem. Javascript is just so open to abuse, because it is so flexible. A good programming language, whether it’s scripted or compiled, should force developers to follow standard best practises. For example, Javascript doesn’t complain if you leave off semi-colons. There are lots of others – I shudder to think what an incompetent, lazy programmer could do with Javascript if left unattended. The Java code on my current project is bad enough – at least refactoring is made easier by Eclipse.
          I can see the power of Javascript, but I would like to see a truly new language emerge from it, akin to Actionscript, that combines the flexibility of scripting languages with the greater rigor and control of a compiled (or interpreted) language.

          • sgarbesi

            Your dev process is the problem, not the language. Use GruntJS or another build tool and enforce coding standards by lint checking before allowing code to go into your repo. Problem solved.

          • Erik Reppen

            That’s the thing though. You pull that median-level-quality Java dev bull!@#$ in JS and you get burned. It forces you to learn. Static types don’t save these devs from anything other than learning how to write maintainable code in the first place, IMO. It’s just a performance to verbosity tradeoff, nothing more. And when you consider how much of a gargantuan mess C# and Java devs can make out of the type system, I’m not sure the performance win is really doing much for them.

            I wouldn’t have it any other way in C but for higher level stuff, it doesn’t really make sense. Dynamic types will punish you for writing classic spaghetti code with dozens of procedures accessing the same global data structures. So you stop @!#$ing doing that. It doesn’t take long to learn in web UI where the disasters you’ve created are out there in the open for everybody to see.

          • Mike Brown

            I love how these discussion someone has to insert the obligatory unnecessary and bewildering dig at Java…

          • Pherdnut

            My dig was at median skill-level Java devs, not Java.

          • Mike Brown

            Fair enough.

      • http://www.youtube.com/weal2006 Romain Durand

        How about the require keyword ?

        • Abdessamed Mansouri

          Require isn’t a keyword, it’s a function added to the global object.

          • http://www.youtube.com/weal2006 Romain Durand

            “a language that doesn’t even have support for importing 3rd party libraries”
            I know it’s not a native feature of JS, but you actually can import 3rd party libraries :P

          • Abdessamed Mansouri

            i’m not talking about importing or not, i just wanted to clarify that require isn’t a keyword, in any javascript environement you can put requirejs and use require, you can also redefine it to fit your needs :)

          • http://www.youtube.com/weal2006 Romain Durand

            Well, I know that :)
            (but I didn’t a year ago :P)


        Nah bro I dont think you know javascript

    • damnmaxims

      What a joke of a comment that was. A classic snide comment from someone who thinks they are smarter because they mastered a shitty language and want to stick with the status quo. I can prove Javascript is terrible.

      Real private methods and properties by Douglas Crockford:

      MyClass = function( a, b ) {
      this.sum = function() {
      return internalCalcSum();
      var internalCalcSum = function() {
      return a + b;
      };//you have got to be kidding me

      • Erik Reppen

        Lol. Don’t judge JS on what Doug Crockford was doing with it in ’01. He’s been a mixed bag on JS but nobody was doing anything right back then. Here’s the sane version + a more useful example method. ‘i’ is persistent and trapped in the same closure as A and B. All are effectively private. I would normally assign named functions inline with parens for better debug but I didn’t want to upset you.

        function MyClass( a, b ) {

        var i = 0;

        this.increment = function increment(){
        return ++i;

        this.sum = function() {
        return a + b;


        • http://www.sandiegosoftware.net San Diego Software

          I have no problem with this code or Javascript in general. Its a programming language, just learn it and use it. But I think Javascript would be much easier for all if it was a C style, object orientated language. It is just a strange language if you can’t declare a class to me.

          • Erik Reppen

            To me the core features of OOP are encapsulation and binding of data and methods into one context for portability and reuse with inheritance coming in handy on very rare occasions. All of this other crap that people have been putting on OOP have lead to people not really grokking the concept and making messes all over the place, IMO.

            Java devs in particular (at least in a lot of code bases I’ve personally observed) seem to have a lot of cluelessness about OOP. There’s really very little difference between classic procedural spaghetti with global data meatballs and an OOP codebase that will hand something like a DTO through dozens of method calls potentially making changes to it every step of the way. Nothing really owns that data. It can still be very difficult to determine what actually made a change that broke something. And it’s really just the same mistake with bonus syntax that OOP was supposed to help people avoid in the first place. That everything is in a class in Java is the real reason so many Java devs don’t get OOP, IMO. When everything is OOP, nothing is.

            In JS we have all the stuff in OOP I care about and none of the crap that I have yet to observe being used well by anybody. So no, no classes. We can pretend to have them. We can build stuff that works just like them. We even have a new class syntax around the bend. It’s still just prototypal OOP under the hood and a silly bit of syntax sugar really but because enough people thought it was really important that they get to call it a class, Eich finally caved.

            And it’s dumb because they’ll never properly learn JS. They’ll just piss and moan that they’re not REALLY classes and that’s a damn shame because nothing is more educational about the language you know best than learning the ones that are nothing like it. It’s true that C and C++ are not at all like JS. That’s one of many reasons I’m glad we can bind to both with Node.js. If it had been my choice that would have been it. Pointers? Operator overloading? Can’t wait to learn from my first disasters using that stuff and nothing beats them for closer-to-the-chrome performance that I’m aware of. More importantly, they’re a lot like JS on one critical point. They weren’t designed to protect you from yourself and they don’t assume you’re on a team of morons. They’re as flexible as you need them to be and they were designed to get !@#$ done.

          • http://www.youtube.com/weal2006 Romain Durand

            Your inability to understand prototypal inheritance doesn’t prove you right.

          • http://www.sandiegosoftware.net San Diego Software

            LOL, no, are you in a bad mood today ;)nn I want to be able to write class MyClass not var MyClass = function or var myClass = { }. I want to be able to compile and have build errors to help ensure quality of code ready to go live and I want to be able to go to the definition of a class reliably and know that I am actually at the class definition in a large code base.

          • Pherdnut

            Wait, very old convo but these words are from the guy who earlier said, “It’s a programming language. Learn it and use it?”

          • recompile

            Classes are unnecessary. Worse, they add additional complexity while restricting expressivity. It’s a loss all the way around. Objects in languags like Self and JS are not only far simpler, but far more powerful as well.

          • http://www.sandiegosoftware.net San Diego Software

            How would go about building a trading platform for a brokerage without objects/classes for example?

          • recompile

            Classes and objects are not the same thing, nor are classes prerequisite to objects. I think you missed that point. JavaScript has objects, but not classes. The class system JS is getting are just (needless) sugar over top of the more advanced, yet infinitely simpler, system. Developers new to JS might find them comfortable at first, but experienced developers would be foolish to use them.nnI’m not sure how to answer your specific question: Quickly? With less effort? Under-budget? Classes are unnecessary complexity, after all. They are far more likely to hurt your project than help it. Objects can be a fine structure, where appropriate, but they’re far from being essential to even the most complex systems.nnn We build some pretty amazing software without classes and objects in the past. A lot of that code is powering the financial world to this day, leaving countless failed modernization efforts in its wake. (It’s hard to be COBOL when it comes to high throughput and high transaction applications.)

          • http://www.sandiegosoftware.net San Diego Software

            It just seems what you are saying is a bit dogmatic or dramatic. You are calling the class keyword syntactic sugar but that would be what the class keyword is in late version of ECMA. In a language like C# a class is NOT syntactic sugar nor does it add unneeded complexity…nnThe drawbacks I find in Javascript is that I cannot build/compile to find potential errors, I cannot press a keyboard shortcut to go to definition in many cases, and debugging and stepping into Javascript code has always been a pain but Chrome F12 tools has made this last issue better but still not as good as some other programming languages.

          • recompile

            I think you misunderstood my comment on classes. The classes JS is geting are just sugar on top of the more sophisticated and powerful, yet far simpler, system. Not only are JS classes completely unnecessary, they add complexity without real value. The only possible advantage, as I mentioned, is to make it easier for developers new to the language.nnIn languages like Java and C#, classes are not sugar. The less powerful and flexible, yet far more complex, system used by those languages can’t simply be ignored in favor of a better underlying system. That is to their detriment. JS users, however, don’t need to be burdened by classes. JS classes are, after all, just sugar.nnWhat we’ve learned from languages like Self and JS is that classes are not essential constructs. Classes actually make it more difficult to use objects, impose artificial limitations, and increase complexity. (There is no advantage to increasing complexity while simultaneously reducing functionality, after all.) Languages like Java and C#, put simply, got it wrong.nnYour complaints about JS in the second paragraph have nothing to do with the language, and everything to do with tooling.

          • http://www.sandiegosoftware.net San Diego Software

            Is there a tool that “builds/comiles” Javascript? Obviously there isn’t, yes? Chrome F12 tools is quite satisfactory to me overall but going to definition is not always reliable with Javascript.nnMy impression is you are exaggerating and I am skeptical if you spend so much time with Javascript that you would have much experience with C# or Java, hence you say something like “less power and flexible yet for mare complex”. I think that is just a colorful statement that has little meaning.

          • recompile

            So you weren’t talking about static analysis? If that’s the case, I don’t understand your criticism. For the record, there are many static analysis tools for JS.nnTo your second paragraph: I’m not exaggerating, nor am I saying anything controversial. The problems and limitations imposed by classes are well understood. Equally are the benefits of classless systems like you find in Self and JS. A good place to start would be a search for “classical vs prototypal” you’ll find tons of solid discussion. I’d also recommend that you look take a look at well-understood problems like circle-ellipse and the diamond problem. While that doesn’t even begin to scratch the surface, it should be enough for you to continue reading on your own.nnAs a bonus, you’ll also be able to offer legitimate criticisms of JS. For example, you’ll be able to articulate why the new keyword and constructor functions were a mistake.

          • http://www.sandiegosoftware.net San Diego Software

            I just think your ego is running on the language you like. This stuff about the complexity of class being unnecessarily complex and restrictive is just opinion. I don’t think any technical discussion is going to help because you are hard lined to one side of the argument and the reality is somewhere in the grey.


            o dam wassup witchoo CS major douche


            czech out the algorithm buzzwords i know


            wtf is a static analysis toolf or js that makes no sense use normal people words and maybe we’ll understand you dont use your fucking book words


            YOURE a tool

          • ddsfan2

            I’m sure there are stock related programs written in functional languages, and those are not OOP at all. I know some people working in the financial sector from meetups who use Haskell in big companies and startups, for example.

            What I’d like to ask is how anyone can enjoy building any complex program without using closures, what a pain in the ass even Java 8 is to use in my day job.

          • An0nym0usC0ward

            You will be able to declare a class in the near future. However, there are solutions out there (and you can easily build your own) to add this to the language. That’s the great thing about it. Try creating a class concept in plain C without preprocessor magic.

    • Morten Carlsen

      I’m quite sure —- He doesn’t KNOW javascript… nor the concept of a programming language…
      Sure – he is mad at JavaScript – at least he thinks he is. But that is probably because he has difficulties with the concept of programming… itself. To be able to utilize ANY programming language one has to know what he wants to program, in the first place.

      JQUERY – enables designers (non-programmers) to do things that they would not be able to express programmatically… with ANY language – be that C, C++, ObC, Python OR Javascript.
      A loop is a loop, a variable is a variable. How they all vary depends on the how well the programmer can express himself, programmatically….

      Javascript is JUST a language which dictates a computer (Which is basically dumb) what to do. Same with C.

      Reading this post, it was very clear that the guy who wrote it is NOT a programmer.

      A hammer is able to (In the right hands) to hang up a picture on your wall but
      You dont HATE the Hammer because it doesn’t know what a picture frame is…

  • Aber Kled

    I think JavaScript is a great language, I know it quite well, but I almost never used jQuery aside from a few DOM manipulation hacks and animations. I actually like the way the language itself works – outside of the whole web world.

    You aren’t saying anything at all in your post. It’s just a collection of abused rhetorical figures.

    So, what is technically bad about JavaScript?

    And if you say “classes” I’m gonna blacklist your blog and spread my negative views around the Internet wherever I can.

    So tell me, where is JavaScript lacking technically? And be concrete. I wont accept “that book is called XYZ, so the language must lack something” as an argument. And “I want JavaScript to be C++/Java/Haskell/whatever” isn’t gonna cut it either.

  • http://www.facebook.com/profile.php?id=100000750255838 Pepito Sbazzeguti

    Hello. Just my point of view.
    I’ve been coding in javascript in the early 2000’s, when jquery or other things didn’t even exist and the target was IE6. A nightmare? Yes, it was.
    In short, i’ve learned it the hard way.
    Now i code with a simple text editor (gnu nano) and use no framework whatsoever. Backward compatibilty? Bah. HTML 5 is there, what’s the point of still supporting IE8 or other ancient browsers? Their market share has become marginal.
    My point is, JS isn’t that bad. It has its warts, but also a lot of cool stuff: closures, canvases, drag’n’drop, geolocation, the whole event handling stuff… it’s kinda like old C: some of its things are powerful but difficult to get along with, and you can do both wonders and disasters.
    But hey, feel free to disagree :)

    • http://www.facebook.com/cyber0 Peter Boocock

      The only point of continuing to support IE8 is wheresoever it is still the only browser allowed in administratively constrained installations, typically corporate. It may well be only about 5 % of the total browser population – but that equates to millions of such desktops.

      • http://www.facebook.com/profile.php?id=100000750255838 Pepito Sbazzeguti

        I understand, but unless that 5% is specifically your target, or an important part of it, then i see no valid reason to “castrate” your web app in order to reach 100% of the audience instead of just 95%.

  • Stephen Booth

    i use straight and pure javascript every day and love it. I do know jquery and can appreciate what it has brought to the table, but if I’m trying to keep things simple, which most of the time I am, I stick with pure javascript. I think your article is worthless. You’re using nothing but ad hominem style attacks against it without offering any real proof of what you’re saying. You just say, “here is my opinion, and you’re a {fill-in} if you don’t agree.” (fill-in’s being, sadist, masochist, sado-masochist, flat-earther, unhip, uncool, generally you just smell bad). What’s ironic is I’m reading this on a website called, “simple programmer.” Why don’t you grab a clue from the name of you’re own website and get back to basics.

    • Modulo m

      I also enjoy writing pure Javascript. I use sublime text and the chrome debugger, it’s pretty straightforward.

  • Shaun Sanders

    View -> Source

    I rest my case :)

    • jsonmez

      Dang it, should have added JavaScript to disable view source. Hah, point well taken. I think people are getting far too carried away here. I mean really, it’s like I attacked someone’s mother.

      • Shaun Sanders

        The fact you actually considered using JS to disable the ability to view the source when any modern browser doesn’t need to right click to do as such sorta says something :P

        Remove all the JS from your site, then tell me it’s doomed ^_^

        • NewmanOZ

          Nobody tells you “JS is doomed”, he is trying to say that JS is ugly and it will be replaced. And I agree, @jsonmez:disqus

          • Tony Anderson

            His article is literally entitled “Why JavaScript is Doomed”. What are you talking about???

          • NewmanOZ

            Well, then the title is inconsistent with the body of article :)

  • jsonmez

    John, you are an idiot.
    Seriously, how dare you write your opinion on your own blog.
    Don’t you know blog are only for facts!
    You hate JavaScript, but you don’t hate it? LIES!
    You bastard!

    Also, seriously you put a JavaScript book with an amazon affiliate link?
    WTF man, you can’t make money off of this blog.

    Seriously people lighten up, I don’t come over to your house and poop in your flower pots. :)

    You’re welcome to disagree with me, and I won’t moderate your comments, but don’t forget that you’re in my house laughing at my ugly painting of a giraffe and a zebra making love.

    • Matthew Eagar

      >John, you are an idiot.
      > Seriously, how dare you write your opinion on your own blog.

      You voiced your opinion, which is almost willfully ignorant, and then did a very poor job of defending it. Voicing it on your own blog doesn’t magically shield you from being wrong, or from being an idiot for sticking to a poorly formed opinion.

      Calling JavaScript a “bubble” implies that it will pop; I suppose you mean that it will have a sudden, massive down turn in usage. You are wrong, and this is impossible. JavaScript is *guaranteed* to be the dominant language on the web for many, many years to come, whether or not we (as developers) like it. Even if a better option came out tomorrow, supported by all modern browsers, it would take years for the outright *need* for JavaScript to taper off as people upgrade. In the meantime, the sensible course would be to continue to write JavaScript instead of this hypothetical new language, as both old and new browsers would support it. JavaScript is not a bubble by any reasonable definition of the word, which is seemingly the main thrust of your article. Or, are you trying to warn us that, in another fifteen years, JavaScript might not be as popular as it is today? If that’s the case then, just… Duh. The relative popularity of languages rises and falls. That’s how popularity works; not everything can be popular forever or we’d have nothing new.

      JavaScript is the fifth most popular language on the planet, behind C, C++, Java and PHP. Saying that it’s a “bubble bound to pop” is a meaningless statement, roughly on par with traveling back in time 50 years to rave at COBOL developers about the “COBOL bubble”. Saying JavaScript is “doomed” is another meaningless statement, like saying the sun will one day go out, or that life must end: So what. Everything dies, in time. Doesn’t *mean* anything, or imply anything useful, or suggest any meaningful course of action.

      I don’t even know how to address your secondary point, that JavaScript is some awful, broken language that everybody hates. You try to prove your point by saying “Look, a book on JavaScript, by one of the authors of the language, has sold a billion copies!” In what universe does it logically follow that “lots of book sales therefore JavaScript is broken”?

  • Pingback: What does the future hold for JavaScript?()

  • http://twitter.com/nightshiftc Cristina Solana

    I have evidence that PHP will also die. Why else would Symfony, Zend, CodeIgniter, etc exist? Also, there is a book: PHP, The Good Parts: http://www.amazon.com/PHP-Good-Parts-Delivering-Best/dp/0596804377

    • Cooltune

      I don’t know about that. I mean I can see it happening too with PHP’s syntax being so damn all over the place. But PHP got me into programming in the first place. Being able to implement logic into websites, as a total newb with no IT-education.

      You can’t deny there will always remain beginners who don’t need design patterns, OOP, compilation etc. So there is always a place for a language like PHP.

      But using the frameworks as means for its demise ….. like any (programming/script) language, there will always be frameworks for every language. It’s a certainty.

      • http://cristinasolana.me/ Cristina Solana

        You missed the sarcasm. ;)

        • Cooltune

          >.< doh!

  • http://www.facebook.com/cyber0 Peter Boocock

    JavaScript is not a bubble – it’s a programming language! JavaScript’s predominance might well be compared to a bubble though. Liked this article, despite finding reason to be critical of it.

  • http://www.facebook.com/thastark Matt Stark

    The biggest problem with JavaScript is most people are too dumb to actually learn it. jQuery helps dumb people do better at JavaScript. To try to say jQuery is JavaScript and draw conclusions around this is a bit of a stretch.

    But ya – “because you don’t like it” – is a really tough argument to back up in front of reasonable people on this blog. So good luck with that.

    The only people that can’t maintain js are the idiots who probably could barely manage a compiled language on their best day.

  • Cashell

    Good post. I enjoyed it.

    Well, with one exception. The dig against Perl was a bit obnoxious, and entirely unnecessary. It was also completely inaccurate. First of all, Perl’s built-in OO isn’t bad, it’s just a little simplistic (though incredibly flexible). However, you seem to be suggesting that the current state of Perl OO is the same as it was almost 15 years ago (the book you linked to was published in 2000). That’s just silly and suggests you are either being misleadingly snarky, or you’re seriously out of date on Perl’s functionality.

    Take a look at Moose, Perl’s modern OO library before you dump on Perl. With Moose, Perl’s OO functionality matches or exceeds pretty much every language out there.

  • Samuel Gómez

    “I don’t really need to tell you again what is wrong with JavaScript.”

    Sir, I’m afraid your article is void of content.

    “If you don’t use JavaScript, just search for “why JavaScript sucks” on Google and you’ll get plenty of answers.”

    Basically ignorant answers, such as http://boronine.com/2012/12/14/Why-JavaScript-Still-Sucks/ , which says:

    * “No OOP”, because the author does not understand prototype-based object orientation ( http://web.media.mit.edu/~lieber/Lieberary/OOP/Delegation/Delegation.html )

    * “No standard library”. I wonder how the author calls this: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects

    * “No module system”. I don’t use it but, isn’t a “module system” what npm is? https://npmjs.org/

    * “No language resources”. Search again. From more brief but innacurate, to more accurate but long: w3schools, Mozilla Developer Network, the ECMAScript Language Specification

    As said in https://speakerdeck.com/anguscroll/the-politics-of-javascript (slides 12 to 14): JavaScript is Hard. We can either learn it, or we can hide from it.

    Nevertheless, I miss some additional parsing capabilities for the Date object :) But you still have to explain why JavaScript is doomed.

  • http://twitter.com/MindJuiceMedia Ken Carpenter

    I don’t understand why we need to choose one language in the first place. The browser should contain a VM that can be targeted by any language the developer chooses. JavaScript, Python, Ruby, Dart, whatever (with support for symbolic debugging, of course).

    Sending source code over the Internet and then interpreting/compiling it on the client side is just insane.

    Java was more in the right direction, but it wasn’t ubiquitous, and few developers knew that you could compile other languages to run on the Java VM (nor were there many earlier on), so those who didn’t want to write Java ignored it.

    In my opinion, HTML, CSS, JavaScript and their ilk have set software engineering back by decades. They are just awful things to work with compared to writing native code apps.

    • jsonmez

      Yes! 100% Agree!

    • Abdiel Jaramillo

      I completely agree with your last sentence. I feel like i’m back in the days of Basic language when i have to use JS. I’m mostly a server side developer but client side should not be so different.

    • Jonathan Neufeld

      I completely agree with your first sentence. We deserve more options, we have been working hard for decades to bring quality apps and services to the web. This continued expectation to use one language, only ONE language that hasn’t undergone a significant face-lift in more than a decade is a slap to the face and a kick in the gonads. There is absolutely no need to continue like this, we could support JavaScript and many other languages and everyone would be better-off.

      Your second sentence I agree with the most and by far. It appears that many of the developers advocating JavaScript I talk to seem to think that advancements in computing technology are to be treated like a crutch instead of a gift. What I mean by that is instead of writing better more efficient code we demand more hardware and computing power. This is insane I agree:

      1. Code that does not change except in the hands of the developer does not need to be redundantly reinterpreted and recompiled over and over again by millions of client machines.

      2. Apropos to #1, since you now have millions of client machines doing what one developer should have done, you have that many more machines consuming more energy than necessary, a lot more, sometimes by an order of magnitude or more. This is not ecologically responsible.

      3. It’s unethical to build a poorly performing application simply to make the developer’s life a little easier in lieu of making it perform vastly better for millions of users with a little more invested time and energy from a handful of developers. By taking the lazy route, the developer offloads the consequences of his poor design onto countless users, and statistically less than 10% of users will express dissatisfaction and only a fraction of that discontent reaches the developer’s ears.

      Your third sentence I agree with conditionally. Java was not going in the right direction, it fell flat on its face in too many embarrassing ways. In short, it offered too much, it just wasn’t simple enough. The things you could do with Java in a browser were rather frightening. All we really needed was an MVC paradigm: control over the web page rendering, control over input, and remote service communication. What we got instead was everything you could do with Java and for free. This sword cuts both ways: GUI rendering was inconsistent over different platforms, networking was encumbered by a myriad of security policies and firewall restrictions, and access to system-level calls that arguably don’t make sense from a web browser virtual machine (I would argue if you are going to build an application that simply must manipulate the local state to that extent then it’s time to build a standalone application). The most predominant memory I have of Java applet technology is how long it took to load in a browser and sometimes it wouldn’t load at all and the web browser would freeze. If the technology was trimmed down significantly, I contend this would not be the case.

      It’s unfortunate because I’ve built a number of Java applets including a 2D MMO-RPG video game that would even function over a network with extremely spartan security policies and TCP port restrictions, it would even work over a simple HTTP proxy. It’s always disappointing to see the fruits of your labor sit on the shelf collecting dust. That brings-up the point I want to make right now: part of reason for this evolution of web technology that brings us here today is the abysmal failure of networking technology. Virtually nobody pays attention to the OSI model, and regardless of its purpose network “engineers” employ the use of full stack gateways everywhere ad nauseum rather than determine what’s most fitting for the job. Additionally, typically every TCP port is locked down except for port 80. I believe this was a huge step backwards for the software industry. In order to extol greater network security, we’ve butchered the potential to build powerful and versatile applications that could communicate over the Internet without the need for the web browser and its one-dimensional tools. Due to shattered trust in anything non-port 80, what platform do we look to? the web browser. And what functional languages does this platform support? Only JavaScript. Do you have a choice? no, you do not have a choice, JavaScript is all you get. Developers have responded by introducing languages that compile to JavaScript such as Dart and CoffeeScript. What I find most interesting is the harsh sentiment towards the proposal to natively support Dart in the web browsers by the big players particularly Microsoft and Mozilla. Microsoft in-particular disagrees with anything other than JavaScript. Yet they’ve also obstructed any attempts to improve the language (JavaScript ES4 for example). The end result? JavaScript has gone virtually no where in the past 10+ years despite an earful of empty promises from the obstructionists.

      As for your last point, there are plenty of obvious and glaring warts in HTML, CSS, and JavaScript. There is no need to defend them, it’s good to be critical of these technologies particularly because we’re stuck with them (for now). HTML, based on SGML, descended from GML, a technology invented in the 60s, is used to deliver 21st century content and interactivity. I think there could be something else better suited to the task by now. As for JavaScript, unfortunately it was hastily slapped together in a little over a week’s time otherwise “something worse than JavaScript would have happened” (Brendan Eich). It hasn’t really changed since. It’s tragic that modern web-development is based upon a hack from the mid-90s at best (if not markup rooted in the 60s).

      You guys as web developers deserve >a lot< better than this, stop putting up with it.

      • jsonmez

        Absolutely brilliant. This one comment alone is 10x better than my original post.

      • Jonathan Mulle

        /stands at attention, hand over heart

    • Ivan Lee

      That exists now. They are called apps.
      So now you have to learn Objective C for Apple’s iOS
      And android sdk (cough, java) for Android.
      And C# for Microsoft’s Win 8
      So now you have multiplied effort and time.

  • Esraa Ibrahim

    Yes this video is really a great one .. I like it :), If you can do more on how to design for a project or an app .. I think that will be useful too ^_^

    Suggestion: If you can share with us on your blog the ideas that you will talk about, and take our feedback on those ideas into consideration … this will be great.

    Thank You Mr. John :)

  • somebody

    The manipulation of the DOM is just an API that allows you to manipulate the user interface. There is some repetitive code that has been abstracted in a library. Now tell me what programming languages don’t have libraries.

    If you’re a copy paste programmer, don’t fault the language.

  • Tim Yen

    Wow theres a lot of comments here, touched a nerve i’d say. Well my 2c is what is old is new again, remember Java? Same story there got too complex for its own good. Javascript will become too complex an ecosystem too and it will fade into the inky blackness that is legacy code, to be maintained for 20+ years on rickety old hardware, by Banks and other industrial heavy weights.

    While the cool kids re invent the wheel with some new language with ++’s on the end of it, or a way cool name like Bunkum.

  • Pingback: How Religion Destroys Programmers - Simple Programmer()

  • Dmitry Buzdin

    Thank you for writing this! Could not agree more. Never viewed JavaScript as a bubble before, but this analogy fits perfectly. Right now companies are investing billions in porting applications to HTML5 and JavaScript just to understand that it will become an unmaintainable mess after few years, and using frameworks, which are already abandoned.

    I don’t have anything against using JavaScript as a lightweight DSL with bunch of frameworks, if it makes sense, but it is simply not intended for anything serious. And yes, I know about all incredible things people do with JS, but people do it with Assembly as well. The way forward is to cover JS with abstraction such as Dart. But we have to wait for at least 3 years to see the first winners in this race.

    • sdwone .

      I’ve been an avid and serious application developer for a
      number of years. You know, coding in the REAL heavy duty languages; C and C++,
      and then moving, albeit a bit reluctantly, to C#. It’s thanks to C# that I
      toyed with web services at first, and then, finally, I made the move into web
      applications. So I’m coming from a totally different mindset when it comes to JavaScript,
      a language I’ve been heavily using now for about half a year. The Verdict? I
      bloody LOVE JavaScript but, there are some serious issues, not so much with the
      language itself but, with browser incompatibility, huge numbers of frameworks,
      WAY too many that, to be blunt, are aimed more at web designers, who by and
      large HATE writing code. Web designers, generally, are artists or have an
      artistic streak. But developing code is a long, complex and arduous task. A
      task that not many people, some developers included, relish on a day to day
      basis. So with a lack of co-operation with the browser vendors and the urge to
      make the Net more fancy, fast and “arty”, JavaScript frameworks mainly rule the
      day, and not necessarily the language itself. This is what happens when a
      language, a damn good one in my opinion, gets pulled apart in different
      directions. By developers, designers, browsers and the general public that
      expects beautiful, fully interactive webpages.

  • Jake Harris

    This post is click-bait, pure and simple.

  • Neill

    I agree, javascript sucks! so does the web with all the hacks on top of hacks. With js-frameworks we are moving back to fat client-server architecture…nothing is new under the sun…just different names and chasing our own tails.

  • Wannes De Backer

    John, your opinion is bad and you should feel bad.

  • Pingback: My Software Development Predictions In The Next Few Years | Simple Programmer()

  • William Hoblitzell

    I look at JavaScript as the unfortunate reality of web development. It isn’t used because of its virtue as a stand-alone language, but rather because every modern web platform can exploit it effectively. JavaScript code on its own, when compared to other languages, is often slower, uglier, harder to write, filled with more bugs and generally all around less scalable.

    That all said, JavaScript is making a comeback. I think this article really ignores that fact, and it isn’t just the result of Node.js or jQuery or any other library. JS is coming back because it’s been embraced by the open source community, as evidenced by GitHub and Google trends. I think we all have to learn to effectively deal with this language, and it’s numerous shortcomings. Whether we like it, or not.

  • Penguin

    I love sweet potatos! No, really, I do. I like sweet potato pie, sweet potato with butter, sweet potato fries, even plain old baked sweet potato. As it relates to Javascript, the main pain point is the lack of tools and nicely formed IDE. C# and java would be just as difficult to some if there was no IDE. Javascript is the cleanest way to control a client side browser without adding a lot of additional libraries. If you had to recreate an interactive website without Javascript, you would be begging for Javascript.

    Really, Javascript isn’t bad when you get the hang of it. Just like c++ is difficult when you first start. I do remember cursing Javascript when I was in College, but have since embraced it as a powerful scripting tool for client and server side applications.

    Overall not a bad post. Not too much ranting. It sounds like you had a project go bad with Javascript recently, but still, not too much ranting and an interesting perspective.

  • Pingback: Leaky Abstractions Are Holding Us Back | Simple Programmer()

  • Luca

    JavaScript is doomed? I wish… :(


  • Clinton David Skakun

    Sorry, I think you have a few things wrong. JavaScript could very well die some day, but I don’t really see it happening any more than I see CSS or HTML dying any time soon. We need languages like JS to build web applications. JS is not really as ugly as you make out. Prototype-based programming is not ugly. Nothing about the language is really that ugly if you simply learn how to use it, which actually doesn’t take more than a year or two in total.

    I honestly don’t see why I need to switch to something like dart. We’ve started using NodeJS because it simplifies everything and everyone can speak the same language on the server and the client side.

    JS, unlike Flash, will not easily go down. There are too many reasons to use it. Unlike Flash, there aren’t a million reasons why it’s bad for web design.

    “Take JavaScript away and replace it with another programming language and you don’t really miss anything.”

    You can say this about practically any language. Java, Python, Ruby, etc. etc. But I don’t think that’s a reason to think that any language will replace any of these any time soon. Just different tools used by many different people.

  • Pingback: What Programming Language Should I Learn? | Simple Programmer()

  • Pherdnut

    A few things to consider.

    1. JavaScript devs. The most experienced of us came from web UI and nobody is more likely to be exposed to more languages than web UI devs. I’ve been at it 7 years now. In that time, I’ve also worked with C#, Java, Ruby, Python, and PHP to varying degrees and would call myself a generalist programmer at this point. Do you think that we opted to start using JS as a cross-platform solution absolutely everywhere because we were ignorant of whatever it is you consider a vastly superior alternative?

    2. The DOM API was actually intended as language independent. IE’s refusal to support it properly for 10 years was the primary source of cross-browser woes. jQuery’s primary role is to handle that specifically, although it does have some other general app utility that most people are ignorant of. Support for the ECMA specs that define JavaScript, the core language has been very strong since IE5. You seem to understand these things yet you’re missing the point. If you think spraying jquery at web UI problems replaces JavaScript, you’re not doing anything substantial with the language, which IMO is actually a phenomenal tool for app architecture, normalizes like nothing else, and is a powerfully expressive language in the right hands.

    3. The author of “The Good Parts” has a bizarre love/hate thing going with JS. One day he’s inventing JSON, the next day he’s making criticisms of the langauge and doling out suggestions about how to handle “the bad parts,” many of which are just trivial or make absolutely no sense to experienced JavaScript devs and telling the kool aid snorting masses it’s the language we’re “stuck with” in the browser even as it explodes in popularity in a wide variety of other platforms.

    Implicit globals were a dumb idea but they’re hardly something that slows JS devs down. We either use strict mode or we just declare our vars because it’s really not that hard of an issue to avoid. Function scope makes perfect sense in a language where functions are such a core unit. I’ve never missed block scope and am really not particularly excited about getting it because lack of block scope has never, not once gotten in my way in JS.

    All Crockford does is distract people from actually learning the language by making them feel good about not wanting to learn it in the first place and some of the stuff he’s said is spectacularly asinine. JSLint used to tell you to not use the binary operators because they’re confusing. He’s advised people to avoid function constructors because you might forget to use the ‘new’ keyword. JSLint advises against the perils of negating regEx classes because they’re confusing and could easily lead to much longer matches than you’d expect which zomg is like this huge security risk! Never mind that they perform better than the wild cards they typically replace or that you can have explicit control over exactly how many matches are allowed at any given time or that wild cards practically match everything making the point of concern kinda moot in the first place. It has become clear to me over the years that as pundits on JS go, the man is not afraid to open his mouth and make pronouncements about things he obviously doesn’t have a great deal of understanding on and I’m really REALLY getting tired of listening to people regurgitate his crap in favor of copping to the real problem which is that they’ve always hated JS because it doesn’t work the way languages with similar syntax do and they have never grown as programmers enough to separate syntax from semantics. If all you have to point out about JS’s “warts” after 20 years of JS is Doug Crockford’s tired old speaking engagement fodder then it is clear to me that you are still a JS noob, completely unable to discuss JS in terms of being a series of design trade-offs that actually targeted the problems it was meant to solve in ways that other popular contemporaries simply could not until more recently, when they started to bringing in all the stuff from LISP that JS devs have had for years.

    Oh, and good luck with that Dart thing. I hear it’s really taking off.

    • BrianFrichette

      This is a spectacular post. Very well-articulated.

  • Pingback: I Was Wrong About JavaScript and Responsive Design | Simple Programmer()

  • Pingback: Leaky Abstractions Are Holding Us Back | Finding something called knowledge()

  • ATrober

    You appear to bash javascript, then say you’re not, then say you don’t have to tell the reader what’s wrong with it, but the article is about why it’s a bad language. hmmm.

    Javascript is going no where. As for why it’s still around and growing:

    1. Non-proprietary – any other web technology from LAMP to .Net can integrate with it. All other proprietary attempts have failed to remove javascript from the throne (especially the Microsoft attempts).

    2. Powerful – it’s a powerful language. With its capabilities come some problems: weak typing, obscure syntax, OO deficiencies, etc. But, *patterns* can overcome all of them sufficient to keep these from being showstoppers.

    3. Labor/skills – the labor pool is huge and transferable across proprietary boundaries. A great LAMP/javascript developer is useful on a .Net stack or another server-side stack.

    4. Server-side – it’s now becoming more pervasive server-side. Issues with scaling have work-arounds to insignificant, certainly not as significant as using a (fat, bloated) .Net/aspx stack.

    5. Add-on’s/frameworks – like jQuery, et. al. jQuery has some credit to giving javascript some life, but its still a patterns/architecture usage of it, just like other frameworks out there not using jQuery doing the same thing.

    Javascript is the cockroach or mosquito of web technologies, nothing kills it and it’s been around since the dawn of the ages.

  • Jeremy Bell

    It doesn’t do any good to complain to W3C – the standards body process is limited by what browser vendors are willing to implement. Notice, then, that two of the major browser vendors (Apple and Microsoft), have a vested interest in keeping the web “platform” limited and not as good as native development on their respective closed platforms. Google is investing in native client and dart, but notice how neither Microsoft nor Apple are indicating any interest whatsoever in either technology, nor are they themselves investing in anything to replace it (TypeScript doesn’t count – it doesn’t fix the VM). They outright reject the entire concept of ANYTHING OTHER than JavaScript in the browser.

    This is the real reason why advancements in the web stack are so slow. Apple killed plugins, which were for a time the only thing pushing the web platform to be faster or have better features (WebGL, Canvas, Video, VM performance were implemented in response to plugins). Now plugins are out of the picture, and competing browsers (with, say, a native client or dart or asm.js or some other technology that could replace or improve JS) are becoming more and more restricted and limited, with Apple outright banning them, and Microsoft banning them on WinRT and limiting them on x86 (i.e. only one browser can run in full-screen touch-friendly mode at a time).

  • jsonmez

    I hadn’t seen Elm before. Thanks for posting that link. The looks awesome. I will be checking this out for sure.

  • http://cloudswing.info Michael G. Connor

    thank you for this.

  • Jonathan Mulle

    Only yesterday I decided to yield to group-think and start really diversify my javascript knowledge base. I took a look at Angular.js, whistled through my teeth. “Is it happening? Are we really going to wrap this unwieldy tragedy of a language in something I can bare?” I wondered; I grew excited. I read of CoffeeScript, and then Ember.. then Backbone, SproutCore, Closure… then Sammy and Batman and onward. My world started to tilt and veer—”DOM traversal or not DOM traversal?” went a small and afraid voice behind my eyes. The terrifying certainty that I would never learn it all, the absolutely confidence that I would choose to learn every library that was going to vanish next quarter began to descend on me. The warm, coherent embrace of Python, so far from me now, it seemed as though it had never been.

    Near tears of frustration at Javascript’s complete inability to let me use the number zero or the word false as if they actually meant anything, I asked google, “why is javascript doing this to me? I try to be a good person and love those around me but I feel as though I am being punished”. And I was brought here. And a little glimmer of hope and a great deal of catharsis arose in me.

    As an self-taught, freelance developer it’s not always clear if the tools you’re using are really as maddening as they seem, or if the failure is one’s own. This was a fun little bit of catharsis—thanks.

  • jsonmez

    Yes, the reference, but not the content.

  • Macuser1010010

    Mobile devices are getting more and more popular every day. When the consumer desktop pc market are dead, what will happen then? Devices gets filled with all kinds of sensors?

  • wps33hunt

    I was on the fence about this issue until I worked as a front-end developer.

    Javascript has a HUGE userbase. Likely, that alone will keep it afloat for a looooong time. Also, it’s uses continue to expand, which will likely cause even more people to use it more and more heavily.

    bad language?:
    I have to disagree. many of the alleged downsides and shortcomings of modern Javascript are misconceptions or misunderstandings. this is not clear, however, until you REALLY dig into the language and do a lototototot of practicing and experimenting. I’ve had the good fortune to work with some kickass js devs but from much of the code I’ve seen online I’d have to say that at least more than half of front end devs do not utilize–or maybe do not even understand the, at first, mind-boggling “advanced features” of the language (functions inside functions that get asynchronously called from other functions in other scopes, this, recursive functions that make bizarre but often beautiful loops, functions as classes and prototypal inheritance, etc.). most of the difficulty is just bending your mind around it, but once you do, the solutions you can dream up are amazing. h’anyway–

    you make a point about the cool stuff ~surrounding~ js, but as you may have gathered I find the language awesome anyway. I look at it as another python or ruby community that’s just WAY bigger and–for better or worse–not as tied down to the standards and aggregate preferences of people who have been programming since the early 90’s or before. A fresh start with many, many eyes involved.

    I gotta stop

    – use node.js and get into the npm community
    – learn the language so you can stop relying on other peoples’ crappy and or blackbox style js libraries (if you haven’t heard of douglas crockford, start there).
    – stop thinking of js as a language that’s only for manipulating the DOM.
    – research the insane breadth of usage it’s gained in the last few years.

    then decide for yourself what Javascript is.

  • JMack

    so anyway… it’s 2014… and front end development (which relies 100% on javascript) is still running ERY strong….

  • JamesMGreene

    What a wildly unfounded post. Just needed to drive up blog traffic, eh?

    Did you ever stop to think, perhaps, that “JavaScript: The Good Parts” is the most popular book on Amazon because JavaScript IS the language to choose now? People want to get into it, people want to learn it, and — if they like learning from books — “The Good Parts” is still one of the best beginner books around. It’s not because people hate the language but decide to force themselves to learn it.

    Ugh… troll troll troll.

  • sanjeet

    After reading this post, it seems like that either you dont know the real power of javascript or you are just trying to get popular your blog. In past severel languages like vbscript, java applet tried to replace this great language and I am pretty sure dart will also be limited to google. After coming html5, node.js it has come to a new horizon where it difficult to reach for others.

    • Matthew Blott

      It is not a great language. Using the word great in this context strips great of its true meaning. JavaScript was originally cobbled together in a few days by one person. When that’s considered, it’s not too bad. But compared with other “proper” programming languages it’s pretty crap.

  • JP

    I hate Javascript and Jquery almost as much as I hate Oracle products (ex : ADF).
    Oracle because it’s full of bugs and everything is made to be complex.
    Javascript because of it’s poor integration with IDEs (no code completion),
    making this poorly typed language harder to debug, even with today’s browsers.
    But for client-side programming, we don’t have many choices.
    Microsoft .NET ftw !

  • Kornelije Kovac

    Both JS and JQ are doomed. I can really see a more simple tool with less annoying scripting coming in the future that would make programing the front side easier.

  • Pingback: How Should Software Developers Prepare For The Future? | Simple Programmer()

  • Ely Kovan

    I understand that JavaScript has features that are disliked by some people. No language is perfect. But HTML5, CSS3, and JavaScript are the technologies that are currently most popular in programming web apps to act like desktop apps. In the past, other technologies were tried like Java applets, ActiveX, and Flash. Computing keeps evolving exponentially. I won’t be surprised if, when something like quantum computing becomes reality, new operating systems will have to be written and new ways of building web apps will be required. If you think it’s too far in the future, you could be surprised how soon it can happen.

  • http://www.edwardbeckett.com/ Edward Beckett

    I think all programming languages are doomed… They all suck equally… JavaScript just has more suck to it.

  • Pratik Joshi

    F* CK u , try to find good thing in everything.

  • Elizabeth

    My name is Elizabeth, From USA ,and I’m happily married with a lovely
    husband and three children.I had a very big problem with my husband few
    months ago,to the extent that he even packed his things away from our
    house. He left I and and my kids for almost 5 months,and i tried all my
    possible best and effort to bring him back.I discussed it with a very
    good friend of mine,and he gave me an advice concerning a spell caster,
    that he is the only one that can handle my situations and problem,that
    he’s always ready and able to do anything related to spell casting and
    helping of the needy, Please every every one i would like you all to
    contact him with his email address,which is as follows.”[email protected]”.
    I never believed in spell casting,but My friend convinced me and i had
    no choice than to follow my friend advice,because i never dreamed of
    loosing my lovely Husband. And i contacted him with his email
    address,and i discussed with him all my problems and worries and so
    surprisingly,he told me that I’ll get my husband back a day after. I
    didn’t believed Him, until when i got home,the next day,my husband
    called me to inform me that he is coming back home…..So Amazing!! That’s
    how i got my back through spell casting and our relationship was
    stronger than ever. One of the price i was asked to pay was to tell it
    to the people around me that problems like this,can always be solved by
    Dr. Olodumare. So! my advice to you out there is to visit this same
    E-mail address,and tell him your problems too,if you are in any
    condition related to love issue or getting your ex back or and problem
    at all, please Contact him and have a happy life. you can contact him
    via email ([email protected] )


  • E71

    I’d never switch to any language created by Google. They revealed their true colors in the past year with security incompetence and evil decisions to benefit their weak social network.

    If Dart was created by a third party, uninvolved in the web browser market, I’d consider looking into it.

  • MPinteractiv

    I agree with many of your points but javascript isnt going anywhere.The web will be the number one app delivery plateform in the coming year.Doesnt mean you have to write javascript.But you need to understand the DOM and webapis.Then,use whatever language that compiles to js,even C++ !

  • Keyang Xiang

    I accidentally saw this article today. It makes good point. But my point with Javascript is it is a language describing living creatures.
    If we say language like Java, C# , or other OO language constructs objects and describe the connections among those objects. Javascript is a language making objects live and responsive.
    The origin of OO language is everything is an object. But objects are dead. The origin of Javascript language is that everything is live and moving and the language is used to capture, describe, trigger, subscribe events.
    To me, Javascript language is closer to real world, because the reason objects performing an action (method) is other objects trigger an event.
    Of course, Javascript is not perfect and it surely has not delivered some OO features. But Javascript language’s mantra is beautiful. For a system, we can use OO to model it clearly. If we design the system from event driven angle — all components are live and interacting each other actively / passively, separately, randomly — we are building a real world.

  • Pingback: Is Javascript Doomed? | College Web Tech()

  • Cooltune

    Agreed. Javascript is not pretty. But doesn’t really justify your conclusion or headline. The deal is: it’s the only mainstream language that every browser supports. And acceptance is the first step. I think new revisions need to come out and fix the aesthetically part of the language.

    Coffeescript is an attempt but I’m not convinced by its syntax. Just see it like this: Javascript is like an ugly girlfriend, She not pretty…buuuuuut she does everything in the bedroom. :)

  • http://goldingdamien.blogspot.jp/ Damien Golding

    I’m all for opinions, I hate many things most people like, but I can provide logical reasons for it which I don’t see in this article.
    Yeh, JavaScript is a little messy when working with the DOM and libraries make it easier to work with, but it’s not like other languages would be easy to use without decent libraries.

  • Pingback: Inspiration Log 2: Post #10 | saranteb()

  • Pingback: What Does the Future Hold for JavaScript? | For Developers | Izenda Blog()

  • Arulin

    Ok , Simon says he not sure you know Javascript, I cam CONFIRM you don’t asshole! First of all what is dead , let’s see oh yes Actionscript 3 is dead…..Java, well can’t say it dead but your average trained monkey in Atlanta speccing in Java gets 45/hr, Gurus in Java get maybe 55/hr. Monkey in JS,CSS,HTML5 55/hr, Gurus I won’t state becuase I don’t want the Backend developers where I work knowing the amount of mo-back I get but I get more then then the author of this asshat post. Take Javascript away and the Web dies. There have been many who have tried to grove with the W3C….Flex is now in retirement at Apache, VBScript….Don’t make me laugh. The “standard” is JavaScript, thankyou Steve Jobs for the extra hate at plug-ins before you died. nnHere a list of why I love Javascript:nnPrototypes !nnNo fucking “Class” keyword, can create an constructor on the fly if I wanted to. Try that in Java.nnDynamic declarations, dynamic in general!nnJSON!!!!!!nnNo need for Getters or Setters! Lombook built-in!nnNode.js, JavaScript on the server side. Great for production, a deity send to separating the Front’end and clearing the name of the JS develper who gets flak from crack smoking backenders who blame everything on the front-end. Had too many of those gigs.nnI can go on and on and on, with HTML 5’s local storage cookies are dead, finally dead so the only grouch I ever had is dead! So no, JS is ‘very’ alive, CSS is very alive, HTML 5 dead only in the minds of Flex fans which this author likely is. So take it from a Front End developer, there are 10 jobs to 1 UI Engineer, there are 10 Java Developers (9 of them H1Bs) to one Java position. Who got the market? Kiss off John before I and the rest of the Javascript community flushes you down one.

  • Lidia Mckinney

    look at me my fellow women am here to say to you not to give up please because a life dog is better than a dead lion when i was 7years barren i had no hope that i will ever get pregnant but one day i meet this person through the internet who resurrected my hope and told me that i will get pregnant after the evil woman worrying my life has died and after 9days a woman living close to me died of stomach attack and before the dead she told me that she was responsible for my childlessness and now am having two boys and my life has been restored, please reach him [email protected]

  • SWR

    Well, what’s your alternative then to Javascript for building my web-based text RPG?

    • NewWorldPress

      server side code like ruby or python

      • SWR

        Yeah but what about inventory management when moving an element around the inventory? You have to use javascript for that right? There is no alternative is there?

  • cswam

    Sounds like technical sour grapes from someone that can’t or doesn’t want to learn or understand the Java-script Object Oriented Programming Language

  • Fernando Zamora

    so now that so many changes are coming down for JavaScript (EcmaScript ) are the changes a good or bad thing for javascript?

  • http://syriansfuture.wordpress.com/2014/04/13/tears-in-heaven/ Elias E. Youssef

    very glad to see you posting “I Was Wrong About JavaScript and Responsive Design”

  • PressEnterWhenReady

    Hmmmm … Interesting, but all the things this author says makes JavaScript work are what I hate about it, jquery, Knockout, etc., are all retarded bloatware!?! I have been a developer for over 20 years and was tinkering with code for 20 years before that. I started back in a time when there was this “new” thing called ‘www’ that was first being introduced. I like to say it provides an interesting perspective; back then, you needed something done … you just did it. I remember writing synchronous and asynchronous AJAX code when needed, writing JavaScript objects as needed, etc., it was easy. Somewhere along the line,’ knowing how to’ got replaced with ‘fast’. Thing is, these fast tools more often than not are not fast at all. The number of times I’ve seen developers waste huge amounts of time because something didn’t work is crazy, total waste of time. We had an issue here where a customer facing site just kept crashing, nothing the creator did could get it working, so, I was called in and after spending days on it, we figured out it was the NuGet libraries were out of synch with each other, an addon required version ‘x’ of another library that had changed to version y which was not compatible with earlier versions and so IIS barfed … stop bloating apps with “fast” tools and just do it right the first time! JavaScript is a great client side tool, if the developer knows what they are doing, sadly most do not!

  • Thera

    I just started learning JS, as my team is using Ionic and AngularJS. Its a nightmare to learn, I cannot get my head wrapped around the gawd-awful syntax. Too many people creating ‘plug and play’ modules with no real consensus on what is the standard.

    I appreciate all the beautiful things that it can do in the browser and server, but I hope, for my career’s sake, it dies a quick and painless death!

  • jarhead11

    I LOVE Javascript, the LANGUAGE

  • azz0r

    Way to write an article about a subject but dance around the subject and input no opinion on why you have this opinion. What a waste of 5 minutes.

  • An0nym0usC0ward

    Pardon my language, but BS.

    The JavaScript ecosystem is appalling, I’ll give you that. But the language in itself, apart from some (few) well known quirks, is great. More flexible than any other language I know, while at the same time keeping things simple. Allows you to mix structured programming, OOP and FP at will – something I think is a good thing, since there’s no application I ever touched where a single paradigm was the perfect solution for all parts of the app. Ubiquitously runnable, thanks to node.js and io.js. Blazingly fast, compared to other scripting languages.

    Will it ever replace C and C++ for systems development? Probably not. But it will surely continue to eat into the traditional domains of things like Java, .Net or other scripting languages. IMO.