还真是,不过 Swift 这边的问题其实是很多苹果官方的好东西都只给自己做而不会考虑跨平台,要先把其他平台的库封装成和苹果那些库一样的接口,好消息是 Swift 和 Python 在这一方面其实在一条起跑线上,因为 Python 也得做封装。
Haskell 也是可惜了,GHC 支持 ARM64,但 stack 还没有,HLS 也一直都是实验性支持。
还真是,不过 Swift 这边的问题其实是很多苹果官方的好东西都只给自己做而不会考虑跨平台,要先把其他平台的库封装成和苹果那些库一样的接口,好消息是 Swift 和 Python 在这一方面其实在一条起跑线上,因为 Python 也得做封装。
Haskell 也是可惜了,GHC 支持 ARM64,但 stack 还没有,HLS 也一直都是实验性支持。
相较于 Java 其实我还是更好奇 Scala。
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 还没戏)
所以我还是挺担心的,万一英特尔这波没抗住,工程届直接倒退回没有成品软件的刀耕火种时代(然后再用几十年的时间把这些成品软件补出来)或者直接回到前信息化时代了。目前很多 FEM、CEF 软件并不能原生支持 ARM64,甚至连 AMD 的 CPU 都被性能负优化。(EE、CE 和科学没准能好一点?)
前信息化时代估计不至于, 更多可能是被迫买一台能够兼容的电脑 (或者是捡垃圾, 或者是从仓库里面寻宝) 然后就是用旧的程序继续跑.
不过如果这个领域比较热门的话, 倒是会有很多的现代化工作, 比如物理蒙卡模拟这边有 Gean4.ji (Julia 绑定 Cpp), 或者是重写某些 Fortran 的代码为 Cpp + Python.
但是如果做这种事未必能产生足够的回报,就不想做了……说到底基础设施到底还是依托具体的硬件。
做这样的事最终是对硬件厂商有好处,但是硬件厂商往往没有余力去配套完整的软件设施。只要别人不做,或者做了没有那么多用户,那就不影响产品竞争力。
可问题是,机器和开发者的寿命都不是无限的。
Julia会成为仅次于Python的科学计算语言。
有一个系统建模语言,Modelica,但不是编程语言。 基于或支持这种语言的软件包括Dymola, MapleSim, AmeSim, WOLFRAM SYSTEM MODELER, 还有苏州同元的MWORKS
如果只是教学的话,不是应该效仿HtDP之类的,自己临时糊一个语言吗?我记得APL好像也是出于教学目的糊出来的吧。Sedgewick和Wayne的《算法》、Appel的“虎书”(C语言版),满屏的语法噪声,我觉得如果不是相关语言的专业程序员根本没法看,何况这些东西(通常)也并不能直接复制粘贴到项目里面。
是这样的, 所以一些不那么显学的实验室里面就需要去抢救比自己年级还要大的设备, 然后尝试将其现代化 .
问题不在于移植的困难 (前人代码比较抽象, 或者相关资料根本没有/甚至有错), 而是移植/现代化没啥动力 (没法发文章/没钱 + 很花时间, bushi)
商业公司的软件可能会好一些? 我看 Mathematica 现在 (14.1) 就已经支持 ARM 了.
Julia 现在结果的正确性怎么样了?我记得好像有人写文章吐槽过这个问题。
突然又想到了一个问题:D 语言、Elixir/Erlang 社区里有人在搞科学/工程计算么?
Elixir 我倒看到过有人在搞 AI。
R 语言不能漏哇
Julia肯定算,是优化强推的,专门为科学计算从语言底层来优化功能。
Octave、Scilab算是matlab开源版软件吧,语言好像也没什么像matlab那么成形完备吧
以我用过的开源信号处理软件包来看,哪怕用到 C lib 也基本是同时支持 octave 和 matlab 的。和 matlab 区别实质上只有闭源的 toolbox 和没有足够完善的编译器。
Octave 官方 Wiki 声称只有很少区别,如果有重要特性 octave 不支持可以作为 bug report 提交
https://wiki.octave.org/Differences_between_Octave_and_Matlab
请教楼主,已经学习过python 和 R了,还有必要了解Julia么?不知道它相对于python和R有哪些优点和缺点?
嗯嗯,Octave已经很完善了(“不完善”我的表述不大合适,提语言我脑子里想的是scilab,Octave只能说没simulink这个大工具,虽然我不大用但工程实践上很有用;其实simulink这个虽然在matlab软件里,和原生matlab相对独立),平替matlab(原生部分)确实没有大问题了,我们上课经常用它平替。