主题:FORTRANN做计算相对于C/C++有什么优点?
crazyboylcy
[专家分:50] 发布于 2009-11-18 22:26:00
[size=5]如题,问一个简单的白痴问题,FORTRAN用于计算,相对于C/C++有什么优点而使得他的生命力如此的顽强?[/size]
回复列表 (共21个回复)
11 楼
asymptotic [专家分:16630] 发布于 2009-11-21 20:26:00
十楼的朋友: Fortran 为什么精度高(我想是与 C/C++ 比吧)?这一点我真的不理解?哪里可以看出来呀? 另外,C/C++ 程序就不能在 32、64 bit 机上移动?别忘了,现在很多 Fortran 编译器还是用 C 代码写的呢!
我用 Fortran,很大的原因是:对数组的支持,比如 Assumed-Size, Deffered-Shape 等;至于,说到代码,就看你研究领域前人业已积累的代码了;若是一张白纸,用 C 未尝不可。至于用现有的程序库,现在 Lapack、IMSL 等库都有 C 版本的;而且近来,越来越多的 C 库开发出来了,并不比 Fortran 差。
但熟练掌握 C 的绝对比 Fortran 花的时间多。
12 楼
lishhit [专家分:2400] 发布于 2009-11-22 09:34:00
版上很早就有类似发问的帖子,我觉得回答的已经很详细了。
http://bbs.pfan.cn/post-240549.html
13 楼
shenjinggege [专家分:3260] 发布于 2009-11-22 09:58:00
[quote]版上很早就有类似发问的帖子,我觉得回答的已经很详细了。
http://bbs.pfan.cn/post-240549.html[/quote]
你挖出来的古董帖子确实很犀利
14 楼
crazyboylcy [专家分:50] 发布于 2010-03-10 12:32:00
[quote]为何你的id跟mltx相似?[/quote]
巧合,纯属巧合~
15 楼
zouchu [专家分:80] 发布于 2010-03-14 11:24:00
(1)Fortran速度快,一般新手不用太高级功能就能写出高效代码;c可以达到Fortran速度,但是需要高手来写,一般人写的c代码速度慢;c++写高效代码需要非常小心。一个简单例子是c99中的restrict关键字,很多编译器需要特别使用,而且不是c++标准。很多c++代码同c99不兼容,而有人说使用restrict关键字不符合c++思想。
(2)Fortran面向科学计算。对于非系统级程序员(5k-10k行代码以上)没有必要去用OOP和指针,会增加开发时间,而且代码的传承性不好(这一点对实验室很重要,铁打的营盘流水的兵,程序越简单越容易上手越好)。甚至有些人认为最好不用OOP和指针,模块化编程对c和fortran差不多,fortran更好。
即使高手用指针后,程序速度也会下降不少;而且用了指针后程序难读,学习速度变慢。(想想现在有些软件采用底层的开发思想,同时为了利用相关程序库,用c来实现OOP,典型的是现在的gerris程序,但是其学习曲线非常变态)
高手可以去用OOP和指针,只要有时间和精力。
(3)Fortran最容易学习,C成为高手有可能,C++高手就太难了(也最容易拿概念忽悠)。用C++写大型数值软件的始终是极少数人,有这个时间不如把精力放在其它上面。Fortran还有个好处是可用知识退化比较慢, 几年不工作,捡起来的速度比较快,对于非专业程序员的科研人员比较有用。
16 楼
weixing1531 [专家分:2580] 发布于 2010-03-16 20:04:00
刚才看了一本书《Introduction to Programming with Fortran》(中文书译为《Fortran权威指南》)
书上说是目前世界上15%的程序代码是用FORTRAN写的
书中原文:Some 15% of code worldwide is estimated to be in Fortran.
17 楼
yrliu [专家分:750] 发布于 2010-03-16 21:58:00
[quote]刚才看了一本书
书上说是目前世界上15%的程序代码是用FORTRAN写的[/quote]
有这么多?不知道是什么时候,怎么统计的。
18 楼
yeg001 [专家分:14390] 发布于 2010-03-18 01:46:00
觉得fortran代码是以前的积累比较多, 毕竟是最古老的语言.
现在每年的代码数量都在剧增, 我觉得这个比例会下降的.
这个讨论也是老问题了, 那个好用用那个吧.
19 楼
chinasoul [专家分:140] 发布于 2010-03-19 00:46:00
Fortran比C容易掌握多了,语法也简单;
也学过C,但个人感觉编起程序来很费劲。
搞科研的话当然更希望把最多的心思用在科研内容上,
而不是跟调试程序较劲。
20 楼
thanatus [专家分:60] 发布于 2010-03-19 09:52:00
fortran的并行计算是最重要的原因之一,其它的不行
另外象老代码的遗留,矩阵的强大处理,代码优化和执行、计算速度,所以fortran在计算这块是老大,只要是做计算,用fortran总没有错。而c能做的事情,fortran也都能做,只不过有些功能实现没有c简便而已
我来回复