• 请不要在回答技术问题时复制粘贴 AI 生成的内容
linxiaoziruo
V2EX  ›  程序员

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

  •  
  •   linxiaoziruo · Jul 10, 2019 · 15410 views
    This topic created in 2674 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  Jul 11, 2019
    学习了,学习了。
    Supplement 2  ·  Jul 12, 2019
    给各位大佬作揖了!发这个标题本意是想了解一下 go,看目前适不适合学习。迫于找不到好的引人回复的切入点,就起了这个名字。
    63 replies  •  2019-07-11 23:33:54 +08:00
    luobo
    luobo
    Jul 10, 2019
    1
    应该会选择适合项目的语言,盲目从众不可取
    babytomas
    babytomas
    Jul 10, 2019
    2
    如果不看项目需求的话, 大概是因为 node 比较容易招人.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    不深究底层实现方式,坑太深,一不小心挖到汇编又是一个史诗级教科书。
    notreami
    notreami
    Jul 11, 2019
    62
    我天、我天、我天、我天。我真无聊。
    我居然点进来,看一群大佬和菜鸟对扯。
    jaskle
    jaskle
    Jul 11, 2019 via Android
    63
    好没劲,又在论语言,都学会了自己根据项目选呗。c++,java,node 都会,我在考虑要不要学 go
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2796 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 172ms · UTC 14:10 · PVG 22:10 · LAX 06:10 · JFK 09:10
    ♥ Do have faith in what you're doing.