瞎扯淡 Node 是昨天的 Ruby 吗?

stulay · 2014年03月13日 · 最后由 yakczh 回复于 2014年03月13日 · 3337 次阅读

ruby 是前天的 java 吗?

只要你还是你自己就行。

node 是前天的 ruby,java 是后天的 VB

Ruby 是 Ruby,Node、Java、VB 是其它

匿名 #4 2014年03月13日

等哪天大学里面开始教 ruby 不教 java 了再论不迟…

话说十多年前我上大学的时候就有一同学发现了 ruby,然后在自学;现在和当年比,计算机系本科的课程变化很小啊…

我们公司现在用 Delphi,照样挣大钱,管他昨天前天,能挣钱就行

平安里面做大型机 cobol 的那些人整天没事做月薪还不少的说

8 楼 已删除

node.js 的特色是单线程异步模型。这种模型显而易见的问题就是会造成 callback hell。callback hell 可以靠 CPS 转换、Promise 之类的方法来破;另一个问题就不那么显而易见了,如果执行耗时操作,会导致公平性问题。不过如果你能保证你所有代码都不调用阻塞函数,也不执行 CPU 密集运算,那你倒是可以无视这个问题。

@whitecrow 说得好。公平性问题不解,请教是什么意思。

#10 楼 @billy 是指 CPU 资源无法公平分配。

因为 event loop 在处理所有的任务/事件时,都是沿着事件队列顺序执行的,所以在其中任何一个任务/事件本身没有完成之前,其它的回调、监听器、超时、nextTick() 的函数都得不到运行的机会,因为被阻塞的 event loop 根本没机会处理它们,此时程序最好的情况是变慢,最糟的情况是停滞不动,像死掉一样。所以当 Node.js 遇到高 CPU 占用率的任务时,event loop 会被阻塞住

当 Node.js 程序的 event loop 被 CPU 密集型的任务占用,导致有其它任务被阻塞时,却还有 CPU/内核处于闲置的状态,造成资源的浪费。

@billy 为什么 Erlang 比 Node.js 靠谱?因为 Erlang 有轻量级进程,不需要用 CPS 转换之类的怪招去模拟执行多线程。此外更是因为 Erlang 为进程提供了调度器,避免了公平性问题。

说到底 Node.js 只是比较适合 I/O 密集型并发应用。

#12 楼 @whitecrow Erlang 语法太不靠谱

#13 楼 @search 估计也就 Prolog 或者 APL 什么的语法比 Erlang 靠谱了

#14 楼 @whitecrow 没用过 ruby 吧,Erlang 的语法和 ruby 差太多

nodejs 适合类 helloword 应用

需要 登录 后方可回复, 如果你还没有账号请 注册新账号