V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
51300520
V2EX  ›  问与答

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

  •  1
     
  •   51300520 · 2020-07-06 21:49:16 +08:00 · 3218 次点击
    这是一个创建于 1635 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    16 条回复    2020-07-07 10:28:31 +08:00
    lsvih
        1
    lsvih  
       2020-07-06 22:03:14 +08:00   ❤️ 1
    有 numjs 呀,不过不是很好用(
    akira
        2
    akira  
       2020-07-06 22:08:01 +08:00
    生态的问题吧
    wzzzx
        3
    wzzzx  
       2020-07-06 23:02:41 +08:00
    生态
    weixiangzhe
        4
    weixiangzhe  
       2020-07-06 23:05:41 +08:00 via Android   ❤️ 2
    高性能 py 都是胶水吧,底层都是 c++
    jmc891205
        5
    jmc891205  
       2020-07-06 23:06:46 +08:00 via iPhone   ❤️ 2
    因为 numpy 背后是 cpp
    Vegetable
        6
    Vegetable  
       2020-07-06 23:17:27 +08:00
    nodejs 初始版本 2009 年
    numpy 1995 年
    python 1991 年
    ClericPy
        7
    ClericPy  
       2020-07-06 23:20:21 +08:00   ❤️ 2
    可以稍微猜一下.

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

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

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

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

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


    以上如有错误, 麻烦指出一下, 大都是道听途说来的, 正好纠正一些自己的错误观念
    mxT52CRuqR6o5
        8
    mxT52CRuqR6o5  
       2020-07-06 23:21:58 +08:00 via Android
    生态+1
    据说很多论文都会用 python,很难想象科学计算的论文的实验是用 nodejs 做的
    而且 python 的数组取下标的方括号的表达能力要比 js 强很多吧
    ipwx
        9
    ipwx  
       2020-07-06 23:25:22 +08:00
    JS 的类型转换之类的可以把推公式的研究僧逼疯。
    murmur
        10
    murmur  
       2020-07-06 23:25:31 +08:00
    py 粘胶水的却爽,一个 CDLL 就粘起来了
    gen900
        11
    gen900  
       2020-07-07 08:30:04 +08:00
    楼主试试用 js 计算 "2"+2, "2"-2, 1.38*10 回来告诉大家答案。
    sslyxhz
        12
    sslyxhz  
       2020-07-07 08:44:40 +08:00 via Android
    js 数值计算有不少坑
    crella
        13
    crella  
       2020-07-07 08:46:11 +08:00
    @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  
       2020-07-07 09:02:57 +08:00
    没见经常问 js 计算的一些莫名其妙的考题么
    shyangs
        15
    shyangs  
       2020-07-07 10:23:11 +08:00
    @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  
       2020-07-07 10:28:31 +08:00
    @shyangs lua 测试 1.38*10 和 0.1+0.2 得到 13.8 和 0.3 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2828 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:45 · PVG 10:45 · LAX 18:45 · JFK 21:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.