V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
51300520
V2EX  ›  问与答

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

  •  1
     
  •   51300520 · Jul 6, 2020 · 4049 views
    This topic created in 2134 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
        1
    lsvih  
       Jul 6, 2020   ❤️ 1
    有 numjs 呀,不过不是很好用(
    akira
        2
    akira  
       Jul 6, 2020
    生态的问题吧
    wzzzx
        3
    wzzzx  
       Jul 6, 2020
    生态
    weixiangzhe
        4
    weixiangzhe  
       Jul 6, 2020 via Android   ❤️ 2
    高性能 py 都是胶水吧,底层都是 c++
    jmc891205
        5
    jmc891205  
       Jul 6, 2020 via iPhone   ❤️ 2
    因为 numpy 背后是 cpp
    Vegetable
        6
    Vegetable  
       Jul 6, 2020
    nodejs 初始版本 2009 年
    numpy 1995 年
    python 1991 年
    ClericPy
        7
    ClericPy  
       Jul 6, 2020   ❤️ 2
    可以稍微猜一下.

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

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

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

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

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


    以上如有错误, 麻烦指出一下, 大都是道听途说来的, 正好纠正一些自己的错误观念
    mxT52CRuqR6o5
        8
    mxT52CRuqR6o5  
       Jul 6, 2020 via Android
    生态+1
    据说很多论文都会用 python,很难想象科学计算的论文的实验是用 nodejs 做的
    而且 python 的数组取下标的方括号的表达能力要比 js 强很多吧
    ipwx
        9
    ipwx  
       Jul 6, 2020
    JS 的类型转换之类的可以把推公式的研究僧逼疯。
    murmur
        10
    murmur  
       Jul 6, 2020
    py 粘胶水的却爽,一个 CDLL 就粘起来了
    gen900
        11
    gen900  
       Jul 7, 2020
    楼主试试用 js 计算 "2"+2, "2"-2, 1.38*10 回来告诉大家答案。
    sslyxhz
        12
    sslyxhz  
       Jul 7, 2020 via Android
    js 数值计算有不少坑
    crella
        13
    crella  
       Jul 7, 2020
    @gen900 我用 python3 、ruby 、chrome 自带控制台的 js 算 1.38*10 都是等于 13.799999999999999,反而用 msys perl5 算 my $a = 1.38*10; print($a."\n");是 13.8
    nutting
        14
    nutting  
       Jul 7, 2020
    没见经常问 js 计算的一些莫名其妙的考题么
    shyangs
        15
    shyangs  
       Jul 7, 2020
    @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
        16
    crella  
       Jul 7, 2020
    @shyangs lua 测试 1.38*10 和 0.1+0.2 得到 13.8 和 0.3 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5989 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 01:48 · PVG 09:48 · LAX 18:48 · JFK 21:48
    ♥ Do have faith in what you're doing.