目前来看还有哪些语言还有可能挤身进科学/工程计算中?

+1,比较希望 Swift 能发展起来。

P.S. 话说 Zig 怎么样?

不太行,社区看不到有做科学计算的,可能还不如 Haskell

1 个赞

很奇怪为什么Java 会没有在科学计算上有比较优秀的支持?感觉落后C/C++ 一大截。

Stan 还是比较小众且是基于C/C++和R基础上的包,不算是一种编程语言。另外传统的概率模型,也可以自己来更高效率实现其中推断相关的采样策略,Stan提供的支持很好,但过于通用有时候也很低效,特别是在大参数的条件下。 从我的经验看,基于深度学习的概率模型,更有应用场景和范围。

还真是,不过 Swift 这边的问题其实是很多苹果官方的好东西都只给自己做而不会考虑跨平台,要先把其他平台的库封装成和苹果那些库一样的接口,好消息是 Swift 和 Python 在这一方面其实在一条起跑线上,因为 Python 也得做封装。

Haskell 也是可惜了,GHC 支持 ARM64,但 stack 还没有,HLS 也一直都是实验性支持。

相较于 Java 其实我还是更好奇 Scala。

1 个赞

Java 可以用,https://scijava.org 还有 Apache 的数学库都比较 solid,就是不太好利用 SIMD,Scala 同理。还是做金融的更多。

Intel oneAPI 虽然说是公开标准,也有部分是开源项目,出了 Intel 平台也一样没能用的(想用 AMD 和 NVIDIA 还要自己编译不包括闭源组件的 toolkit),最主要的是桌面 CPU 萎了,除非回心转意不搞做不好的大小核,适合做科学计算的好东西恐怕以后一段时间只有 Xeon 才有。

AMD 也在做高性能计算,但还是在计算集群而不是面向个人用户。

我也是对scala一直比较感兴趣,很喜欢这个语言的collection 库设计。只要Java能对科学计算支持好,scala 理论上就可以直接拿来用。 但这些年scala 感觉用的人越来越少了,我个人还挺想在生物数据分析上,多利用这个语言,开发一些软件包。 在金融领域,现在还有很多公司在利用Scala么?

主要是 JetBrains 发明了 Kotlin 吸走了大量的潜在用户。JetBrains 其实承认 Scala 满足了他们对语言的要求,但 Scala 是 EPFL 的 JetBrains 不可能和其他人共享话语权,所以他们要自立门户。(虽然他们的理由是 Scala 不够快,但这其实不能算主要原因,因为快慢是可以优化的)

这没辙,因为 Java 最开始设计是希望抹消平台差异的 JNI 也不怎么好用,只能看看 GraalVM 和 Scala Native 了。(不过也希望渺茫,这俩可能比 Zig 和 Haskell 还没戏)

1 个赞

所以我还是挺担心的,万一英特尔这波没抗住,工程届直接倒退回没有成品软件的刀耕火种时代(然后再用几十年的时间把这些成品软件补出来)或者直接回到前信息化时代了。目前很多 FEM、CEF 软件并不能原生支持 ARM64,甚至连 AMD 的 CPU 都被性能负优化。(EE、CE 和科学没准能好一点?)

前信息化时代估计不至于, 更多可能是被迫买一台能够兼容的电脑 (或者是捡垃圾, 或者是从仓库里面寻宝) 然后就是用旧的程序继续跑.

不过如果这个领域比较热门的话, 倒是会有很多的现代化工作, 比如物理蒙卡模拟这边有 Gean4.ji (Julia 绑定 Cpp), 或者是重写某些 Fortran 的代码为 Cpp + Python.

但是如果做这种事未必能产生足够的回报,就不想做了……说到底基础设施到底还是依托具体的硬件。

做这样的事最终是对硬件厂商有好处,但是硬件厂商往往没有余力去配套完整的软件设施。只要别人不做,或者做了没有那么多用户,那就不影响产品竞争力。

可问题是,机器和开发者的寿命都不是无限的。

Julia会成为仅次于Python的科学计算语言。

有一个系统建模语言,Modelica,但不是编程语言。 基于或支持这种语言的软件包括Dymola, MapleSim, AmeSim, WOLFRAM SYSTEM MODELER, 还有苏州同元的MWORKS

APL,J。

老不是问题,Fortran 活得好好的。

Java 的 Vector JCP 迭代了 9 次了:JEP 489: Vector API (Ninth Incubator)

如果只是教学的话,不是应该效仿HtDP之类的,自己临时糊一个语言吗?我记得APL好像也是出于教学目的糊出来的吧。Sedgewick和Wayne的《算法》、Appel的“虎书”(C语言版),满屏的语法噪声,我觉得如果不是相关语言的专业程序员根本没法看,何况这些东西(通常)也并不能直接复制粘贴到项目里面。

是这样的, 所以一些不那么显学的实验室里面就需要去抢救比自己年级还要大的设备, 然后尝试将其现代化 :sweat_drops:.

问题不在于移植的困难 (前人代码比较抽象, 或者相关资料根本没有/甚至有错), 而是移植/现代化没啥动力 (没法发文章/没钱 + 很花时间, bushi)

商业公司的软件可能会好一些? 我看 Mathematica 现在 (14.1) 就已经支持 ARM 了.

Julia 现在结果的正确性怎么样了?我记得好像有人写文章吐槽过这个问题。

突然又想到了一个问题:D 语言、Elixir/Erlang 社区里有人在搞科学/工程计算么?

Elixir 我倒看到过有人在搞 AI。