V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
linxiaoziruo
V2EX  ›  程序员

为什么大公司偏向于用 go,小公司偏向于 node

  •  
  •   linxiaoziruo · 2019-07-10 10:51:06 +08:00 · 13626 次点击
    这是一个创建于 1993 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2019-07-11 16:22:10 +08:00
    学习了,学习了。
    第 2 条附言  ·  2019-07-12 10:12:15 +08:00
    给各位大佬作揖了!发这个标题本意是想了解一下 go,看目前适不适合学习。迫于找不到好的引人回复的切入点,就起了这个名字。
    63 条回复    2019-07-11 23:33:54 +08:00
    luobo
        1
    luobo  
       2019-07-10 11:03:26 +08:00
    应该会选择适合项目的语言,盲目从众不可取
    babytomas
        2
    babytomas  
       2019-07-10 11:06:42 +08:00
    如果不看项目需求的话, 大概是因为 node 比较容易招人.

    如果看项目需求的话, #1 说得对.
    starsriver
        3
    starsriver  
       2019-07-10 11:07:10 +08:00 via Android   ❤️ 2
    大公司还是喜欢 c,java 的,golang 是类 c,标准比较规范,小组开发,代码风格容易控制,比 c 好些。node 的程序是 script 类型,解释型的语言注定得不到大型开发商的青睐,只是参加到生产环境里,每一次请求过来后进行编译消耗的性能就比编译型语言多出 15%左右,并发速度可想。弱类型语言优化有限,大部分开发者只是停留在业务层,底层算法、编译、性能优化...似乎和他们无关,而且..实际上大部分解释型语言,或者说弱类型语言都没有进行严格的内存管理,消耗巨大,这都是钱。
    starsriver
        4
    starsriver  
       2019-07-10 11:11:57 +08:00 via Android
    各有各的优势,存在即合理。

    node 主要在快速开发占优势,而且大部分前端人都多多少少懂 js,转到 node 也比较容易。
    linxiaoziruo
        5
    linxiaoziruo  
    OP
       2019-07-10 11:15:34 +08:00
    go 是更容易编写工程项目的 C ?有序不混乱?
    chendy
        6
    chendy  
       2019-07-10 11:15:49 +08:00
    这是哪里的调查得出的结果?
    linxiaoziruo
        7
    linxiaoziruo  
    OP
       2019-07-10 11:17:38 +08:00
    @chendy 我自己的经验,工作 6 年,在两家创业公司待过,都是 node。现在鹅厂突然要大面积铺开 go。再加上论坛一些反馈得出来的感观印象。
    micean
        8
    micean  
       2019-07-10 11:19:19 +08:00
    java、php、python ???
    lzxgh621
        9
    lzxgh621  
       2019-07-10 11:19:34 +08:00 via iPhone
    nodejs 现在貌似处于批判阶段,逐渐被人不喜,没有证据,纯感受。
    akira
        10
    akira  
       2019-07-10 11:19:42 +08:00   ❤️ 1
    大公司偏向于用 java, 小公司偏向于 java
    zjsxwc
        11
    zjsxwc  
       2019-07-10 11:19:56 +08:00
    php、c++ ???
    max1024
        12
    max1024  
       2019-07-10 11:21:50 +08:00
    node 容易学了, 会点前端的都会 node
    ChiangDi
        13
    ChiangDi  
       2019-07-10 11:22:31 +08:00
    后端大小公司都偏向 java
    kongkongyzt
        14
    kongkongyzt  
       2019-07-10 11:24:07 +08:00
    ?? 鹅厂哪里要大面积铺开 Go 了? 后台这边我看到的新项目的技术选型还是用的大部分人都比较熟悉的 C 的技术栈
    linxiaoziruo
        15
    linxiaoziruo  
    OP
       2019-07-10 11:38:43 +08:00
    @kongkongyzt 已经在搭建环境了,也就这半年到一年的事。
    waising
        16
    waising  
       2019-07-10 12:13:41 +08:00 via iPhone
    @linxiaoziruo ali 应该没那么容易转 可能出现 2 个派别
    ben1024
        17
    ben1024  
       2019-07-10 12:16:59 +08:00
    node.js ? node.js 怕是最难招人的
    cuzfinal
        18
    cuzfinal  
       2019-07-10 12:17:14 +08:00
    不是都偏向 Java ?
    nethard
        19
    nethard  
       2019-07-10 12:18:56 +08:00 via iPhone
    go 代码可替代性强,交接容易吧
    maro
        20
    maro  
       2019-07-10 12:22:06 +08:00
    node.js 主要是有个前端就能顶上去用 企业节省用人成本 但是前端驱动的代码真的难看。。。
    starsriver
        21
    starsriver  
       2019-07-10 12:28:46 +08:00 via Android
    @linxiaoziruo go 在基本语法上有些类似 c, go 的数据结构更统一,开发团队规定下来基本上大家都能很快适应,我在看阿里 go 的 api 时候,他们的 api 没有很多注释,尝试 print,出来的东西分不清是数组还是字符串。。。直接看源码了,不费力。还有就是 go 的编译器比 c 智能,能够得到比较优化的汇编指令。速度比 c 慢一点,但是当参与到生产环境中效力其实差不多,毕竟瓶颈主要是网络 io 和内存条。
    love
        22
    love  
       2019-07-10 12:34:48 +08:00
    @starsriver 麻烦你对比一下 go 和 node 的速度再来评论
    lamada
        23
    lamada  
       2019-07-10 12:48:55 +08:00
    大公司都会用吧。使用场景不同。
    abcbuzhiming
        24
    abcbuzhiming  
       2019-07-10 12:49:43 +08:00
    小公司偏向 Node 的原因和他们当年偏向 PHP 的原因是一样的——成型快,不考虑后期维护,反正小公司很少有项目能活过 3 年的,Node 比 PHP 的优势在于它的招人成本进一步变低了。大公司以前偏向 Java,因为他们有长期的业务需求,这类业务是绝对不能用动态语言构建的,无法维护和迭代。现在蹦出来一个语法是 C 系,资源占用比 Java 少的多,同时特性很少玩不出花样(这就意味着培训容易的多,且代码风格比较容易统一)。当然会倾向这个语言
    abcbuzhiming
        25
    abcbuzhiming  
       2019-07-10 12:51:44 +08:00
    @love 我这么说吧,虽然 go 的性能确实强很多,但是这里混的人,很少能遇到谈性能的场合的,python 那么慢的语言照样有大量的 web 服务在线上跑。
    love
        26
    love  
       2019-07-10 12:57:02 +08:00
    @abcbuzhiming 我的意思是 node 的性能也很强,特别是做网络服务并不比 java 差太多。 另外 node 并不意为着不好维护,typescript 同样是完善的强类型语言
    finian
        27
    finian  
       2019-07-10 13:03:12 +08:00
    @starsriver 「 node 的程序是 script 类型,解释型的语言注定得不到大型开发商的青睐,只是参加到生产环境里,每一次请求过来后进行编译消耗的性能就比编译型语言多出 15%左右,并发速度可想。」这个多出 15% 的数据哪里来的?你 Java 不要用任何的 Reactor 模式写个接入层,然后和 Node.js 比比谁的并发高呗。
    yuankui
        28
    yuankui  
       2019-07-10 13:09:18 +08:00
    先问是不是,再问为什么?

    而且,不能抛开具体的应用场景来说这个问题。
    就我所见,小公司,后台开发,还是 Java 最多。

    如果真是有个哪个公司选的是 node,那估计创始人之一是前端初出身。
    如果选 Go,那估计创始人之一,是 C/C++出身。。
    Lucups
        29
    Lucups  
       2019-07-10 13:21:44 +08:00   ❤️ 2
    恕我直言,绝大多数小公司都撑不到要考虑性能问题的阶段......

    对于小公司来讲,人力成本 >> 服务器费用,性能提升带来的收益远不能覆盖人力支出。
    对于大公司来讲就不一样了,千台节点的集群,性能提升 10%,就节省百台服务器,规模效应明显。

    这样表现出来的可能就是技术栈的选择了,小公司更倾向于选择开发效率高的技术栈。

    所以我觉得,那些把 wordpress 玩的很溜的人对小公司的价值极大。
    version
        30
    version  
       2019-07-10 13:22:50 +08:00 via iPhone
    小企业主要很多老板不懂,他们老一辈认为 java 是最好的,银行也用呢,如果现在大部分创业技术出身的铁定是会用 nodejs 的,底层复杂业务再用其它语言写业务,现在的很现实的问题不赚钱的时候养不起几十个 java 开发,可能就只做一个项目,投一千万也是瞬间没得
    大企业主要是合作模式,每人工作量不多,要勾心斗角帮派模式,自然不会选择不稳定的动态语言,不可控,不好限制类型输入输出
    brust
        31
    brust  
       2019-07-10 13:35:18 +08:00
    我们性能用不到 10%
    3 个 java 的小公司
    tt67wq
        32
    tt67wq  
       2019-07-10 13:47:54 +08:00
    你这才 3 家就出结论了?
    abelmakihara
        33
    abelmakihara  
       2019-07-10 13:54:32 +08:00
    因为 node 给人第一印象就不够专业(误
    strcmp
        34
    strcmp  
       2019-07-10 13:55:54 +08:00
    结论错误
    icy37785
        35
    icy37785  
       2019-07-10 13:57:16 +08:00 via iPhone
    为什么看到的大公司都是各种技术并行,小公司 PHP 只手遮天。现在转型 go 的越来越多倒是,但是也大小公司都在转,没发现过多的倾向性,你如果不提 go 和 node,说大公司偏向 JAVA 小公司偏向 PHP 我倒是可以部分认同。
    QQ2171775959
        36
    QQ2171775959  
       2019-07-10 13:58:35 +08:00
    这个不好说,具体的还是要看什么项目吧。还有就要看团队对于这些的掌握程度。
    Corbusier
        37
    Corbusier  
       2019-07-10 14:01:20 +08:00 via iPhone
    node 有概率节省用人成本(手动狗头
    sampeng
        38
    sampeng  
       2019-07-10 14:05:43 +08:00
    没这么讲究。。看上层决定用什么。。这种东西从来不是底层小码农能决定的。。。
    我心里一万个愿望用 rust。也没见人搭理我啊。。。
    lizz666
        39
    lizz666  
       2019-07-10 14:06:36 +08:00
    待过四家公司,有大有小,后端基本都是 java
    ben1024
        40
    ben1024  
       2019-07-10 14:06:49 +08:00
    @Corbusier 概率这个词用的好
    dabaibai
        41
    dabaibai  
       2019-07-10 14:27:26 +08:00
    js 便宜
    go 贵
    FrankHB
        42
    FrankHB  
       2019-07-10 15:02:23 +08:00
    ==,鹅厂的 C 艹都用成那样,真敢大规模铺开 go ???
    JohnSmith
        43
    JohnSmith  
       2019-07-10 15:08:26 +08:00
    cloud 也有一部分影响
    janxin
        44
    janxin  
       2019-07-10 15:58:36 +08:00
    创业公司门槛低效率高的语言很正常,可以快速开展业务迭代,再创业公司初期阶段变化快的时候非常有用。这种时候脚本语言很有优势,另外考虑到培训班产出数量,Java 也是不错的选择。

    至于项目要求,根本不重要,先活下来再说。等业务量上来的时候,十有八九都需要重写了。
    lookas2001
        45
    lookas2001  
       2019-07-10 16:13:51 +08:00 via Android
    go 是趋势吧(憋打窝)
    有生态(对比 c ),性能强(对比各大解释性语言),语法简单(相对)。
    Ncanback
        46
    Ncanback  
       2019-07-10 16:29:42 +08:00
    抛开场景谈绝对,都是耍流氓
    starsriver
        47
    starsriver  
       2019-07-10 16:48:07 +08:00 via Android
    @love 我不知道你说得对比是什么意思,平台,业务是什么,比什么?。如果是运行速度,编译型和解释型语言根本没有可比性。
    kopp123
        48
    kopp123  
       2019-07-10 16:53:23 +08:00
    因为 go 是趋势. 基于 docker k8s 的生态越来越成熟. golang 易于上手,简单容易理解的并发模型减少心智消耗. 性能也不错。现在的趋势是很多中间件和云产品用 go。估计过段时间后端 web 也会越来越多。
    starsriver
        49
    starsriver  
       2019-07-10 16:59:42 +08:00 via Android
    @finian 你的并没有说清楚你争论的东西,本地测试并发,还是数据库 api 并发,还是网络请求并发。并发量多少? cpu 用几核?网络延迟多少?宽带多少?

    不少博主做的测试一抓一大把,原生 java 和 node 对比,要么齐平,要么 node 慢一截。特别是单机多核短时间处理大量请求下,java 几乎比 node 快一倍。

    只有一种情况下 node 赢了,那就是单核 cpu 处理 10000 以上的应答。但是这个没有意义,有谁会在你的业务上等待 70 多秒,nginx 默认设置都超时了。

    测试十几年前就做了,底层和编译器并没有变化多少的情况下,再做一次没有必要。
    abcbuzhiming
        50
    abcbuzhiming  
       2019-07-10 21:29:56 +08:00
    @love 提 ts 之前我觉得你非常有必要弄明白一件事,node 本身是 js vm 环境,这个环境现在并不能像 jvm 那样,支持别的语言编译成字节码或者 jit 什么的直接跑,ts 一样要把自己编译成 js,才能跑在 node 上。ts 是很优秀,我经常也用,但是 ts 的存在,并不能解决 nodeJS 的窘境,除非哪天 Node 大升级,变成类似 JVM 那样的开发规范型虚拟机,其它语言直接 JIT
    love
        51
    love  
       2019-07-10 22:00:58 +08:00
    @abcbuzhiming 编译到 js 和编译到字节码有本质区别吗?
    justyy
        52
    justyy  
       2019-07-10 23:20:51 +08:00
    GE uses nodejs.
    CoderGeek
        53
    CoderGeek  
       2019-07-11 00:06:58 +08:00
    不知道说的对不对 偏向 cloud 发展 再加上近些年 docker k8s 等因素 向 go 贴近了些
    wupher
        54
    wupher  
       2019-07-11 10:04:03 +08:00
    我觉得是招聘难度决定的。

    javascript 相对 golang 确实要好招多了。
    macha
        55
    macha  
       2019-07-11 10:16:41 +08:00
    我觉得标题应该还为,为什么小项目喜欢用 node,大项目喜欢用 go 或者 Java。
    karllynn
        56
    karllynn  
       2019-07-11 10:28:35 +08:00
    go 是趋势,当然 Java 也有他的优势。不过我估计到 go2 的时候 Java 就没什么优势了,除了已有的生态。

    node 最大的作用当然是全栈了,一个当两个用给 1.5 个的工资,省钱。
    Takamine
        57
    Takamine  
       2019-07-11 11:28:43 +08:00
    先问是不是,再问为什么。
    finian
        58
    finian  
       2019-07-11 12:47:05 +08:00
    @starsriver 注意审题,我已经说了是接入层。你自己上面的论点,不也是没有给出具体环境和条件吗,一来就说 Node.js 请求性能消耗多出 15%,现在又说在业务上等待 70 秒,你这些数据都是随口就来的吗?另外谁说十几年来「底层和编译器并没有变化多少」?你去比比现在的 V8 和十几年前的 JS 解析引擎性能?
    buzailianxi
        59
    buzailianxi  
       2019-07-11 13:03:17 +08:00
    公司看的是成本和赚钱,能赚到钱,老板不介意你用啥
    starsriver
        60
    starsriver  
       2019-07-11 13:53:18 +08:00 via Android
    @love 编译到 js 和编译到机器码计算确实有很大区别。一个 for 加法循环,编译后的机器码执行速度将近是解释型代码的两倍,虽然 js 引擎做了不少事情,但是要求 js 立即执行,这么短时间内不可能完成很复杂的优化。像 java 这种编译一次就能完成大部分优化,编译时间长但是值得,ts 编译到 js,本质还是解释。
    starsriver
        61
    starsriver  
       2019-07-11 14:56:48 +08:00 via Android
    @finian node 的小量并发确实比 java 强,甚至高出一半。数据是有的,测试环境就纯 api 调用,限制单核双线程,没有运行其他任务,也没有什么好说的,只是测试代码做了点手脚,为了防止缓存偷懒用的是随机计算圆周率 10 到 256 位小数并返回结果来模拟真实业务,单纯 return true 没有意义。没有对结果进行验证。

    用办公室的四台机器同时轰炸,请求量是平均给四台机器的,用最慢的结果作为测试结果。

    总请求量达到五千左右,node 完成要将近 70 秒, java 差不多是一半的时间。(我当然清楚大部分时间是用来计算圆周率了:doge

    只是鄙人来这破站没几天不能发链接,也没写博客的习惯。(你让一个天天玩 fpga 的人写什么博客

    不深究底层实现方式,坑太深,一不小心挖到汇编又是一个史诗级教科书。
    notreami
        62
    notreami  
       2019-07-11 16:12:23 +08:00
    我天、我天、我天、我天。我真无聊。
    我居然点进来,看一群大佬和菜鸟对扯。
    jaskle
        63
    jaskle  
       2019-07-11 23:33:54 +08:00 via Android
    好没劲,又在论语言,都学会了自己根据项目选呗。c++,java,node 都会,我在考虑要不要学 go
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5353 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:08 · PVG 16:08 · LAX 00:08 · JFK 03:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.