TJ 大大宣布退出 node.js 开发,转向 go,原因是弱爆了的并发和分布式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
se77en
V2EX    Node.js

TJ 大大宣布退出 node.js 开发,转向 go,原因是弱爆了的并发和分布式

  •  3
     
  •   se77en 2014-07-04 13:08:06 +08:00 37137 次点击
    这是一个创建于 4122 天前的主题,其中的信息可能已经有所发展或是发生改变。
    86 条回复    2015-01-11 23:59:51 +08:00
    atcuan
        1
    atcuan  
       2014-07-04 13:12:31 +08:00
    看样子要好好学习go了
    loading
        2
    loading  
       2014-07-04 13:17:04 +08:00 via Android
    node 昙花一现?
    coolicer
        3
    coolicer  
       2014-07-04 13:21:27 +08:00
    I still plan on using Node for web sites
    Koa is the one project I’ll continue to maintain

    说明做网页还行 :)
    ine181x
        4
    ine181x  
       2014-07-04 13:22:03 +08:00   1
    我不习惯GO没有包的版本控制
    missdeer
        5
    missdeer  
       2014-07-04 13:34:59 +08:00   1
    est
        6
    est  
       2014-07-04 13:39:20 +08:00
    nodejs 兴起在v8,挂就挂在callback上。。。python也正在朝这个坑走!
    zhujinliang
        7
    zhujinliang  
       2014-07-04 13:40:46 +08:00
    node搞傻快型的应用还是挺方便的
    Daizong
        8
    Daizong  
       2014-07-04 13:42:19 +08:00
    做web开发没有问题,这也是node的优势场景,做别的就勉为其难了
    canesten
        9
    canesten  
       2014-07-04 13:43:02 +08:00 via Android
    @est
    JS是有办法在语言层面做CPS消除callback的
    Daizong
        10
    Daizong  
       2014-07-04 13:43:06 +08:00
    TJ用go也不是开发http应用,是做分布式系统开发,这个场景用node.js这不蛋疼吗
    Daizong
        11
    Daizong  
       2014-07-04 13:43:47 +08:00
    @canesten cps就是使用callback,怎么消除?
    se77en
        12
    se77en  
    OP
       2014-07-04 13:45:33 +08:00   1
    zeinimei
        13
    zeinimei  
       2014-07-04 13:46:11 +08:00
    go 和 node.js哪个做聊天室功能好?
    se77en
        14
    se77en  
    OP
       2014-07-04 13:47:32 +08:00
    @Daizong go 开发 web 应用也比 node.js 强,已经内置了网络库不说,还把 rpc 都实现了
    TangMonk
        15
    TangMonk  
       2014-07-04 13:51:24 +08:00
    最近正在准备用 nodejs,受到打击了。。
    chloerei
        16
    chloerei  
       2014-07-04 13:53:11 +08:00
    哭晕在马桶边。
    leecade
        17
    leecade  
       2014-07-04 13:56:44 +08:00
    大势已去, node 的天空一片灰暗

    不要怪 callback 了, 不都有 co 了吗, 主要是 go 太强了, 谁能组织发起一次 go 的抵制运动吗??
    civet
        18
    civet  
       2014-07-04 13:58:18 +08:00
    @missdeer 看不出笑点……
    canesten
        19
    canesten  
       2014-07-04 14:03:10 +08:00
    @Daizong
    骚瑞,我想说的是CPS变换
    chemzqm
        20
    chemzqm  
       2014-07-04 14:11:46 +08:00
    GO的并发处理,错误处理,工具调试,代码可读性都比JS要好一些,而node官方为了兼容老版本,早已经明确表示不会修复之前严重的设计缺陷。

    没有人愿意把过多时间浪费在该死的回调错误上面。
    est
        21
    est  
       2014-07-04 14:13:31 +08:00
    @canesten 理论是这样。。。实际就是没人做出来。。。。那个coroutine也比较丑,而且tj也说只能解决一半的问题。。
    tokki
        22
    tokki  
       2014-07-04 14:14:32 +08:00
    几周前就发现他一直在研究go的东西
    canesten
        23
    canesten  
       2014-07-04 14:16:37 +08:00
    @est
    老赵很早就做了一个Jscex
    类似的,做的比Jscex好的还有很多
    只是都没进入NodeJS的官方标准
    所以TJ的主要问题不在这个Callback
    比如他提到的
    refactoring with types is pleasant and simple, the tooling Go provides for profiling and debugging is great
    Go是静态的,这方面优势大的多
    ine181x
        24
    ine181x  
       2014-07-04 14:24:03 +08:00   1
    最近在看Elixir ,感觉也可以一试
    akfish
        25
    akfish  
       2014-07-04 14:26:26 +08:00 via iPad
    其实进来就是为了看看有多少人无脑跟风唱衰node。
    知道有坑绕过去,觉得不适用就换别的,多简单的道理。
    No silver bullet.

    个人痛恨callback,但转念一想,node用了js这种入门门槛低的语言,callback的坑恰好能过滤掉一堆低质量开发者。
    jemygraw
        26
    jemygraw  
       2014-07-04 14:28:14 +08:00
    欢迎访问 http://golanghome.com ,备注:此为广告。
    lemonlwz
        27
    lemonlwz  
       2014-07-04 14:32:49 +08:00
    该怎样还是怎样... go 与不 go 都无所谓.
    est
        28
    est  
       2014-07-04 14:40:49 +08:00
    @canesten 哎呀老赵的wind.js看来真是神器。
    chrishine
        29
    chrishine  
       2014-07-04 14:42:23 +08:00
    dropbox也把后台性能要求高的部分用go重写了.
    https://tech.dropbox.com/2014/07/open-sourcing-our-go-libraries/
    一直觉得语言不需要会太多,会C++,go,lua就可以了.
    se77en
        30
    se77en  
    OP
       2014-07-04 14:47:38 +08:00
    @est 用了类似 monad 的特性,有关 js 的 monad 可以看老道的视频
    WildCat
        31
    WildCat  
       2014-07-04 14:54:37 +08:00 via iPhone
    @chloerei 哭晕在厕所!
    S1ahs3r
        32
    S1ahs3r  
       2014-07-04 14:57:22 +08:00   2
    已入scala坑,从此远离纷争,专注逼格
    wb13
        33
    wb13  
       2014-07-04 15:06:11 +08:00
    @S1ahs3r 就是。随便拿个Akka来震慑你们。。。
    sanddudu
        34
    sanddudu  
       2014-07-04 15:14:02 +08:00
    @chloerei 我去天台l
    ShunYea
        35
    ShunYea  
       2014-07-04 15:14:23 +08:00 via Android
    那研究go看看
    se77en
        36
    se77en  
    OP
       2014-07-04 15:16:13 +08:00
    @wb13 说白了不就是 Actor 吗,还是管 Erlang 学的,三种并发模型 CSP,STM,Actor 各有千秋而已
    tabris17
        37
    tabris17  
       2014-07-04 15:19:36 +08:00
    @est 用Jscex不行么
    srdrm
        38
    srdrm  
       2014-07-04 15:20:42 +08:00
    看好go, node在go 面前,真的。。。。
    srdrm
        39
    srdrm  
       2014-07-04 15:22:31 +08:00
    @ine181x 除了这个还能找出多少麻烦的吗?可是其他语言一数一大堆呀
    wb13
        40
    wb13  
       2014-07-04 15:23:10 +08:00
    @se77en 嗯。这年头,比得是干爹。。。
    shangjiyu
        41
    shangjiyu  
       2014-07-04 15:23:13 +08:00
    刚想捡起nodejs 颇受打击。。。
    tabris17
        42
    tabris17  
       2014-07-04 15:23:47 +08:00
    个人理解Node.js根本没有并发吧,只是分成I/O和Work两个线程而已
    anewg
        43
    anewg  
       2014-07-04 15:40:05 +08:00
    语言学家真的好多。跟着新闻里各大神大公司的唱衰喝彩,在“哎呀不学了,这东西没前途”与“大神都专注研究它,肯定是看好它,赶紧跟进“之间无缝频繁切换。。。
    MaiCong
        44
    MaiCong  
       2014-07-04 15:57:31 +08:00
    艹 哭晕在测试
    KennyZJ
        45
    KennyZJ  
       2014-07-04 16:11:38 +08:00
    好多玻璃心
    给个有趣的统计 https://github.com/substack/npmtop
    zeinimei
        46
    zeinimei  
       2014-07-04 16:14:36 +08:00
    我刚买node.js的书你跟我说这个?
    skybr
        47
    skybr  
       2014-07-04 16:16:51 +08:00
    疲软在回调上倒罢了, 但是Go在分布式方面也没有类似erlang和scala akka这些成熟的解决方案啊
    cnbuff410
        48
    cnbuff410  
       2014-07-04 16:30:13 +08:00   1
    cookiebody
        49
    cookiebody  
       2014-07-04 16:36:13 +08:00
    Go社区有福了,因他们得了一位最好的程序员。
    est
        50
    est  
       2014-07-04 16:43:47 +08:00
    学NodeJS的不要哭!你们有机会1折甚至更低价收购一大批NodeJS书籍。
    TangMonk
        52
    TangMonk  
       2014-07-04 16:50:35 +08:00
    TJ 为何还是 Drupal 的contributions
    https://www.drupal.org/user/78427
    est
        53
    est  
       2014-07-04 16:51:30 +08:00
    @TangMonk 传说TJ是个笔名。。根本就不是一个人。
    cnbuff410
        54
    cnbuff410  
       2014-07-04 16:53:08 +08:00
    @est lol,那写这篇文章的是这个团队还是其中一个人呢?
    zaishanfeng2014
        55
    zaishanfeng2014  
       2014-07-04 16:55:59 +08:00
    语言党可以休已,累不累啊你们
    ohsc
        56
    ohsc  
       2014-07-04 16:57:16 +08:00   3
    语言党真肤浅
    zhangxiao
        57
    zhangxiao  
       2014-07-04 17:07:29 +08:00
    @S1ahs3r 哈哈!
    timonwong
        58
    timonwong  
       2014-07-04 17:28:35 +08:00
    文章里面好多感叹号
    dogfeet
        59
    dogfeet  
       2014-07-04 17:47:21 +08:00
    @akfish 赞同你的观点。
    NaN undefined null 什么 a = 0/0 a==a a!=a a===a之类的东西和JS史上最强的隐式类型转换规则,正好把我这种初学者完美的挡在了外面。
    hooluupog
        60
    hooluupog  
       2014-07-04 18:04:34 +08:00   1
    还有这个:
    0 > null
    false
    0 >= null
    true
    0 == null
    false
    0 <= null
    true
    0 < null
    false
    [1] == [1]
    false
    [1] < [2]
    true
    [] + []
    ""
    [] + []*3
    "0"
    Livid
        61
    Livid  
    MOD
    PRO
       2014-07-04 18:05:55 +08:00
    Node 核心团队的 TJ 是这位吧:

    https://github.com/tjfontaine
    akfish
        62
    akfish  
       2014-07-04 18:15:48 +08:00
    @dogfeet 所以我能用Coffee就用Coffee,虽然只是用语法糖解决了问题,但的确省了不少事。
    有说法就是JS是Web界的汇编语言,直接用JS找虐,不如用编译到JS的语言。
    darkcat
        63
    darkcat  
       2014-07-04 18:57:15 +08:00
    少了一个这样的人也无关紧要吧?
    cnbuff410
        64
    cnbuff410  
       2014-07-04 19:21:17 +08:00
    @Livid 看Node社区的说法,这里的TJ是Node ecosystem的核心,不是Node团队的核心
    Livid
        65
    Livid  
    MOD
    PRO
       2014-07-04 19:26:04 +08:00
    @cnbuff410

    这两个人的名字缩写里都有 TJ,我说到 TJ 是这位:

    https://github.com/tjfontaine

    而发博客是这位:

    https://github.com/visionmedia

    你们可以看一下他们页面右上角的 Repositories contributed to
    cnbuff410
        66
    cnbuff410  
       2014-07-04 19:41:17 +08:00
    @Livid 对,我就是说发博客这位是NodeJs ecosystem的最大贡献者。你说的那位是Node这个框架的贡献者。是不一样的。但很明显发博客这位的影响力要大得多
    hui
        67
    hui  
       2014-07-04 20:13:30 +08:00
    @Livid https://nodejsmodules.org 第一页出现次数最多的那个少年离开了
    jakwings
        68
    jakwings  
       2014-07-04 20:19:12 +08:00
    菜鸟表示,是时候再次向大牛看齐了……
    old9
        69
    old9  
       2014-07-04 20:30:28 +08:00
    玩腻了换个新玩具玩而已嘛,没玩腻的继续玩好了,用不着上纲上线的。
    yakczh
        70
    yakczh  
       2014-07-04 20:47:54 +08:00
    标题严重误导,没说并发和分布式弱爆,是说错误处理和callback nodejs的并发还是杠杠的 而且更多的是说兴趣转移了
    ianva
        71
    ianva  
       2014-07-04 20:53:17 +08:00
    TJ 一个人贡献了整个 node.js 社区 0.6% 的项目 https://github.com/substack/npmtop

    rank percent packages author
    ---- ------- -------- ------
    1 0.60 % 548 tjholowaychuk
    2 0.44 % 401 substack
    3 0.41 % 379 jongleberry
    4 0.40 % 367 dominictarr
    5 0.37 % 341 jonschlinkert
    6 0.37 % 337 sindresorhus
    7 0.36 % 331 juliangruber
    8 0.34 % 317 mikolalysenko
    9 0.31 % 289 raynos
    10 0.28 % 260 mathias
    11 0.28 % 257 hughsk
    12 0.28 % 255 forbeslindesay
    13 0.26 % 239 tootallnate
    14 0.23 % 216 clewfirst
    15 0.23 % 208 azer
    clowwindy
        72
    clowwindy  
       2014-07-05 00:30:58 +08:00
    nodejs 的错误处理是个大坑啊。
    pagecho
        73
    pagecho  
       2014-07-05 01:16:15 +08:00
    为何有种幸灾乐祸感 。。。
    把 NodeJS 捧上天的人,真是打了一脸。
    Aether
        74
    Aether  
       2014-07-05 02:01:19 +08:00
    @pagecho 因为大众习惯于兴起就追捧,衰落就踩脚。
    ChiangDi
        75
    ChiangDi  
       2014-07-05 03:55:11 +08:00 via Android
    所以说不要太盲目追求技术潮流,像 Ruby 和Python都是90年代就出来的了
    clowwindy
        76
    clowwindy  
       2014-07-05 05:23:11 +08:00   2
    具体问题具体分析啊。TJ 说的问题无非就是下面这几个,可惜 node.js 社区对这些问题不重视,优先级很低:

    unhandled error 难以排查,错误信息难以理解,如
    https://github.com/joyent/node/issues/7005
    https://github.com/joyent/node/issues/7804


    callback 处理没规范,没文档,不统一,如
    https://github.com/joyent/node/pull/6351


    error callback 混乱,有 bug,不统一,如
    https://github.com/joyent/node/issues/4574
    https://github.com/joyent/node/issues/5729
    https://github.com/joyent/node/pull/7732

    如果你一直看 issues,你会发现 error callback 问题没完没了。这是 node.js 一开始就引入的设计缺陷,导致 error handling 方式碎片化了。在大的项目里,这个问题会非常棘手
    clino
        77
    clino  
       2014-07-05 07:09:15 +08:00 via Android   2
    @est "python也正在朝这个坑走!" 哪有啊? 像gevent这类coroutine的应该基本不用callback吧
    iwege
        78
    iwege  
       2014-07-05 07:33:38 +08:00
    @clowwindy TJ说的都是调试的问题。而且他的库都是他自己写的。callback的确是一个很恶心的问题,使用过了promise发觉也差不多。不过nodejs还有一个proxy的问题。

    proxy使用系统变量的问题在我最后用的时候我记得一直没解。当时是想用hubbot做一些东西,然后发现hubbot没地方设置proxy,之后发现如果库本身不支持,就要去修改库。从我发现要修改不止一个库的时候,我就转用ruby / python 去写了。
    fansekey
        79
    fansekey  
       2014-07-05 08:19:01 +08:00
    @Aether 只是一个开发者不拿node开发并行分布式项目了,这个算不上node衰落吧。还是相当期待下一版的node的。
    openroc
        80
    openroc  
       2014-07-05 12:31:20 +08:00
    @missdeer 没有美工,我这个coder已经被逼成设计了。:(
    clowwindy
        81
    clowwindy  
       2014-07-05 15:27:18 +08:00
    @iwege 不光是调试问题,缺乏规范和一些机制导致开发阶段应该暴露的问题只有在生产环境上才能暴露。
    windyboy
        82
    windyboy  
       2014-07-05 22:24:56 +08:00
    node感觉在我自己使用的范围依然很好
    大神遇到的问题,目前暂时不需要

    不必大纠结,能解决问题就行
    kaelzhang
        83
    kaelzhang  
       2014-07-08 21:08:39 +08:00
    @clowwindy 一个人因为 he or she 的问题被开除了,一个人休产假,还有一个人各种事情都忙不过来,哎好想 donate 点钱,让 izs 全职写 node 啊。
    yangfanacc
        84
    yangfanacc  
       2014-11-14 17:44:20 +08:00   1
    133天后看到这个帖子,不过好消息是nodejs越来越强大了,
    fumer
        85
    fumer  
       2014-12-28 21:01:01 +08:00
    现在nodejs怎么样了
    liyangdal
        86
    liyangdal  
       2015-01-11 23:59:51 +08:00
    @canesten 搜关于Jscex的时候搜到你这个“类似的,做的比Jscex好的有很多。只是都没进入NodeJS的官方标准”的回复,请问类似的都还有哪些?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5219 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 07:22 PVG 15:22 LAX 00:22 JFK 03:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86