Every lie is two lies — the lie we tell others and the lie we tell ourselves to justify it.
For graphics user interface (GUI) programming, an event loop is de rigueur, whether it’s in Windows, or X Window, or OS X’s Cocoa, or the web browser. They all process user input events asynchronously. Does that mean that asynchronous programming is also a strength of C++ or Objective-C? Event loops (with asynchronous libraries) have been used in Python and Perl and Tcl. I suppose they’re all strong at asynchrony, then? (I laugh when people use the non-existent word “asynchronicity.”)
The event loop has been described as “a poor man’s concurrency.”
Node proponents like to throw up the same few enterprise examples again and again (PayPal, Netflix, Walmart, Uber, etc.). For every Node example, there are — what? — hundreds of Java examples? Java has proven itself countless times in the enterprise. That’s why it’s practically the industry standard. Node has yet to prove itself. We don’t know how many corporations have tried using Node and gave up on it. We have no idea what the real-world success rate of Node projects is. For an enterprise, choosing Node is still a risky proposition.
I confidently predict that Go will displace Node in the future once it has grown its ecosystem of frameworks and packages. Its trajectory is undeniable.
Remember, in every other application domain besides the web, developers are not held hostage to one language. We ignore this at our own peril.
It behooves us to remember that for all other application domains (e.g., network servers, games and graphics, mobile, desktop, IoT, cloud, etc.), there are plenty of language choices. The web domain is singularly unique. (At least, it is until WebAssembly finally arrives.)
Weak typing is the Achilles’ Heel of the language for proper software engineering. While it makes writing quick simple scripts for the web browser very easy, it works against you when you’re writing larger applications that require safety and reliability. This is why most major languages are normally strongly typed (not to be confused with statically typed). This is very, very important.