top | item 11572976

JavaScript has beguiled the current generation of software developers

44 points| wodahs02 | 10 years ago |medium.com

89 comments

order
[+] colemannerd|10 years ago|reply
When I see the term "no self-respecting" developer, I know the article is going to be highly opinionated and complaint oriented with very little new information to discuss. I continue to be proved correct with this article.
[+] bryanlarsen|10 years ago|reply
To be fair, the OP is basically an intro to his post on how to "fix" javascript.[1] This post basically says we should create a new Javascript that is the same as the old Javascript without all the bad parts.

Which throws away the two biggest strengths of Javascript: it works everywhere, and is compatible with tons of existing code.

1: https://medium.com/javascript-non-grata/javascript-the-next-...

[+] hsileng|10 years ago|reply
While he has a point to a certain extent, it's also coming from a fairly purist POV. I respect that for diversity of opinion.
[+] harwoodr|10 years ago|reply
Reminds me of the opinion unix purists held towards Linux in the 90s.
[+] grandalf|10 years ago|reply
I had to check to see if the article was dated April 1.

JS is both a compiler target and a language itself. WebAssembly enhances the runtime as a compiler target.

JS is also moving very fast, as evidenced by Babel. There are some big, bold ideas being explored in React, Angular, Om, elm, clojurescript, etc. I hesitate to take seriously anyone who thinks this is a bad thing, just as I hesitate to take seriously anyone who is a strong supporter of a major political party.

We simply don't need a single point of authority telling us the best way to do things, even if they are soon obsoleted, competition and sharing of ideas is good. I've learned a lot by exploring all of the frameworks he mentioned. Recently the Ember and React teams have been collaborating extensively, and I can't wait to see all that comes out of it (notably with respect to styling components).

The most embarrassing assertion the author makes is that CS curricula teach "programming languages". It teaches a way of thinking, and it really doesn't matter much which language is used as long as the basic principles are covered. JS might make a good language to look at when studying language design tradeoffs, since in some ways it falls short but has also become the dominant language when measured in terms of the number of runtimes in use in the world at any given moment.

So while the author does seem to wish to be constructive (he links to a vague proposal) the article is just clickbait and really shouldn't be taken seriously. If you are a new programmer reading the article and feeling discouraged, don't lose heart. Build stuff and you'll learn. Eventually try some other languages if all you've tried is JS, but don't listen to the nonsense in the article.

[+] horrido|10 years ago|reply
> It teaches a way of thinking, and it really doesn't matter much which language is used as long as the basic principles are covered.

Nevertheless, schools do not want to teach an inferior language that encourages bad programming habits. They (now) tend to rely on languages with a vocational bent, such as Python and Java. I remember my days in university when odd languages like Scheme and Turing were taught. Now, it's sensible to at least try to prepare the student for the job market. I'm glad they didn't stoop to JavaScript.

> If you are a new programmer reading the article and feeling discouraged, don't lose heart. Build stuff and you'll learn.

Why should a new programmer feel discouraged? There are plenty of good languages to choose from (Java, C#, Python, C++, Ruby, etc.). They offer varying levels of ease, but Python and Ruby would be more than good enough. If you want to do web development, use a transpiled language (). That'll save you much of the grief of JavaScript. (My personal favourite is Amber Smalltalk.)

I agree, build stuff and learn.

[+] horrido|10 years ago|reply
> There are some big, bold ideas being explored in React, Angular, Om, elm, clojurescript, etc.

I'm glad you mentioned ClojureScript. I didn't successfully add this link to my previous comment because ycombinator had a hiccup, but I recommend using transpiled languages instead of JS: https://medium.com/javascript-non-grata/the-super-surrogates...

Languages like Amber, Brython, ClojureScript, Dart, Haxe and Scala.js are great alternatives to using JS.

[+] overcast|10 years ago|reply
JavaScript, for better or for worse, like it or not, is here to stay. There is a ton of resources, by a huge community, and large corporations being thrown at improving it. This author needs to get off his high horse.
[+] bluejekyll|10 years ago|reply
He doesn't disagree with that. Just that JavaScript's niche is frontend. And even that may be threatened with the advent of webassembly.
[+] gorpomon|10 years ago|reply
The author makes two decent points:

1. Javascript popularity is tied to web popularity

2. Web popularity is shrinking

But he makes it in such a histrionic way that it's hard to focus on that over his bombast.

You can sound the alarms over almost any language if you want too, it's fun but hardly informative.

Java - only for companies that don't want to be agile

Python - Great for hacking on the weekends, but no killer use case

Ruby - Only has Rails, and the web is shrinking

Haskell/Scala/Whatever - Never gonna break out of a university

These are well worn arguments that don't really capture that jobs and companies tech stacks are much more nuanced than these simple statements. If you care about code, you'll find work, no matter what language beguiled you first. If anything, Javascript hasn't beguiled a generation of developers, the web has. And if we move on from the web, we'll move on from JS, and as long as we care about what's next, we'll thrive.

[+] losteric|10 years ago|reply
The author also ignores what I consider to be Javascript's strongest trait: It works everywhere and does everything. Shipping JS with every browser means there is no barrier for entry.

Sure the syntax is pretty meh, the community is disorganized, performance is OK, and there are a lot of poorly written libraries out there... but it's downright amazing how much surface Javascript+Browser covers. WebGL, WebVR, WebCL, WebRTC, hell even just the out-of-the-box cross-platform UI. Install Node and you get access to all the systems stuff as well.

It's my job to write Ruby and I love the language. I also really enjoyed C++ and Python... but Javascript is now my go-to language outside of work. It's amazing, it's like it was made for hacking.

[+] pcwalton|10 years ago|reply
For all the text the author wrote about how bad JavaScript is, I had to click through two links to find any actual substantive complaints about JS, which were (1) JS doesn't have an array type; (2) JS doesn't have an integer type. (1) seems false to me (extra false if you count Typed Arrays), and (2) is being worked on in the committee.

(I think JS has a lot of flaws, but it's not as bad as its reputation suggests.)

[+] abritinthebay|10 years ago|reply
Not to mention the "Number as Double" issue has been called a massive mistake by most people involved in writing the standards.

However it's not a simple issue to change it at this point, but people ARE aware.

[+] askyourmother|10 years ago|reply
I think in time, we will look back at the mess of "modern js" development, including the true shit-show of npm, in the same way we look back at the horrors of J2EE, XML hell, bean hell, FactoryOfFactoryOfFactoryofEclipsePleaseAutoCompleteThisBeforeRSIsetsIn, and the rest.

The only interesting bit is whether it will be webassembly or something else that actually drags us into a paradigm shift for the web.

[+] mbrock|10 years ago|reply
Everything will always be horrible. I promise.
[+] tyingq|10 years ago|reply
>The only interesting bit is whether it will be webassembly or something else

I'm interested in this as well. The near term plans, though, don't give wasm languages dom access, and limits wasm to statically typed languages. So, it's basically relegated to being an ffi layer for js for quite some time. I don't see that changing the world much.

[+] nailer|10 years ago|reply
Shit show? It's a dependency manager. It's no different to any other dependency manager, like RPM or dpkg. It has way more stuff in it's repos than any previous dependency manager, which is good, because programmers don't have to constantly rewrite the wheel. I hope for something like that has the scale of npm on other languages in future.
[+] sgift|10 years ago|reply
> JavaScript is intrinsically a dysfunctional language. It has many more flaws than any other programming language in wide use. JavaScript is wholly unsuitable for serious software engineering, esp. at scale. When your application grows to tens of thousands of lines of code, it becomes much more difficult to maintain, much more difficult to ensure a specific level of quality.

Replace Javascript with PHP and you get the usual complaint people have about PHP (but there's still Facebook). Replace a few words and Javascript with Java and you get another common complaint, still, all these languages are in active use at various companies, so maybe they have their uses?

[+] ryangittins|10 years ago|reply
There are two kinds of programming languages: The ones people complain about and the ones no one uses.
[+] abritinthebay|10 years ago|reply
Worse still - it exposes that he really doesn't know that much about JavaScript development at scale.

Dunning-Kruger in action.

[+] chrisabrams|10 years ago|reply
NASA, PayPal, Uber, Facebook, Yahoo, Fitbit, Intuit are all using Node.js...guess they're all just niche too?
[+] StavrosK|10 years ago|reply
Isn't everyone "using" everything? Unless a large percentage of the code the company is currently using is in a language, I don't consider the company to be "using" the language.
[+] horrido|10 years ago|reply
Clearly, Node is widely used. It would be silly to deny that. The real question is to what extent is it being used, i.e., is it used to write large, mission-critical systems, is it used beyond developing client-facing web applications (which tend not to be very big), is it used company-wide in lieu of previous language infrastructures such as Java, C#, Python and C++? Now, that would be impressive.
[+] jahewson|10 years ago|reply
This is a poorly written opinion piece from someone who isn't a JavaScript developer. Most arguments he makes have no facts to back them up. Many of his claims are made from a position of obvious ignorance: many Fortune 500 companies do in fact use JavaScript, and an incredible number of startups do. To claim otherwise is just ridiculous. He claims that games could never use JS and yet WebGL has already given us this.

So what industry-favourite, startup-embraced, wildly popular language does this author advocate?

Smalltalk.

Seriously?

[+] horrido|10 years ago|reply
So who's making arguments without supporting facts? The Hacker Life provides evidence that startups prefer Ruby, C and Python. Fortune 500 companies may use JS for client-facing web UI applications (which are generally not mission-critical), but for heavy-duty shit, they'll stick to Java, C#, Python, C++, etc. Show me what Fortune 500 companies are replacing these tried-and-true workhorses with JavaScript.

As for games, what serious gaming platform relies on WebGL? Most games are written in C++ for a reason: maximum performance. When I was Project Team Leader of the Windows NT Driver Group at ATI Technologies (now AMD), all the OpenGL software I saw was written in C++. JavaScript could never have been usable, even with V8.

Smalltalk, seriously. It's still used today around the world by many businesses. Cincom and GemTalk are major Smalltalk vendors. I have friends working at Cherniak Software and Simberon, both important Smalltalk software houses. ESUG (European Smalltalk User Group) is a mammoth organization representing hundreds of companies using Smalltalk. What did you say about "a position of obvious ignorance?"

[+] reitanqild|10 years ago|reply
> This is a poorly written opinion piece from someone who isn't a JavaScript developer.

I've written serious things in JS (ok, ECMA Script) back before a lot of people around here started coding it seems. Back when IE ruled the web and SVG was an Adobe plugin to IE.

And I say this post isn't too bad.

[+] andor|10 years ago|reply
"On the server side, we’ve seen Node.js gain traction for “back end” applications. But Node has been pretty much relegated to a web niche. ERP solutions like SAP aren’t using Node. While a company may use JS for their website, don’t expect any serious shop to be washing their critical Business Intelligence data through JS code. The truth is, most Fortune 500 shops aren’t basing their businesses on JavaScript and never will."

Next time you make such a bold claim, maybe Google it for a few seconds ;-) Legacy SAP stuff predates Javascript. Modern SAP stuff is different, "HANA Extended Application Services" is actually a server-side Javascript runtime. What is HANA made for? Exactly, "critical Business Intelligence data" ;-)

http://scn.sap.com/community/developer-center/hana/blog/2015...

http://help.sap.com/hana/SAP_HANA_Developer_Guide_for_SAP_HA...

[+] horrido|10 years ago|reply
Interesting, but it remains to be seen how many businesses will actually use HANA. Until you can identify what percentage of Fortune 500 will use HANA XS with Node, I stand by my statement.
[+] lost_name|10 years ago|reply
If you're wondering whether or not to take this with a grain of salt, please note the author has a section of his blog devoted to explaining why javascript is apparently bad.

https://medium.com/javascript-non-grata

[+] svckr|10 years ago|reply
My initial reaction to this was “Why would anyone have such strong feelings against any particular programming language?” Then I remembered how I feel about Java.

(I’m obviously joking here. I’m not 15 anymore. If you pay me to build your house with that particular hammer, fine.)

[+] gmisra|10 years ago|reply
Headline is intentionally awful. tl;dr: the "lie" is that javascript is a bad language, and developers should not learn it.

Proceed if you enjoy programming language screeds, this one makes few technical points and focused on the argument that learning JS is not a practical professional decision.

[+] talmand|10 years ago|reply
The article is worse, it suggests that the Javascript language itself is what has doing the lying. Not people, the language. Keep that in mind.
[+] emodendroket|10 years ago|reply
> Even Redmonk’s language ranking is deceptive. JavaScript is on top because of the massive number of lines of code committed to Github. What are we to make of this? Well, JS is the native language of the web browser; if you want to write a browser application, you have no choice (for now). Redmonk is effectively saying that the web is popular, not that JavaScript is popular. Duh!

I'd probably also add that a lot of that is probably copies of popular libraries just getting checked into people's projects implemented primarily in other languages.

I'm more excited about SPAs and other stuff happening in the browser than this guy is but I don't really get the JS outside of the browser hype.

[+] awjr|10 years ago|reply
I find this hard to swallow as somebody that works with JavaScript on a daily basis both as a backend and front-end technology.

For one thing, it's an intellectually interesting space to be in and for another, there is so much of the open source community working in this space, it just simply allows me to stand on the shoulders of giants and deliver.

Checkout http://githut.info/ and, yes npm.

I recognise there are failings in JavaScript and that is why I've switched to TypeScript and now transpile to JavaScript.

Do I think there are problems with JavaScript? Of course there are, but does it make it a bad language? No.

[+] acbabis|10 years ago|reply
> The truth is, most Fortune 500 shops aren’t basing their businesses on JavaScript and never will

I'm not sure what the author means by "basing their businesses on JavaScript" but lots of Fortune 500 companies are using the SPA frameworks he decried. Facebook (Fortune 500) - not only uses - but invented React, Google invented Angular, and the Fortune 500 company I work for has Angular applications in production.

Maybe the author meant "No Fortune 500 company is putting all their eggs in one basket," but that's just tech in general.

[+] horrido|10 years ago|reply
Many enterprises are, indeed, using SPA and Node...for the client-facing, non-mission-critical web UI software. These applications tend not to be very large, and on this scale, these tools are usable. But once you get to the really heavy stuff that enterprises rest their critical core business on, they'll stick with real languages like Java, C#, Python, C++ and Scala...things that they trust without question.
[+] uptownJimmy|10 years ago|reply
No big corporations are building their apps on Node, I think was his point. And he's right.
[+] tyingq|10 years ago|reply
Basically a big rant about javascript.

I do agree, at a high level, that the litany of frameworks, and which ones to use together...is a barrier right now.

It's somewhat amusing to compare the effort required to make a relatively simple "SPA", versus doing the same thing in a "fat client" via C#, Java/Swing, or similar.

But, it's a relatively new ecosystem. I'm sure the dust will settle sooner or later, and a reasonable end-to-end solution will emerge.

[+] nailer|10 years ago|reply
> a wild wild West of free-for-alls with most of these frameworks having the life span of a fruit fly. Think Angular, React, Ember, Meteor, Backbone, Knockout, Express, Mithril, Aurelia, etc., etc., etc.

Ember is nearly 5 years old. I don't use it, but it's very much a mature project.

[+] horrido|10 years ago|reply
It was hyperbole. Of course, most of these frameworks are still around, but their popularity waxes and wanes with each new kid on the block (React is the latest).
[+] 91bananas|10 years ago|reply
As is Backbone (5 years+), as is Angular (6 years), as is Meteor (4 years+), as is Express (6 years+), see a pattern?
[+] hsileng|10 years ago|reply
As I am reading this, my reaction is "Don't let perfect be the enemy of good"
[+] noir_lord|10 years ago|reply
Which would be fine if you consider JavaScript good, I don't, it's at best passable if you avoid most of the land mines which is an art in and of itself and that's just the language, if you include the ecosystem it's pretty much all landmines.