声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3729|回复: 3

[Fortran] 为何选择fortran

[复制链接]
发表于 2005-6-28 08:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
到底选择什么样的语言,本身是一类非常具有争议性的问题。曾几何时,在科学计算领<BR>域,就沸沸腾腾地讨论过最好使用什么样的语言。也许我们可以说这是一个见仁见智的<BR>问题,因为我们作为语言的使用者,总是拣自己已经很熟悉的语言,当然总是自己能够<BR>很好驾驭的语言是最好的。但<BR>是具体地针对科学计算来说,由于科学计算问题具有自身的独特的价值标准,在这个价<BR>值标准之下,各种不同的语言还是可以进行客观比较的。<BR>首先我们得把自己面临的任务界定清楚,也就是什么是科学计算问题?<BR>所谓科学计算问题大体上包括如下三个涵义:<BR>●  问题本身以及问题的解答都能够使用数学语言予以精确描述;<BR>●  如果要使用通常的数学方法来给出我们所需要的数值答案,会很麻烦或者根本无法<BR>给出;<BR>●  问题以一定的科学与技术知识作为背景。<BR>我们会看到正是科学计算问题的这种内涵决定了它在选择计算语言时所具有的价值标准。<BR>首先,一个科学计算问题总是要以一个数学计算问题的形式出现,因此描述科学计算问<BR>题的语言应该能够自然地描述数学问题,即要求编程语言和数学语言在表达方式上具有<BR>比较直接自然的对应关系。<BR>然后一个科学计算问题之所以需要使用计算机,那肯定是因为这个问题具有一定的计算<BR>量,那么程序的运行效率往往是选择语言时最重要的考量因素。<BR>正是在这两点上,FORTRAN是现在众多语言当中的绝对胜出者。<BR>在描述数学语言的自然性方面,<BR>FORTRAN可以说比现在还“活”着的任何语言都强。当然在历史上曾经出现过象ALGOL那<BR>样的相当数学化的语言,可惜的是它缺乏市场生存能力,所以就只剩下FORTRAN独美于<BR>今了。FORTRAN擅长描述数学计算,这点应该是几乎没有什么争议的。也正是由于这个<BR>缘故,FORTRAN的易学是公认的<BR>。任何一个科技专业人员,只要对于一个具体问题的数学求解过程有明晰的概念,要把<BR>这个求解过程翻译为FORTRAN语言是非常轻松的。<BR>至于执行速度方面,则常常有些似是而非的说法误导初学者。最典型的一个错误观念就<BR>是“C代码的执行速度最快”。这个说法来源于C语言的特殊性,因为C语言更多的是一种<BR>系统编程语言,对硬件的控制能力很强,在高级语言里面无出其右者,于是给人以C程序<BR>的速度必定最快的印象。但是忘记了这个速度快是来自C语言的系统编程特性,而在做科<BR>学计算时,并不需要过多地涉及到系统内核,因此C语言的长处在科学计算方面可以说并<BR>不能适当地发挥,相反,在数值计算方面,C绝对不是FORTRAN的对手,因为相对于C以<BR>系统编程为目的,FORTRAN是以科学计算为目的的,语言本身在设计之初,就考虑到了<BR>针对科学计算而进行优化,因此FORTRAN生成的可执行代码是高度优化的。<BR>实际的运行效率方面的比较也表明了FORTRAN在科学计算方面的优越性。无论是国内还是<BR>国外,也无论是经典的串行机还是并行矢量机,大量的经验表明,在执行同一个科学计<BR>算任务时,C或C++代码的效率都低于FORTRAN代码。<BR>除了常见的对于C有着高效的迷信之外,还常常有着对于FORTRAN是如何如何落后的偏见<BR>。当然这种偏见是有来源的,那就是曾经功勋卓著的FORTRAN 77在很长一段时间里面,<BR>都缺乏进取心,使得迄今很多人提起FORTRAN,想到的就是在当今时代已经显得非常落后<BR>的FORTRAN77。实质上,FORTRAN标准在进入FORTRAN 90时代之后,特别是现时的<BR>FORTRAN 95版本,可以说只要是对于科学计算有用的特性,C和C++有的,现在<BR>FORTRAN 95绝对不缺,而反过来FORTRAN95所具有的很多针对科学计算的特性,却是C<BR>和C++所不具有的。哪怕是C++最引以为傲的面向对象性质,FORTRAN 2000也将全面引<BR>入。所以说,FORTRAN已经完全赶上了编程语言的潮流。<BR>与程序运行的效能有关的另外一个重要方面,是程序语言能否支持程序的并行运行,在<BR>这点上,可以说FORTRAN表现了它的最大优势,因为FORTRAN 95正是着力于获得并行<BR>计算的能力的一个版本。<BR>由于现代科学计算的规模越来越大,计算并行化是一条不得不走的路线,现代计算机硬<BR>件的发展,也使得并行化具有实际的普及前景,因为不仅专门的大型计算机是并行的,<BR>现在的一般PC都可以拥有多个处理器,因此现代的从事科学计算的用户不得不掌握并行<BR>化计算的编程能力。<BR>但是进行并行化编程所遇到的一个主要问题,就是任何过程编程语言都内在地使用线性<BR>存储模式,也就是一个数组的元素总是被认为按照数组元素的先后顺序而连续地存储在<BR>内存单位里面,这样一种模式就决定了这样的过程编程语言无法真正地实现对并行计算<BR>的描述。而FORTRAN95则完全改观了这种制约,因为在FORTRAN 95里面对于数组以及<BR>数组运算建立了全新的面向并行化计算的概念,诸如纯过程的概念,逐元过程的概念,<BR>FORALL结构等等,都有效地摆脱了线性存储模式的制约,使得FORTRAN95成为描述并<BR>行计算的标准语言,特别是那些专用的数据并行化语言都纷纷采用FORTRAN作为基础语<BR>言,例如高性能FORTRAN(High Performance Fortran),Fortran D,Vienna Fortran,以<BR>及CRAFT等。这样就使得使用FORTRAN95编写的程序可以直接在这些数据并行化语言的<BR>平台上运行,而反过来使用这些专用语言编写的程序也可以毫不困难地转移到FORTRAN <BR>95平台上运行,这样一种局面使得FORTRAN在并行计算领域独领风骚。<BR>综上所述,我们完全可以说FORTRAN 95是进行科学计算的最佳语言,作为需要进行科学<BR>计算的科学与技术领域的工作人员,掌握FORTRAN95远比掌握C,C++等语言要重要得多<BR>,至于那些计算机符号代数与数值计算软件,例如MATHEMATICA,MAPLE,MATLAB,Macsyma,MATHCAD等等,只能说是进行科学计算的教学模型与辅助工具,由于它们都<BR>提供了现成的算法,因此可以使得初学者能够应用于一些简单的场合,真正要用它们来<BR>对付稍微大一点的问题,有经验的用户都知道,那会是一件非常痛苦的强人所难的事情<BR>。因此最终要自由地进行科学计算,则非FORTRAN莫属。 <BR>
回复
分享到:

使用道具 举报

发表于 2005-6-28 14:12 | 显示全部楼层

[推荐]ANSYS使用问答精华

fortran  好
发表于 2005-7-28 11:30 | 显示全部楼层
<P>用于计算,当然还是fortran好了</P>
发表于 2005-7-30 09:25 | 显示全部楼层
fortran运行效率很高,同样的数值计算问题比VB快几十倍<BR>但现在有很多free的 c/c++数值库可供利用,也有很多的软件是用c/c++写的。<BR>建议在精通fortrn的同时也要熟悉一下c/c++<BR>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-13 20:45 , Processed in 0.103529 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表