用 javascript 做科学计算的最佳的方案是什么?
发布于 2 个月前 作者 timqian 333 次浏览 来自 问答

最近计划使用 javascript 做一个教学性质的计算量子力学 库(这样就可以在浏览器中运行了)。已经有一些 matlab 代码了( https://github.com/timqian/things-to-build/issues/7 )。但是想要把 matlab 代码用 js 实现时,却发现还没有很成熟的库来做科学计算。

google 了一下午,找到这些库: https://github.com/timqian/scientific-computation-libs-in-javascript

mathjs 似乎是其中最活跃,最成熟的库了。但和 matlab , python ( numpy )比起来还是差很多,只有一些基本的函数。

另一种思路是将 C/C++ 的库编译成 javascript(使用emscripten)。或是更进一步,通过WebAssembly的编译, C/C++ 或者其他语言写的代码都可以在浏览器环境运行了。只是这个项目目前还在开发阶段, MVP 都还没有。

所以,我的问题是:在浏览器中做科学计算,最佳的方案是什么?目前 和 未来

5 回复

要么自己绑定,要么不要用javascript。

任何事情都有边界,包括语言,没有万能的东西。

@coordcn 谢谢回复,自己绑定指的是什么?

@timqian

C/C++绑定到javascript,这样代码成本和性能成本相对较小。比如nodejs,就是libuv绑定到v8,libuv是c实现的异步库,是nodejs的核心。

javascript虽然在脚本语言中算快的,但跟C/C++还是有数量级差距的,少则10几倍,多则上百倍的差距。即便编译成javascript,性能要损失很多的。

不要想一种语言通吃所有场景,还是那句话,任何事情都有边界。

当然这都是个人选择的问题,如果你觉得有必要的,自己搞也是可以的。

@coordcn C/C++ 绑定只对 node 适用吧,browser 似乎是不可以的

不是想通吃,只是教学性质的项目嘛。借助 web 这个平台,易于演示和传播

@timqian

node绑定了,浏览器可以设计接口调用,浏览器做输入输出,node做实际计算。

如果是简单的演示,不计较性能的话,简单的自己写也行。

回到顶部