Hacker News new | past | comments | ask | show | jobs | submit login
[flagged] “Node.js is one of the worst things to happen to the software industry” (2012) (cat-v.org)
39 points by neya on Nov 21, 2017 | hide | past | favorite | 36 comments



The main argument is that "of all the ways of doing concurrency, callbacks are by far the worst". I tend to agree.

Now we have async/await, I think there is no problem.


But it's funny, isn't it?

Callbacks were advertised as the reason why one should use node. They're a foundation of JS.

Then they got covered up by promises. And now, with async await, we're back full circle towards the style of a more linear programming language such as python.


Nobody loved node because of callbacks. Node was the only ecosystem where everything was written with concurrency in mind.


> Node was the only ecosystem where everything was written with concurrency in mind.

Yes, sure, if you ignore all the other programming languages, like Erlang, which is older even than first hacked versions of JavaScript.


JS was drafted in a week.

Node is a band aid on top of a tech stack that webdev is stuck with.

Node was done with concurrency in mind, JS wasn't.

Compare apples to apples:

How does Erlang's ecosystem stack up when it comes to concurrency? How does it compare to Node? Do you even care given your prejudices regarding JS?


It wasn’t that callbacks we’re a selling point, it’s that asynchronous execution was.

Callback were just the way of doing that in JS. Now we have Promises + Async/Await as sugar around what is basically the same pattern

ie - cb(err, result) is not that different than .catch(err).then(result) but it’s much nicer to develop with.

Of course now you can do the same in imperative try/catch for with await so yes, we’re back to similar syntax but a whole lot change under the hood and provided a much more performant concurrent model


> Callbacks were advertised as the reason why one should use node. They're a foundation of JS.

Where can I see that advertisement?

I'm pretty sure that the main selling point of Node.js is and always has been that you can easily share code with the browser.


Javascript is the Visual Basic of the 201x's.

Like Visual Basic-- it convinced people who otherwise had no idea what they were doing that they were programmers.

It's fun for the rest of us CS/Math guys to sit back and watch you JS programmers discover things we learned 40 years ago. :-)


Maybe one day we'll be as awesome as you


According to the article, the node.js community hates itself. They are lucky as it seems as soon as they join the "rest of you", no one will hate them anymore.


Given the number of CS/Math guys who don’t understand the basics of prototypical object systems and try to make every OOP system fit into the C++ model... I wouldn’t throw stones there.

Most of the concepts in JS date back to Scheme and the Actor Pattern languages of the 70s & 80s.

In other words: you really don’t know what you’re talking about.


Yeah because CS/Math professionals have never use VB or JS. I'm quite sure that many Wall Street quants and Fintechs who use VBA in Excel to do their job today will find your statements hilarious.

Some of the worst code that I've ever seen has been written by hard maths people.

> It's fun for the rest of us CS/Math guys to sit back and watch you JS programmers discover things we learned 40 years ago. :-)

Such as?


Concurrency.

But I think you're reading more into what I said than what was meant.


I just don't think it's fair to say that "JS programmers are just discovering concurrency".

Libuv, the I/O engine for Node.js is written in C and Node.js itself is a mixture of C, C++ and JavaScript. Plenty of other "JS programmers" including myself have also been programmers of C, C++, .NET and many other environments all of which have well defined concurrency stories. None of these people fit your profile.

> But I think you're reading more into what I said than what was meant.

Sorry, but this comment conveys no useful information to me. Your original statements were quite explicit.


I expressed myself poorly. Please accept my apologies.

I did not mean everyone who writes JS is a bad programmer. That's not only a dogmatic statement but demonstrably false.

However, people who shouldn't be programmers have to land somewhere and right now its JS.-- just like VB was back in the day.

It's clear to me at least, that JS has been stretched beyond its abstraction level. It's ripe for replacement, its just that attempts to replace it have been closed solutions, so JS continues.


I don't think node.js per se is the worst thing. However, the way it is used, particularly what I believe to be a misguided attempt to do "full stack development" is really terrible. And it is not the first time that we have made this mistake. The whole Java on the client side blew up in our faces. If bosses really understood that client side and server side are two different problems with different mindsets and specializations we would not be in the world of pain that we are


"However, the way it is used, particularly what I believe to be a misguided attempt to do "full stack development" is really terrible."

I'm not sure what way you believe it is being used?


I am referring to the following mental algorithm I see being used by managers and some devs: 1. My front end guy does JS 2. My backend guy costs money 3. Let me remove 2 and get 1 to do both, it is all JS anyway; completely ignoring that the way you build the two is fundamentally different, with different mindsets. Language is just a small part of the equation. The claim that having a single language on FE and BE will save cash is simplistic and misguided. It is like saying since my kitchen utensils are built of stainless steel and aircraft carriers are built of stainless steel, I will get Le Crueset to manufacture my aircraft carriers


What morbid nonsense.

I don't think there's a single language or framework that I haven't heard this about.

None of our tools are perfect, but great software has been written with all of them anyway, and lots of people have enjoyed working with those tools along the way.

If you don't like a tool, switch or build a better one. Don't write long borderline-nihilistic blog posts about how everything is terrible and we're all clueless.


That's generally true. However, when the creator of a popular language/framework disses it himself, it carries a different kind of weight that can't be easily dispelled by your argument.


It doesn't read that Ryan Dahl dissed it. He dissed every language and their role in adding to the complexity of the thing that is called IT these days. And he tried to make the focus about the user of the software: as it should be!

"The only thing that matters in software is the experience of the user."

I agree.


Why not? Is there something wrong with expressing an opinion about a programming language. You've just expressed a similar opinion about their right to expression.


It pushes too hard, it's not balanced nor it is fair. There are articles which generally criticize js that I've bookmarked, but this is mostly expressing emotion not so much opinion.


Reading a critical blog post, even nihilistic ones (if they are) is not obligatory. Switch reading matter and stop telling others what not to write.


"Of all the ways of doing concurrency, callbacks are by far the worst," Why? Working with callbacks on a solo thread has proved to be more performant I/O wise than threads.

"for any other problem anything else will be much better than Node.js, even PHP."

Why?

While it might be true to certain extend (i.e. Node not being the right solution for many cases), this article is just filled with baseless arguments.


The consistency of node's standard lib alone is a good reason to use node instead of PHP.


I hear the main complaint in Node.JS, and even in Go too, is that the error handling is too verbose, eg you can not wipe all fail cases under the rug, they will litter your code and stare annoyingly at you like "hey, you have not handled me". And the code will fail spectacularly, while I guess some developers rather have silent errors with the motto "what I can not see can not hurt me". It gets unbearable for the CRUD app developers when each SQL line needs to have it's own error handling and you have to think about in what order and when to send the SQL queries, where as in traditional "skin your database" programming framework everything is done synchronously. But now we have async/await and you can just await, await, await, and even "forget" about the catch, or that everything is done asynchronously under the hood.


Didn't read that, because title is enough for me. But usually people who hate javascript are those who didn't learn and understand it properly. I mean very basics, like concurrency model and event loop. I saw so many monstrosities in production, like checking for result of some async call, with setTimeout. No wonder, people who wrote that code, hate js.


Interesting. An entire website devoted to snark about software. Not very nutritious, but it tastes great going down.


Critiques of Node.js like this are usually from people who can't keep a single thread up and running. Can't count the number of otherwise intelligent ppl who have told me "Node.js doesn't work". No. Your code doesn't work. Try again.


This article is outdated. Its 2017 and Im happy with my async and await.


Currently people love the Node ecosystem not the Node itself. So I don't know why this article till here.


The way this was written made me think it was a sarcastic rant. But I guess they're serious...


Can you say clickbait?


These guys are utterly aggressive even by my standards!


"Only a thought-provoking read is a good read."

Thanks for that :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: