Node.js critics, is “event-driven, non-blocking I/O model” not clear enough?
Node.js is not the best when it comes to scaling compute heavy intensive apps.
Off-late a lot of expert critics have been writing hugely viral posts about this, a trend started by the very famous ‘Node.js is cancer’ post. These posts cite exciting and unique benchmarks showing how Node.js isn’t scaling well as compared to their favorite technology.
Am I the only one getting tired of this?
Here’s a news flash:
Node.js was never created to solve the compute scaling problem. It was created to solve the I/O scaling problem, which it does really well.
The Node.js mission statement makes it pretty clear.
Of course I get that language wars is always a hugely emotive debate and everyone wants to make his / her point and get it heard.
But at least keep the criticism somewhat logical?
If one buys a car and complains that it won’t navigate too well in a fresh water lake, it’s perhaps not the best display of one’s reasoning ability.
A common counter is “Hey Mr. X told me Node.js scales and I wanted to prove him wrong”.
Maybe Mr. X isn’t making a valid argument. Does this validate the trashing of an entire technology?
Node.js never made claims about compute scaling and people criticizing Node.js over this are ignorant about the technology they’re critiquing in the first place.
Just to clarify, feel free to criticize Node.js where there are genuine shortcomings.
Recently we’ve seen a revival of event loop based concurrency across a lot of technologies including Python, Java, PHP etc. Projects are spawning all over.
This obviously can be attributed to the success of Node.
What perhaps gives Node an advantage here is that its entire library is asynchronous which roughly means it does event based concurrency typically better than others that may have synchronous libraries that get called and end up blocking a flow.
Regardless of which is the best language / technology / platform, I think we all can appreciate that there is space for both event based and thread based concurrency models.
Good programmers will know which is the best option for their use case.
Discuss on Reddit