由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - node.js使用感受 献800题大牛
相关主题
响应800题大牛的号召哪位大牛来比较一下 java, python, scala
祝贺peking2升级成Staff & Tech Lead湾区 Pre-IPO 招聘software -engineer(big data server)
谈谈nosql这个query的问题Hiring Lead Big Data Engineer, Graph Team
chat server long pull - facebook 面经刚看了一个职位需求,这么牛的人去哪找,找到了也得多少钱啊。
问一个F的设计题只会做题,不会职位需要的那些花花绿绿的技能怎么办?
跟着二爷学Node和scala了公孙大神再战古德霸,快去围观
贡献最近面的T家电面一题,顺便求个blessNode+Rest=马工神器?
System design这东西提供Vistaprint Software Engineer内部推荐
相关话题的讨论汇总
话题: node话题: js话题: 异步话题: ruby话题: python
进入JobHunting版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
稍微用了用node,写一点感受吧。本来想优点,缺点单独列出来,但是感觉还是混起来
写吧。
1. 自己想做点什么东西都不可避免要接触到前端,而前端则是JS的天下,因此前几天
看了看JS。这个时候就产生了一个问题了。既然前端必须要用JS,那么为什么不用node
,从而前后端统一语言呢?我当时的回答是不会用node,因为JS这个语言是挺灵活有趣
的,但是写起来实在是太boring了,前端用是没得其他选择,后端再用可就太痛苦了。
但是很快我发现了coffeescript这门语言,它吸收了python, ruby的优点,又解决了JS
的很多缺陷,因此我眼前一亮,一下子就喜欢上了这门语言了。当时学Ruby的时候就觉
得do end太boring了,要是能吸收Python的indentation代码就好看了,结果现在成为
现实了,就是coffeescript。有了coffeescript之后,我没有什么理由不考虑使用node
了。
优点1: 前后端统一语言。
2. 我在用Play的时候发现了一个问题就是我需要把Scala里的数据手工的转到Json,这
个工作比较boring,而node本身就是JS的,因此object和Json之间的转换特别的方便,
这是我把项目从Play转到node的一个很重要的原因。而node的数据库很典型的是用
mangoDB,从而数据的转换变的非常smooth。
优点2: Json数据方便传递。
3. 我在学JS的时候发现程序只能在browser里运行非常不方便,后来学到node发现可以
在node上直接运行,从而跟python,ruby一样了。JS也不单单只能做web应用,平时写
script也可以。
优点3: 使得JS成为像Python, Ruby一样的脚本语言。
4. Play底下有一个很强大的AKKA,因此我也担心node可能不堪大用,没法实现AKKA可
以实现的应用。后来发现node有cluster module和Socket.IO,完全类似AKKA,可以支
持同样的应用。而且我用AKKA的时候发觉有一个问题就是actor之间的通信是私有协议
,只能处理其他actor的请求,而node的Socket.IO是WebSocket协议,是公开的,因此
可以接受任何的请求。我没有看到过测试数据,但是对于我自己的项目来说,貌似node
完全可以满足需求了。并且貌似Socket.IO这东西,node超前了一步,其他平台还没有
实现?看到这个我才知道原来web上也是可以双向通信的。
优点4: 先进的Socket.IO
5. node采用了异步IO编程模式,这个模式有点意思,因为平时我们写代码大部分都是
同步的,因此需要点思维的转变。现在异步IO越来越流行,因此各个语言都有相应的实
现,但是node不同的是因为JS天生就是异步的,因此写起来最自然。
优点5: 天生的异步编程
6. node上最流行的框架Express.js是学习了Ruby的Sinatra,里边的Jade是学习了HAML
。我做的那个网站正好就是用的Sinatra和HAML,因此感觉很亲切。Sinatra本身就是非
常适合做web service,而现在RIA的发展,backend慢慢变为了就是提供restful web
service。因此,node非常符合现在网络应用的趋势。
以上是我的几点最直接的感受,下面谈谈其他的。
7. node的社区非常活跃。play是2007年开始的,node是2009年开始的。Linkedin上
play只有1364个member, 而node有7094个,可见node的关注和活跃程度。
8. node采用了Google V8 JS engine, 从而达到了C/C++的性能。这点上比Python,
Ruby都强了。
9. node采用了单线程 event-driven 编程模式。从而使得你不用在烦恼线程同步,
race condition, dead lock这些头疼问题了。当然编程模式的变化也需要一定的思维
转换,不过还是挺有意思的。从各方面的反应来看都证明event-driven优于multi
threading,但是我也不敢肯定取消thread就没有副作用吗?可能还是看应用场景吧?
这个还需要时间的检验和思考。我还没想明白如果event-driven这么牛,为什么到了
node才流行开来。
10. 板上大牛介绍的webstorm IDE实在是太好用了。
x*********w
发帖数: 533
2
多谢多谢,不过能不能把标题的括弧去掉,很gay啊
t*********h
发帖数: 941
3
很牛啊 看起来不错 我老也有冲动要实施node.js了

node
JS
node

【在 p*****2 的大作中提到】
: 稍微用了用node,写一点感受吧。本来想优点,缺点单独列出来,但是感觉还是混起来
: 写吧。
: 1. 自己想做点什么东西都不可避免要接触到前端,而前端则是JS的天下,因此前几天
: 看了看JS。这个时候就产生了一个问题了。既然前端必须要用JS,那么为什么不用node
: ,从而前后端统一语言呢?我当时的回答是不会用node,因为JS这个语言是挺灵活有趣
: 的,但是写起来实在是太boring了,前端用是没得其他选择,后端再用可就太痛苦了。
: 但是很快我发现了coffeescript这门语言,它吸收了python, ruby的优点,又解决了JS
: 的很多缺陷,因此我眼前一亮,一下子就喜欢上了这门语言了。当时学Ruby的时候就觉
: 得do end太boring了,要是能吸收Python的indentation代码就好看了,结果现在成为
: 现实了,就是coffeescript。有了coffeescript之后,我没有什么理由不考虑使用node

p*****2
发帖数: 21240
4

不好意思。去掉了。

【在 x*********w 的大作中提到】
: 多谢多谢,不过能不能把标题的括弧去掉,很gay啊
p*****2
发帖数: 21240
5

大牛你现在用什么呢?

【在 t*********h 的大作中提到】
: 很牛啊 看起来不错 我老也有冲动要实施node.js了
:
: node
: JS
: node

i******r
发帖数: 793
6
node.js好像挺火的样子
不过我还没用过
p*****2
发帖数: 21240
7

大牛用什么呢?

【在 i******r 的大作中提到】
: node.js好像挺火的样子
: 不过我还没用过

r*******n
发帖数: 3020
8
赞二爷大作,我也考虑学点node。js了
有个问题,二爷是用coffeescript还是javascript写程序?
另外一个javascript 在google V8 能达到c\c++ 性能有些怀疑啊

node
JS
node

【在 p*****2 的大作中提到】
: 稍微用了用node,写一点感受吧。本来想优点,缺点单独列出来,但是感觉还是混起来
: 写吧。
: 1. 自己想做点什么东西都不可避免要接触到前端,而前端则是JS的天下,因此前几天
: 看了看JS。这个时候就产生了一个问题了。既然前端必须要用JS,那么为什么不用node
: ,从而前后端统一语言呢?我当时的回答是不会用node,因为JS这个语言是挺灵活有趣
: 的,但是写起来实在是太boring了,前端用是没得其他选择,后端再用可就太痛苦了。
: 但是很快我发现了coffeescript这门语言,它吸收了python, ruby的优点,又解决了JS
: 的很多缺陷,因此我眼前一亮,一下子就喜欢上了这门语言了。当时学Ruby的时候就觉
: 得do end太boring了,要是能吸收Python的indentation代码就好看了,结果现在成为
: 现实了,就是coffeescript。有了coffeescript之后,我没有什么理由不考虑使用node

s*********s
发帖数: 140
9
赞大牛总结,用过一点node.js,对于第4点尤其赞同,用websocket写event based
realtime app很好。好像nodejs有几个websocket的third party package?
coffeescript还没用过,二爷推荐后准备有机会试试。
p*****2
发帖数: 21240
10

我用coffeescript,如果没有coffeescript我就不会用node了。
V8可以把JS编译成二进制吧。所以性能是native的。

【在 r*******n 的大作中提到】
: 赞二爷大作,我也考虑学点node。js了
: 有个问题,二爷是用coffeescript还是javascript写程序?
: 另外一个javascript 在google V8 能达到c\c++ 性能有些怀疑啊
:
: node
: JS
: node

相关主题
跟着二爷学Node和scala了哪位大牛来比较一下 java, python, scala
贡献最近面的T家电面一题,顺便求个bless湾区 Pre-IPO 招聘software -engineer(big data server)
System design这东西Hiring Lead Big Data Engineer, Graph Team
进入JobHunting版参与讨论
p*****2
发帖数: 21240
11

websocket我还没怎么玩过。CS对于python,ruby程序员来说会很喜欢。如果JS已经很
熟了,可能就没必要了。

【在 s*********s 的大作中提到】
: 赞大牛总结,用过一点node.js,对于第4点尤其赞同,用websocket写event based
: realtime app很好。好像nodejs有几个websocket的third party package?
: coffeescript还没用过,二爷推荐后准备有机会试试。

F******F
发帖数: 63
12
羡慕你俩搞基都这么有深度,lol

node
JS
node

【在 p*****2 的大作中提到】
: 稍微用了用node,写一点感受吧。本来想优点,缺点单独列出来,但是感觉还是混起来
: 写吧。
: 1. 自己想做点什么东西都不可避免要接触到前端,而前端则是JS的天下,因此前几天
: 看了看JS。这个时候就产生了一个问题了。既然前端必须要用JS,那么为什么不用node
: ,从而前后端统一语言呢?我当时的回答是不会用node,因为JS这个语言是挺灵活有趣
: 的,但是写起来实在是太boring了,前端用是没得其他选择,后端再用可就太痛苦了。
: 但是很快我发现了coffeescript这门语言,它吸收了python, ruby的优点,又解决了JS
: 的很多缺陷,因此我眼前一亮,一下子就喜欢上了这门语言了。当时学Ruby的时候就觉
: 得do end太boring了,要是能吸收Python的indentation代码就好看了,结果现在成为
: 现实了,就是coffeescript。有了coffeescript之后,我没有什么理由不考虑使用node

r*******n
发帖数: 3020
13
这算是爆料吗

【在 F******F 的大作中提到】
: 羡慕你俩搞基都这么有深度,lol
:
: node
: JS
: node

y*******3
发帖数: 16
14
V8有个JIT compiler
虽然比Ruby Python之类的快,但还是不能跟C++比的
x*********w
发帖数: 533
15

疯了....
我是叫你去括号里的内容,不是只把括号去掉

【在 p*****2 的大作中提到】
:
: websocket我还没怎么玩过。CS对于python,ruby程序员来说会很喜欢。如果JS已经很
: 熟了,可能就没必要了。

c****j
发帖数: 802
16
原来你就是800题的小号?

【在 x*********w 的大作中提到】
:
: 疯了....
: 我是叫你去括号里的内容,不是只把括号去掉

t*********h
发帖数: 941
17
大牛好 写web app我喜欢flask 不过node.js貌似效率很高 js也值得学习

【在 p*****2 的大作中提到】
:
: websocket我还没怎么玩过。CS对于python,ruby程序员来说会很喜欢。如果JS已经很
: 熟了,可能就没必要了。

k***x
发帖数: 6799
18
你俩啊,这就是网络时代的“只羡鸳鸯不羡仙”么。。。

【在 x*********w 的大作中提到】
:
: 疯了....
: 我是叫你去括号里的内容,不是只把括号去掉

B*******1
发帖数: 2454
19
真识货,用咱们的v8 engine,但是比较耗油。

node
JS
node

【在 p*****2 的大作中提到】
: 稍微用了用node,写一点感受吧。本来想优点,缺点单独列出来,但是感觉还是混起来
: 写吧。
: 1. 自己想做点什么东西都不可避免要接触到前端,而前端则是JS的天下,因此前几天
: 看了看JS。这个时候就产生了一个问题了。既然前端必须要用JS,那么为什么不用node
: ,从而前后端统一语言呢?我当时的回答是不会用node,因为JS这个语言是挺灵活有趣
: 的,但是写起来实在是太boring了,前端用是没得其他选择,后端再用可就太痛苦了。
: 但是很快我发现了coffeescript这门语言,它吸收了python, ruby的优点,又解决了JS
: 的很多缺陷,因此我眼前一亮,一下子就喜欢上了这门语言了。当时学Ruby的时候就觉
: 得do end太boring了,要是能吸收Python的indentation代码就好看了,结果现在成为
: 现实了,就是coffeescript。有了coffeescript之后,我没有什么理由不考虑使用node

T*******e
发帖数: 4928
20
谢谢这些信息。看起来很有意思,等面试完我也玩玩node.js.
相关主题
刚看了一个职位需求,这么牛的人去哪找,找到了也得多少钱啊。Node+Rest=马工神器?
只会做题,不会职位需要的那些花花绿绿的技能怎么办?提供Vistaprint Software Engineer内部推荐
公孙大神再战古德霸,快去围观NoSQL firm hiring a senior software engineer
进入JobHunting版参与讨论
e***s
发帖数: 799
21
赞二爷神作,同喜欢webstorm,不过要钱的让我止步了。看看以后能不能说服单位买。
d*******r
发帖数: 3299
22
干货真多啊,顶好贴
有个问题问二爷,异步到底是非主流的模式,还是以后的大趋势? 之前学Python的web
frameworks时候,看各个网站的帖子,很多人就说异步的程序,写起来非常反人性...?
所以我一直没敢用琢磨Python Tornado和Node.js
p*****2
发帖数: 21240
23
这个话题比较大了。我随便聊聊吧。
基本上为了实现并行,我看到了三种现代的编程模式,线程,actor, 异步。
线程是现在应用最广的,也是最简单的,大概优缺点如下
优点:
1. 编程简单,并行的实现交给OS来处理,自己不用管关于线程调度的细节
2. 应用面广,几乎所有的语言,平台都支持
缺点:
1. 资源消耗大。线程虽然比进程light,但是由于现在高并发的需求不断增强,线程还
是显得太heavy了。线程需要被分配系统资源,并且context switch也是很costly的。
2. Thread safe很难保证,因此很多bug隐藏很深难于发现, 甚至有人认为不太可能写
出没有bug的多线程程序来。
3. 为了保证Thread safe, 需要同步线程,又不可避免的影响了concurrency。Java论
坛有个人挺有意思,说同步和并发是一致的,其实我认为这两个就是矛盾体。想高并发
就要少同步,或者不同步。
4. 很难调试。
因此线程的优点是上手容易,缺点主要是很难Thread safe和支持高并发。
那么为了解决这两个问题就引入了其他的并行编程模式,actor和异步。
Thread的最根本的问题的根源是多个耦合的程序体同时运行。这里边有两个关键点
1. 多个:多线程
2. 耦合:共享变量
那么我们只要打破两个的其中一个,多线程的各种问题将不复存在。
Actor: 采取了functional programming的概念,取消了变量,并且采用比thread更
light的程序单位actor,使得可以支持高并发。
Actor由于取消了变量,因此互相之间的通信也是采用了异步,event driven的方式,
当然不是纯的,你也可以搞同步,只是不推荐。
异步:采用单线程事件轮询,从而避免了多线程的各种问题。
Actor的并行跟多线程还是类似的,只是用了更小的执行单位。而异步则采取了一种完
全新的模式,因此很多人可能会很不习惯。因此想学习异步编程还真的应该好好学习一
下Javascript的,因为JS天生就是异步的。这样的话会更容易理解。
如果从现在网络应用的发展来看,的确异步是个大趋势。multi threading开始流行的
当年对于并发的要求跟现在来比还是很低很低的。
p*****2
发帖数: 21240
24

有人说买一个也值得。呵呵。

【在 e***s 的大作中提到】
: 赞二爷神作,同喜欢webstorm,不过要钱的让我止步了。看看以后能不能说服单位买。
s*********s
发帖数: 318
25


【在 p*****2 的大作中提到】
:
: 有人说买一个也值得。呵呵。

s*********s
发帖数: 318
26
网上到处是keygen。不过不推荐。

【在 p*****2 的大作中提到】
:
: 有人说买一个也值得。呵呵。

d*******r
发帖数: 3299
27
学到很多!谢谢!! 我其实对各种并发的东西都很感兴趣,只是自己还没时间没能力系
统地全部琢磨一遍。
我一直在想,能不能有一种最好的并发抽象,这种抽象能以一些参数描述大多数的并发
情况。它能应用到:慢到多个host之间的并发,和快到GPU多核之间的并发的场景。那
样的话用起来就方便了。希望这个想法不是nonsense...
这帖子里东西不少,建议二爷整理下你这个帖子里的各种干货,放到你blog上. :)

【在 p*****2 的大作中提到】
: 这个话题比较大了。我随便聊聊吧。
: 基本上为了实现并行,我看到了三种现代的编程模式,线程,actor, 异步。
: 线程是现在应用最广的,也是最简单的,大概优缺点如下
: 优点:
: 1. 编程简单,并行的实现交给OS来处理,自己不用管关于线程调度的细节
: 2. 应用面广,几乎所有的语言,平台都支持
: 缺点:
: 1. 资源消耗大。线程虽然比进程light,但是由于现在高并发的需求不断增强,线程还
: 是显得太heavy了。线程需要被分配系统资源,并且context switch也是很costly的。
: 2. Thread safe很难保证,因此很多bug隐藏很深难于发现, 甚至有人认为不太可能写

d*******r
发帖数: 3299
e***s
发帖数: 799
29
不知道是不是受美帝熏陶,现在真不想这样干。但是unblock youku还是要有的:)

【在 s*********s 的大作中提到】
: 网上到处是keygen。不过不推荐。
e***s
发帖数: 799
30
看君一席帖,胜读十年书

【在 p*****2 的大作中提到】
: 这个话题比较大了。我随便聊聊吧。
: 基本上为了实现并行,我看到了三种现代的编程模式,线程,actor, 异步。
: 线程是现在应用最广的,也是最简单的,大概优缺点如下
: 优点:
: 1. 编程简单,并行的实现交给OS来处理,自己不用管关于线程调度的细节
: 2. 应用面广,几乎所有的语言,平台都支持
: 缺点:
: 1. 资源消耗大。线程虽然比进程light,但是由于现在高并发的需求不断增强,线程还
: 是显得太heavy了。线程需要被分配系统资源,并且context switch也是很costly的。
: 2. Thread safe很难保证,因此很多bug隐藏很深难于发现, 甚至有人认为不太可能写

相关主题
SW Testing contractor工作机会祝贺peking2升级成Staff & Tech Lead
现在只是web泡沫而已,传统行业都在大刀阔斧地改革谈谈nosql这个query的问题
响应800题大牛的号召chat server long pull - facebook 面经
进入JobHunting版参与讨论
t*********h
发帖数: 941
31
yeah. as a magong, we should respect ourselves

【在 e***s 的大作中提到】
: 不知道是不是受美帝熏陶,现在真不想这样干。但是unblock youku还是要有的:)
x*********w
发帖数: 533
32

“异步:采用单线程事件轮询,从而避免了多线程的各种问题。”
单线程事件轮询??是像select模型那样的吗?还是IO complete port那样的?

【在 p*****2 的大作中提到】
: 这个话题比较大了。我随便聊聊吧。
: 基本上为了实现并行,我看到了三种现代的编程模式,线程,actor, 异步。
: 线程是现在应用最广的,也是最简单的,大概优缺点如下
: 优点:
: 1. 编程简单,并行的实现交给OS来处理,自己不用管关于线程调度的细节
: 2. 应用面广,几乎所有的语言,平台都支持
: 缺点:
: 1. 资源消耗大。线程虽然比进程light,但是由于现在高并发的需求不断增强,线程还
: 是显得太heavy了。线程需要被分配系统资源,并且context switch也是很costly的。
: 2. Thread safe很难保证,因此很多bug隐藏很深难于发现, 甚至有人认为不太可能写

p*****2
发帖数: 21240
33

http://stackoverflow.com/questions/10680601/nodejs-event-loop

【在 x*********w 的大作中提到】
:
: “异步:采用单线程事件轮询,从而避免了多线程的各种问题。”
: 单线程事件轮询??是像select模型那样的吗?还是IO complete port那样的?

p*****2
发帖数: 21240
34

多谢。不过感觉解释的又有些糊涂了。回头好好看看。

【在 d*******r 的大作中提到】
: 发2个别人的notes, about concurrency
: http://concur.rspace.googlecode.com/hg/talk/concur.html#landing
: 这个中文的更容易看
: https://github.com/sunfmin/assemblyline/blob/master/keynote.pdf?raw=true

p*****2
发帖数: 21240
35

用公司的机器,不敢乱搞。

【在 s*********s 的大作中提到】
: 网上到处是keygen。不过不推荐。
1 (共1页)
进入JobHunting版参与讨论
相关主题
提供Vistaprint Software Engineer内部推荐问一个F的设计题
NoSQL firm hiring a senior software engineer跟着二爷学Node和scala了
SW Testing contractor工作机会贡献最近面的T家电面一题,顺便求个bless
现在只是web泡沫而已,传统行业都在大刀阔斧地改革System design这东西
响应800题大牛的号召哪位大牛来比较一下 java, python, scala
祝贺peking2升级成Staff & Tech Lead湾区 Pre-IPO 招聘software -engineer(big data server)
谈谈nosql这个query的问题Hiring Lead Big Data Engineer, Graph Team
chat server long pull - facebook 面经刚看了一个职位需求,这么牛的人去哪找,找到了也得多少钱啊。
相关话题的讨论汇总
话题: node话题: js话题: 异步话题: ruby话题: python