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

2020-07-06 21:49:16 +08:00
 51300520

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

2992 次点击
所在节点    问与答
16 条回复
lsvih
2020-07-06 22:03:14 +08:00
有 numjs 呀,不过不是很好用(
akira
2020-07-06 22:08:01 +08:00
生态的问题吧
wzzzx
2020-07-06 23:02:41 +08:00
生态
weixiangzhe
2020-07-06 23:05:41 +08:00
高性能 py 都是胶水吧,底层都是 c++
jmc891205
2020-07-06 23:06:46 +08:00
因为 numpy 背后是 cpp
Vegetable
2020-07-06 23:17:27 +08:00
nodejs 初始版本 2009 年
numpy 1995 年
python 1991 年
ClericPy
2020-07-06 23:20:21 +08:00
可以稍微猜一下.

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

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

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

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

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


以上如有错误, 麻烦指出一下, 大都是道听途说来的, 正好纠正一些自己的错误观念
mxT52CRuqR6o5
2020-07-06 23:21:58 +08:00
生态+1
据说很多论文都会用 python,很难想象科学计算的论文的实验是用 nodejs 做的
而且 python 的数组取下标的方括号的表达能力要比 js 强很多吧
ipwx
2020-07-06 23:25:22 +08:00
JS 的类型转换之类的可以把推公式的研究僧逼疯。
murmur
2020-07-06 23:25:31 +08:00
py 粘胶水的却爽,一个 CDLL 就粘起来了
gen900
2020-07-07 08:30:04 +08:00
楼主试试用 js 计算 "2"+2, "2"-2, 1.38*10 回来告诉大家答案。
sslyxhz
2020-07-07 08:44:40 +08:00
js 数值计算有不少坑
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
2020-07-07 09:02:57 +08:00
没见经常问 js 计算的一些莫名其妙的考题么
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
2020-07-07 10:28:31 +08:00
@shyangs lua 测试 1.38*10 和 0.1+0.2 得到 13.8 和 0.3 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/687698

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX