|
发表于 2005-3-19 02:44:24
|
显示全部楼层
[转载]Fortran闲谈。(建议那些认为在数值计算上Fortran不如C++的人进来看看)。
[这个贴子最后由anyone在 2005/03/20 07:26am 第 2 次编辑]
看来是要单挑我, HEHE.
这不过是一篇鼓吹FORTRAN的文章, 太长了, 没法仔细研究. 只说几点.
关于执行速度:
所谓FORTRAN执行速度比C高, 基本是误导. FORTRAN语言不能在电脑上直接运行. 必须先要翻译成机器语言. 不幸的是, 这项翻译/优化的工作是别人用C来作的. 不要告诉我那些搞编译器的都是活雷峰, 好的优化方法都只给FORTRAN用, 而不用在C的编译器上. 对执行效率我个人的经验, 对一般的计算为主的程序, 在主流机器上, 用比较好的编译器, FORTRAN和C如果做同样东西而且写的基本一样的话, 执行速度基本也是一样的. 这很容易理解, 因为相关的优化方法相对比较成熟, 大家用的都是一样的. C++问题复杂一点, 时间关系就不说了.
描述数学语言的自然性方面:
自从有了面向对象的语言出现以后, 已经不是什么了不起的东西了. 连所有运算符(+-..)都可以根据不同对象重新定义. 在FORTRAN95里你可以用"+"把两个矩阵直接加起来, 但你能把两个链表用"+"直接加起来吗? (这句有错, 见后面回贴)
FORTRAN的进步:
除了并行运算方面不是很了解, 其他的改进基本是把C/C++的好东西拿过来, 没什么革命性的. 即使FORTRAN2000全面引入面向对象性质, 也只是搞了个新的"C++". 且不说现在有谁有成熟的支持FORTRAN2000的编译器? 几年前不错的C++编译器就已经遍地都是, 很多还是免费的.
个人意见总结:
FORTRAN在科学计算里是不错的, 但并不比C/C++更好. 在开发大型程序方面, 至少在目前, 因为面向过程的特点, 不如C++. 从学习角度来说, FORTRAN 比C/C++更容易. 目前FORTRAN在CFD里还有很大市场, 但从总体来看, FORTRAN在衰退, 今后语言更新/技术支持上都可能会有问题.
|
|