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

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

APL,J。

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

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

1 个赞

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

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

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

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

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

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

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

R 语言不能漏哇

Julia肯定算,是优化强推的,专门为科学计算从语言底层来优化功能。

Octave、Scilab算是matlab开源版软件吧,语言好像也没什么像matlab那么成形完备吧

1 个赞

以我用过的开源信号处理软件包来看,哪怕用到 C lib 也基本是同时支持 octave 和 matlab 的。和 matlab 区别实质上只有闭源的 toolbox 和没有足够完善的编译器。

Octave 官方 Wiki 声称只有很少区别,如果有重要特性 octave 不支持可以作为 bug report 提交

https://wiki.octave.org/Differences_between_Octave_and_Matlab

1 个赞

请教楼主,已经学习过python 和 R了,还有必要了解Julia么?不知道它相对于python和R有哪些优点和缺点?

嗯嗯,Octave已经很完善了(“不完善”我的表述不大合适,提语言我脑子里想的是scilab,Octave只能说没simulink这个大工具,虽然我不大用但工程实践上很有用;其实simulink这个虽然在matlab软件里,和原生matlab相对独立),平替matlab(原生部分)确实没有大问题了,我们上课经常用它平替。

1 个赞

不用了吧,除非后面有什么项目或协作用到Julia了,可以临时学,也就是了解点语法和包什么的。

重点还是对着你的研究项目深入深入;我其实就用用Matlab、Python,仅在bioinfo或统计进阶工具时偶尔用用R。用深入一个工具远比学一堆有用,你看看你们领域什么大家用的最多、效率最高,用那个就好哇

3 个赞

最近 Clojure Conj 上有一个 talk: “Scientific Clojure, a bird’s eye view” by Thomas Clark (youtube 链接)

1 个赞

不是有coreml吗?

看中的是 AI 能带动 GPGPU,光是 AI 的话 CoreML 钉死了应用的方式,不能好用在图像音频文本以外的数据上

coreml更往下有MPS,已经有一大堆更复杂数值计算操作了(包括拉普拉斯算子等)。再往下有metal。而且也没有什么其它数据,最后不都是转为向量,矩阵。

现在apple都开始去搞JAX和MLX去了(

MetalPerformanceShader 我用过,最大痛点浮点数不支持 64 位,而且支持的图像格式是定死的 RGBA,没有高维数组,对于我要做的应用没什么直接用处

Metal shader 用我原来的 Intel Mac 不好搞,今天 M4 MacBook 到了在配环境,看看再说。

看了下 MLX,感觉这个利好 APL

1 个赞

float64就别说了,目前性价比最高的float64设备都还是10年前titan呢(我也不知道你要做什么,RGBA也没什么问题啊,图像预处理一下不就好了(至于ndarray,mps是有的MPSNDArray | Apple Developer Documentation ,我不知道你从哪儿看到没有的,不至于这么基础内容都没有,就算没有不过是加个下标transform就行了,至少我用过的3D卷积需要的 (N,B,CI,CO,D,W,H,K1,K2)是没有任何问题的

1 个赞

没有LEAN么

NDArray 这文档全是自动生成的方法名,啥都没写,真有人用吗?

double float CUDA 一直都支持的,倒不如说从十年前开始的 N 卡几乎全都支持的。

1 个赞

光支持没速度啊(而且支持也是假支持,除了V100/P100/A100/H100这种,全都是模拟的(你用metal也可以用fp32模拟一个

1 个赞