您可能知道,Fortran是一种科学计算语言.然而,最着名的科学计算高级语言的核心是用C而不是Fortran编写的.为什么?
回答你原来的问题:Matlab最初是用Fortran编写的. 但第一件事一个MATLAB,克里夫·莫勒尔,和他的伙伴在1983年所做的创作者是重写整个应用Matlab的在C:
Jack Little离开了他在咨询公司的工作,并在西尔斯购买了一台新的COMPAQ便携式计算机.机器只有256 KB的内存,没有硬盘; 杰克不得不换掉5-1/4英寸的软盘来编译程序.杰克和史蒂夫花了一年半的时间用C语言重写MATLAB,增加了他们所设想的新功能.(MATLAB和MathWorks超过二十年的成长)
我认为今天一个更相关的问题是问:为什么他们在1983年转向C?
我的猜测是C可能具有Fortran没有的某些功能,因此切换更加不可取,并且符合代码可维护性.
Fortran77中缺少的一个杀手级功能是动态内存分配(动态内存分配仅在Fortran90中添加).在我看来,解决这个单一限制将是一个可怕的交易破坏者.
编辑:
dmckee的回答很好地解释了为什么使用Fortran77会很痛苦.
根据经验猜测:
内存管理.
Fortran(好吧,编写matlab时出现的fortran)不支持动态内存管理.这使得大型工作变得痛苦(例如,参见CERNLIB).
CERNLIB通过在公共块分配高达大阵列,和执行类似的(de)分配器的阵列的单元一个malloc解决了这个问题.笨重但工作:数组偏移是指针等价物,你离开...
我的理解是Matlab是用大杂烩的语言编写的,包括但不限于C,FORTRAN,Java和Matlab本身.
我相信它在幕后使用了最好的库,包括LAPACK(FORTRAN),FFTW(C)以及更多.
我认为原始版本是纯粹的FORTRAN,但随着它变得更加精致和商业化,他们并不羞于为每个组件使用正确的语言.我不怪他们 - 我讨厌在FORTRAN中编写解析器或GUI!
我希望用以下陈述来限定这个答案 - 我对Fortran或Matlab一无所知
但是我想你几乎在你的问题中回答了你自己的问题.
为什么不使用科学语言编写内核.您可以使用最合适的语言来完成手头的任务.内核最好用C语言编写,因为它更适合处理内核等低级任务(使用内存管理等)
内核不是科学应用,因此您不会使用科学语言.
再说一次,我可能完全不合适,但我认为这是一个非常合乎逻辑的答案.