科学计算编程中的Fortran.doc

科学计算编程中的Fortran.doc

ID:59142230

大小:30.50 KB

页数:5页

时间:2020-09-11

科学计算编程中的Fortran.doc_第1页
科学计算编程中的Fortran.doc_第2页
科学计算编程中的Fortran.doc_第3页
科学计算编程中的Fortran.doc_第4页
科学计算编程中的Fortran.doc_第5页
资源描述:

《科学计算编程中的Fortran.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、科学计算编程中的Fortran与C++之争自从有了程序设计语言,“哪种编程语言好”就成为了亘古不变的话题。这个问题一经提出,必然会招来一场巨大的口水仗。作者曾经在某些论坛上提出了类似“Fortran和C++那个用的多”之类的问题,回帖全部达几十个以上,各种意见针锋相对,犹如Fortran和C++信徒之间的“圣战”一般好看。有很多人曾经请C++语言之父BjarneStroustrup做一个C++与其它编程语言的比较,而Stroustrup明确的拒绝了。他指出,从技术上讲,一个所谓的“公平”的比较将会

2、涉及到大量的技术,这是一个工作量巨大的任务,绝对不是简单的用C++和其它语言写同一段代码然后比较其运行时间就能完成的。这种比较涉及到具体的应用领域和用户需求,所处理的信息类型,编译器的质量(不同语言的编译器开发的投入是有相当大差别的),程序员的水平与“偏好”,编程语言的标准(如究竟是C++97与Fortran90比较,还是应该C++0x与Fortran2003比较?)等等。他甚至认为,这种比较是“rarelymeaningful”的[1]。因此,今天作者也不打算为某种编程语言摇旗呐喊,而是仅就科学

3、计算编程领域,特别是,限于作者专业即量子化学和分子模拟,来谈一谈两大“主流”编程语言:Fortran和C++的在理论化学界的应用历史,以及某些人(包括作者)对它们的看法。1Fortran的美好时代毋庸置疑,1957年出现的Fortran是世界上第一个高级编程语言。它的出现,大大降低了普通科研人员学习编程的门槛,而且增强了代码的可移植性。在此之前,人们都是用机器语言直接书写程序,这种语言对于一般人而言难度太大了,而且是与运行机器相关,因此很难写出高效且具有可移植性的程序。例如,Roothaan在研究

4、原子自洽场的计算时专门为IBM7030数字计算机写了一些程序,这些程序用来优化Slater基组已经10多年了。不幸的是,由于该程序是完全使用IBM的机器语言所书写,因此在20世纪60年代,当这种机器逐渐消失时,这些程序逐渐成为了废品。意识到这个资源的重要性,Clementi及其同事决定把这些程序用Fortran全部重写,并且增加了处理Gauss基组的功能[2]。这段代码从此复活,成为了量子化学程序库中一个重要部分。Fortran语言的重要性从此被理论化学家所知。它的优点几乎数不胜数。首先,它的语法

5、简单,任何一个理论化学的研究生几乎一天就能学会,可以迅速用它开展工作;其次,它的运行效率极高,不要说现代编译器(如GNUFortran或intelFortran编译器),就是世界上第一个Fortran编译器都可以将其每一语句都翻译成几乎没有冗余的、效率至少不低于手写的机器码;第三,Fortran代码具有可移植性,与机器无关。很快,在20世纪70~80年代,一批批量子化学程序如雨后春笋般出现,如早期的Gaussian,Polyatom,以及后来的GAMESS,NWChem等等,几乎全部都是由Fort

6、ran77编写的。Fortran77在量子化学领域绝对是功不可没,它为普及和发展量子化学做出了巨大的贡献。那个时代,Fortran77是很多自然科学研究生的必修课。自此,Fortran成为了数值计算领域的“主流”语言。2C语言的崛起20实际70年代,C语言逐渐崛起。这个语言是为了编写Unix操作系统而开发的。很快,这种“半汇编”性质的高级语言,由于其具有极其灵活的控制机器的能力而深受计算机专业人士的喜爱。不过,由于其学习难度较之Fortran稍高,而量子化学以纯粹数值计算为主,Fortran足以满

7、足要求,因此C在量子化学领域没有什么明显优势,因此大多数量子化学家对其不感兴趣。此时,C和Fortran处于“井水不犯河水”的状态。而80年代左右,分子模拟科学开始发展。由于分子模拟的流程相对复杂,Fortran77语言在实现某些功能时稍显繁琐,如对某些配置文件进行语法分析,一些模式识别和人工智能过程等等,此时C语言的优势开始显露,大量分子模拟领域的研究组开始用C开发程序,如分子对接软件Autodock等等。Fortran垄断地位的打破,表明理论化学领域编程语言之战的种子已经悄然的埋下。3理论化学

8、软件开发的瓶颈在任何软件开发领域(学术界还是商业界),前人留下的代码库都是无比宝贵的财富。因为无论程序员的水平有多高,代码毕竟是一个字一个字的敲进去的。比如矩阵乘法这种通用的操作都需要每次重新写,那会浪费大量宝贵的人力财力。在前人的基础上开发新的功能,是大型软件开发的通用规则。量子化学自60年代以来,积累了大量的Fortran程序库,它们的开发都是非常艰苦的,是无数量子化学家智慧的结晶,每个研究组都要在前人的基础上继续的研究,例如现在的Gaussian09里面还使用着当年Pople

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。