Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> It does this by forcing the entire ecosystem to be async too (including things like database drivers).

Yes, that's exactly Node's main selling proposition everybody forgets when presenting their next Node.js



I would call it "node.js's largest implementation issue". It is not that JavaScript gives you another choice, while you make it sound like it was a principled decision.

Other platforms/languages have real concurrency constructs and don't suffer node's limitations.


Well, no, you could have done all of these things synchronously, and in fact JS would have preferred it because JS is intrinsically single-threaded. Ryan Dahl's stated inspiration for Node was that he struggled with a certain slowness in Ruby because it blocked for everything, so he tried to build an entire language that simply wouldn't let you sleep(). You can go listen to his talks; they're on YouTube. It was a principled decision.

I don't know whether making JS single-threaded was a principled decision -- if anything it was presumably the KISS principle at work. However, it was actually a ridiculously nice choice to offer a single-threaded-asynchrony model. It sometimes gets in the way rather obtusely -- Firefox can still (if very rarely) fail to introspect and then crash when some ad script on your page goes into an infinite loop! -- but on the whole, it is very nice to always know that while I'm in this function, modifying this variable, nobody else can interfere.

With that said, I also think that the lack of good concurrency planning is indeed missing, and that it will probably enter the language at a future time.


Actually that's not a "selling proposition".

At best it's "making a virtue out of necessity".




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

Search: