51300520
V2EX  ›  问与答

为什么 nodejs 不适合科学计算,而 Python 适合?

  •  1
     
  •   51300520 · Jul 6, 2020 · 4484 views
    This topic created in 2315 days ago, the information mentioned may be changed or developed.

    说到 javascript 优缺点,都知道适合 IO 密集不适合 CPU 密集,我知道 javascript 不适合 cpu 密集型处理,因为它是单线程的,可 python 不一样也是单线程吗?如果说弄成多进程处理二者都可以搞呀。 奇怪的是 python 做科学计算有强大的 num.py ,不知道 javascript 为啥没人搞一个类似的东西出来。

    16 replies  •  2020-07-07 10:28:31 +08:00
    lsvih
    lsvih
    Jul 6, 2020❤️1
    1
    有 numjs 呀,不过不是很好用(
    akira
    akira
    Jul 6, 2020
    2
    生态的问题吧
    J55s5
    J55s5
    Jul 6, 2020
    3
    生态
    weixiangzhe
    weixiangzhe
    Jul 6, 2020 via Android❤️2
    4
    高性能 py 都是胶水吧,底层都是 c++
    jmc891205
    jmc891205
    Jul 6, 2020 via iPhone❤️2
    5
    因为 numpy 背后是 cpp
    Vegetable
    Vegetable
    Jul 6, 2020
    6
    nodejs 初始版本 2009 年
    numpy 1995 年
    python 1991 年
    ClericPy
    ClericPy
    Jul 6, 2020❤️2
    7
    可以稍微猜一下.

    早年 JS 被吐槽了很久回调地狱, 估计吓跑了很多人

    然后全程异步又把一群面向过程编程的科学家给玩迷糊了: 我明明先做的 A, 为什么 B 先输出了结果?

    NodeJS 和 V8 诞生之前, JS 生存环境也比较窄, 圈内似乎就没怎么重视它的其他领域应用

    再然后, 仅从设计层面, JS 一直都不太算优雅, 虽然这几年赶上浪潮进步很快, 但上面那几个反直觉的特性还是劝退了当初不少刚上手的人... 从 C 的亲和度上, py 也确实要好不少, 至少是亲爸.

    至于拿 JS 做, 毕竟也是老牌图灵完备的语言, 做肯定能做, 就像之前有人拿 JS 写 win98... 就是不主流


    以上如有错误, 麻烦指出一下, 大都是道听途说来的, 正好纠正一些自己的错误观念
    mxT52CRuqR6o5
    mxT52CRuqR6o5
    Jul 6, 2020 via Android
    8
    生态+1
    据说很多论文都会用 python,很难想象科学计算的论文的实验是用 nodejs 做的
    而且 python 的数组取下标的方括号的表达能力要比 js 强很多吧
    ipwx
    ipwx
    Jul 6, 2020
    9
    JS 的类型转换之类的可以把推公式的研究僧逼疯。
    murmur
    murmur
    Jul 6, 2020
    10
    py 粘胶水的却爽,一个 CDLL 就粘起来了
    gen900
    gen900
    Jul 7, 2020
    11
    楼主试试用 js 计算 "2"+2, "2"-2, 1.38*10 回来告诉大家答案。
    sslyxhz
    sslyxhz
    Jul 7, 2020 via Android
    12
    js 数值计算有不少坑
    crella
    crella
    Jul 7, 2020
    13
    @gen900 我用 python3 、ruby 、chrome 自带控制台的 js 算 1.38*10 都是等于 13.799999999999999,反而用 msys perl5 算 my $a = 1.38*10; print($a."\n");是 13.8
    nutting
    nutting
    Jul 7, 2020
    14
    没见经常问 js 计算的一些莫名其妙的考题么
    shyangs
    shyangs
    Jul 7, 2020
    15
    @gen900
    @ClericPy
    @nutting


    Node.js (2009) 出來的太晚, 不過 Perl 5 為什麼沒有來和 Python 搶這塊地盤呢

    ```Perl 5
    print 0.1+0.2; # 0.3
    print "1"+2; # 3
    ```

    ```Python 2
    print 0.1+0.2; # 0.30000000000000004
    ```
    crella
    crella
    Jul 7, 2020
    16
    @shyangs lua 测试 1.38*10 和 0.1+0.2 得到 13.8 和 0.3 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1467 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 10:36 · PVG 18:36 · LAX 02:36 · JFK 05:36
    ♥ Do have faith in what you're doing.