Ruby语言做大型数学运算怎么样?

Python016

Ruby语言做大型数学运算怎么样?,第1张

这种脚本语言做大型计算,计算能力肯定是不太够的,一般都依赖于其它语言编写的高性能计算的库,比如python就有numpy/scipy/pandas/matplotlib等一系列库,这使得python比较适合进行大型科学计算,ruby也有相当的库sciruby,不过成熟度还不太够,sciruby官网上的说法是,这个库已经经过了测试,但是还没有经过实战的检验,在使用中要有可能会遇到bug的心理预期。原话如下:

Word to the wise: These gems have been tested, but are not battle-hardened. If you’re thinking of using NMatrix (or other SciRuby components) to write mission critical code, such as for a self-driving car or controlling an ARKYD 100 satellite, you should expect to encounter a few bugs — and be prepared for them.

需要强调的一点是, 语言只是工具, 在特定应用场景下满足特定需要的工具,

脱离应用场景来谈不但没有意义而且还会扣友善度。以下经验(吐槽)都是针对大规模科学计算的, 个人电脑写一个下午的代码,然后跑十分钟的代码趁早去用

Python/R/Matlab/Ruby, 上手容易, 功能强大, 网上资源丰富, 绝对是您无悔的选择。

大家的难用都是从

fortran77那里感受来的,看过80年代的Fortran77代码,混乱程度简直爆表。再看2000年左右的Fortran95代码,马马虎虎,

算是中规中矩的结构化语言。最近看过2010年左右的Fortran2003 code(Fortran的lua接口)

。抽象类,构造函数满天飞,我擦好多feature都不知道。

所以你们批判的不是Fortran, 而是任性的,非结构化的coding

style。这不过恰巧搞科学的这票人都不太鸟coding standard和coding style,

所以Fortran写出来的代码大都比较乱, 这是使用者自身需要学习一个, 跟语言本身关系不大吧。见过师弟师妹们写的C代码,

比Fortran版本的还魔幻。

而C和C++里面也有goto, 也有extern可以不做函数参数参数检查,倒是没见你们怎么喷。Fortran里面也有interface来声明函数原型, 倒也没见你们怎么用。

如elemental, pure, 函数重载, forall, where,

Fortran95新加的功能一大部分是为并行度设计的,其语法也非常偏向高维的大数组操作, 自动并行化(openmp

workshare)用起来简直比C++爽不知道多少倍。在OpenMP+MPI的场合加上千核量级的并行度,还是有优势的。还有一种东西叫CAF,

CoArray Fortran, 专门针对大并行度的超级计算机添加了很多新语法,估计知道的人不多。

更不要说Fortran2003/2008支持面向对象。当然在虚函数方面好像比C++缺了一个功能, 其他都是完整复刻的。