一个不错的Fortran教程 _yuanqingfei的博客-程序员宝宝

技术标签: 〖Fortran〗  语言  c++  fortran  mathematica  数学计算  编程  

发信人: radiboga (Junior year), 信区: programming
标  题: 一个不错的Fortran教程
发信站: 一塌糊涂 BBS (Thu Aug 28 17:30:04 2003), 本站(ytht.net)

http://krsna.lamost.org/popular/fortran/fortran.htm
另外,还有一本叫做<<Fortran 95 程序设计>>(彭国伦 著, 中国电力出版社 2002)的书也很不错.

Fortran这个东西非常自然,简单,对于学数学的人来说
反正我是看了两天第二本书之后发现我用Fortran已经比用C更熟了.
C我可是用过两个学年的...


摘第一份教程里面的一节出来以供参考.

___________________________________

1.3  为什么选择FORTRAN
到底选择什么样的语言,本身是一类非常具有争议性的问题。曾几何时,在科学计算领域,就沸沸腾腾地讨论过最好使用什么样的语言。也许我们可以说这是一个见仁见智的问题,因为我们作为语言的使用者,总是拣自己已经很熟悉的语言,当然总是自己能够很好驾驭的语言是最好的。但
是具体地针对科学计算来说,由于科学计算问题具有自身的独特的价值标准,在这个价值标准之下,各种不同的语言还是可以进行客观比较的。

首先我们得把自己面临的任务界定清楚,也就是什么是科学计算问题?

所谓科学计算问题大体上包括如下三个涵义:

●    问题本身以及问题的解答都能够使用数学语言予以精确描述;

●    如果要使用通常的数学方法来给出我们所需要的数值答案,会很麻烦或者根本无法给出;

●    问题以一定的科学与技术知识作为背景。

我们会看到正是科学计算问题的这种内涵决定了它在选择计算语言时所具有的价值标准。

首先,一个科学计算问题总是要以一个数学计算问题的形式出现,因此描述科学计算问题的语言应该能够自然地描述数学问题,即要求编程语言和数学语言在表达方式上具有比较直接自然的对应关系。

然后一个科学计算问题之所以需要使用计算机,那肯定是因为这个问题具有一定的计算量,那么程序的运行效率往往是选择语言时最重要的考量因素。

正是在这两点上,FORTRAN是现在众多语言当中的绝对胜出者。

在描述数学语言的自然性方面,
FORTRAN可以说比现在还“活”着的任何语言都强。当然在历史上曾经出现过象ALGOL那样的相当数学化的语言,可惜的是它缺乏市场生存能力,所以就只剩下FORTRAN独美于今了。FORTRAN擅长描述数学计算,这点应该是几乎没有什么争议的。也正是由于这个缘故,FORTRAN的易学是公认的
。任何一个科技专业人员,只要对于一个具体问题的数学求解过程有明晰的概念,要把这个求解过程翻译为FORTRAN语言是非常轻松的。

至于执行速度方面,则常常有些似是而非的说法误导初学者。最典型的一个错误观念就是“C代码的执行速度最快”。这个说法来源于C语言的特殊性,因为C语言更多的是一种系统编程语言,对硬件的控制能力很强,在高级语言里面无出其右者,于是给人以C程序的速度必定最快的印象。但
是忘记了这个速度快是来自C语言的系统编程特性,而在做科学计算时,并不需要过多地涉及到系统内核,因此C语言的长处在科学计算方面可以说并不能适当地发挥,相反,在数值计算方面,C绝对不是FORTRAN的对手,因为相对于C以系统编程为目的,FORTRAN是以科学计算为目的的,语言
本身在设计之初,就考虑到了针对科学计算而进行优化,因此FORTRAN生成的可执行代码是高度优化的。

实际的运行效率方面的比较也表明了FORTRAN在科学计算方面的优越性。无论是国内还是国外,也无论是经典的串行机还是并行矢量机,大量的经验表明,在执行同一个科学计算任务时,C或C++代码的效率都低于FORTRAN代码,。

除了常见的对于C有着高效的迷信之外,还常常有着对于FORTRAN是如何如何落后的偏见。当然这种偏见是有来源的,那就是曾经功勋卓著的FORTRAN 77在很长一段时间里面,都缺乏进取心,使得迄今很多人提起FORTRAN,想到的就是在当今时代已经显得非常落后的FORTRAN
77。实质上,FORTRAN标准在进入FORTRAN 90时代之后,特别是现时的FORTRAN 95版本,可以说只要是对于科学计算有用的特性,C和C++有的,现在FORTRAN 95绝对不缺,而反过来FORTRAN
95所具有的很多针对科学计算的特性,却是C和C++所不具有的。哪怕是C++最引以为傲的面向对象性质,FORTRAN 2000也将全面引入。所以说,FORTRAN已经完全赶上了编程语言的潮流。

与程序运行的效能有关的另外一个重要方面,是程序语言能否支持程序的并行运行,在这点上,可以说FORTRAN表现了它的最大优势,因为FORTRAN 95正是着力于获得并行计算的能力的一个版本。

由于现代科学计算的规模越来越大,计算并行化是一条不得不走的路线,现代计算机硬件的发展,也使得并行化具有实际的普及前景,因为不仅专门的大型计算机是并行的,现在的一般PC都可以拥有多个处理器,因此现代的从事科学计算的用户不得不掌握并行化计算的编程能力。

但是进行并行化编程所遇到的一个主要问题,就是任何过程编程语言都内在地使用线性存储模式,也就是一个数组的元素总是被认为按照数组元素的先后顺序而连续地存储在内存单位里面,这样一种模式就决定了这样的过程编程语言无法真正地实现对并行计算的描述。而FORTRAN
95则完全改观了这种制约,因为在FORTRAN 95里面对于数组以及数组运算建立了全新的面向并行化计算的概念,诸如纯过程的概念,逐元过程的概念,FORALL结构等等,都有效地摆脱了线性存储模式的制约,使得FORTRAN
95成为描述并行计算的标准语言,特别是那些专用的数据并行化语言都纷纷采用FORTRAN作为基础语言,例如高性能FORTRAN(High Performance Fortran),Fortran D,Vienna Fortran,以及CRAFT等。这样就使得使用FORTRAN
95编写的程序可以直接在这些数据并行化语言的平台上运行,而反过来使用这些专用语言编写的程序也可以毫不困难地转移到FORTRAN 95平台上运行,这样一种局面使得FORTRAN在并行计算领域独领风骚。

综上所述,我们完全可以说FORTRAN 95是进行科学计算的最佳语言,作为需要进行科学计算的科学与技术领域的工作人员,掌握FORTRAN
95远比掌握C,C++等语言要重要得多,至于那些计算机符号代数与数值计算软件,例如MATHEMATICA,MAPLE,MATLAB,Macsyma,MATHCAD等等,只能说是进行科学计算的教学模型与辅助工具,由于它们都提供了现成的算法,因此可以使得初学者能够应用于一些简单的场合,真正要用它们来
对付稍微大一点的问题,有经验的用户都知道,那会是一件非常痛苦的强人所难的事情。因此最终要自由地进行科学计算,则非FORTRAN莫属。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuanqingfei/article/details/28628

智能推荐

人工智能技术知识图谱_mind_programmonkey的博客-程序员宝宝

一、机器学习二、人工神经网络三、深度学习四、深度学习框架下的神经网络五、深度学习之外的人工智能六、数学基础七、应用场景...

ValueError: Data must be padded to 16 byte boundary in CBC mode_ptython字符串加密使用不了_zjjhwzl的博客-程序员宝宝

使用Python加密字符串,出现报错,上网搜索一番无果,但是自己测试的时候刚开始以为是字符串不能出现@#这样的特殊字符,因为我只要删除其中一个就可以加密了,后来偶然删除了其他的测试,发现又可以了,最终的原因就是加密的字符串太长了了,大于16位,我使用的是16位的,所以报错,本质原因没有细究。具体报错:Traceback (most recent call last): File "D:/software installation/AutoOperate/venv/Include/AutoO..

swagger 携带taken做为登录校验_taken校验_FY_LaoDuan的博客-程序员宝宝

/** * * &amp;lt;p&amp;gt; * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *...

linux12k8s --> 17图形化界面_一台linux搭建k8s图形化_FikL-09-19的博客-程序员宝宝

安装kuborad1、简介Kuboard,是一款免费的 Kubernetes 图形化管理工具,Kuboard 力图帮助用户快速在 Kubernetes 上落地微服务2、安装[[email protected] ~]# kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml[[email protected] ~]# kubectl apply -f https://addons.kuboard.cn/metrics-ser

os.system() 和os.popen()的区别_gray13的博客-程序员宝宝

os.system() 和os.popen()的区别返回的数据不同1 os.system(“ls")  返回0但是这样是无法获得到输出和返回值的继续 Google,之后学会了 os.popen()。 view sourceprint?a... outp

jsessionid 对微信JS SDK 签名的影响_小云云~~的博客-程序员宝宝

用户第一次访问微信公众号页面,获取的URL通常会带有 jsessionid,例如:http://www.baidu.com/test;jsessionid=*******,测试时发现首次进入微信会出现 签名错误的情况,记录LOG,找到原因是因为 加密串 http://www.baidu.com/test%3Bjsessionid=*******,;被转义了,签名不通过。微信签名不要用转义字

随便推点

华为平板能用鸿蒙吗,iOS15,鸿蒙2.0能给平板电脑带来新惊喜吗?_普通的穗乃果普通地摇的博客-程序员宝宝

原标题:iOS15,鸿蒙2.0能给平板电脑带来新惊喜吗?说起来平板电脑的位置有点尴尬,在功能上跟智能手机差不多,又不如智能手机便携,在生产力方面又比不过笔记本电脑。 有网友表示平板电脑是买前生产力买后爱奇艺,这也说明了平板电脑的尴尬位置。当然各大厂商现在也是努力的提高平板电脑的生产力,比如苹果推出了平板电脑专用的iPadOS系统,而且苹果今年还推出了搭载M1处理器的iPad Pro平板电脑,可惜苹...

四川旅游学院2017年大学生计算机设计大赛--软件应用与开发决赛_算法与编程之美的博客-程序员宝宝

四川旅游学院2017年大学生计算机设计大赛软件应用与开发决赛在12月14日星期四晚,软件应用与开发项目进行了最后的决赛。首先由主持人对本次赛事进行了阐释,评委入座评委席,...

linux nfs在嵌入式开发中的使用_开发嵌入式linux一定要用nfs吗_liang890319的博客-程序员宝宝

Linux下NFS(网络文件系统)的建立与配置方法ZDNet服务器频道时间:2007-06-12作者: | http://server.zdnet.com.cn/server/2007/0831/482007.shtml本文关键词:嵌入式 NFS Linux(安装nfs :Ubuntu上默认是没有安装nfs服务器的,因此我们首先安装n

动态规划求解矩阵连乘_矩阵连乘问题的伪代码_东东咚咚东的博客-程序员宝宝

通过动态规划算法减少矩阵连乘所需的乘法次数。

【9】JMicro微服务-发布订阅消息服务_anjingfu5439的博客-程序员宝宝

如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl1. JMicro消息服务目前实现特性a. JMicro只支持发布订阅消息服务,不支持队列式消息服务;b. 不支持消息持久化,所以不能保证消息一定能被消费者消费;c. 发布消息时如果没有消费者,消息直接丢弃;d. 如果消息按配置的重发时间间隔重复发送多次(可配置)失败,消息直接丢弃;e...

推荐文章

热门文章

相关标签