回 帖 发 新 帖 刷新版面

主题:【Fortran入门1/3】Fortran教材、参考书推荐

.
  自己也是从新手过来的,学Fortran学到一定地步时就一直想做点什么,于是就有了现在的三篇文章。依然是首发在科大论坛,自觉对新手可能有些帮助,所以姑且忘一己固漏,斗胆转发。



原帖链接:
  http://fbbs.ustc.edu.cn/cgi/bbstcon?board=Fortran&file=M.1302191529.A

原文:

    【Fortran入门1/3】Fortran教材、参考书推荐(2011)


  为支援版主而写的最后一篇,有关教材及参考书。Fortran的优秀教材很不少,但中文的却似乎寥寥。我个人主要推荐三本,并说说我的感觉。这三本都是我自己亲自读过,可以就自己的亲身经历来说事,但其他教材我没有拜读过,自然没话语权。遗珠之憾,只好期待其他朋友帮忙弥补了。但个人以为,书不在多,只要花时间去好好的读透一本就足够,其他的只是印证和参考之用,一本读透了,要参考其他书也费不了多长时间。

  以下推荐的三本书在当当或卓越都有售,在科大图书馆均可借阅到。电子版下载地址则如下:
  (http://mail.ustc.edu.cn/~jfnano/fort/index.html)再度感谢素未谋面的jfnano朋友。



1)彭国伦,《Fortran95 程序设计》,中国电力出版社

  彭书毋用多说,《Fortran77 程序设计》是国内的经典名著,一不小心大家的导师初学Fortran用的就是她。作为《F77》的后继者,《F95》也自然不遑多让。这应该是国内最早的介绍F90/95标准的教材了,愚钝如我入门用的就是这本。平心而论,这本身比起另外一本我要推荐的,实在有好些差距,但她有一个优点是其他两本书不具备的:她讲授F90/95标准时,能同时兼顾F77:在讲某种语法时,她会同时把F77的格式也一并介绍说明,并适当给出参考意见。如果大家愿意连书中的F77代码也一并琢磨,那么,看完本书,你就等于将Fixed Format和Free Format、F77和F90/95一并掌握。

  这本书缺点也挺明显,只是从书名和成书时间来看,她就仅仅止步于F95,虽然F03一般人也用不着,但有好些现代的编程思想和习惯是任何有编程需求的人都应有所了解的,如面向对象。但不能因此说这本书过时,——这本书就她要讲授的内容已经做得挺好,做得比她还好的书我觉得只有一本,这就是:



2)Stephen J. Chapman,"Fortran 95/2003 For Scientists and Engineers 3rd",译作《Fortran 95/2003 程序设计》,中国电力出版社

  请允许我先在此处向电力出版社的人致以最富恶趣味的鄙视。好好的一本引进教材,居然无视人家的原书名,硬是改成与彭书格式一致的名字,——这还罢了,连封面设计都几乎一模一样,令人非常无语。

  这本书有多好?只说我的体会。我是从彭书入门的,看完彭书再看到这本《F95/03》,我曾经有一瞬间升起这样的念头:“彭书白看了……“,实际上,我后来是真的跳着把这本书通读一遍。比起彭书,这本书更仔细,更周到,更规范,更先进,更丰富,更……厚。读这本书你会产生一种错觉,仿佛随时随地都有一位循循善诱的名师在给你指点,教你如何掌握Fortran语法、技巧之余,形成优秀的编程习惯,这简直到了无微不至的地步:教材中讲到一个语法点时,她会很体贴的给出几行“良好的编程习惯”,在每一章书的末尾,她还会替你小结本章提到的语法,并且将良好的编程习惯一并归纳。

  可惜的是,一如惯例,翻译版总是比原版要粗糙许多。一些错字及语病就不说了,最郁闷的是翻译版竟然把原本的索引(Index)给阉割掉了。这种情况在翻译界屡见不鲜,但实在让人相当不快。



3)Ian Chivers和Jane Sleightholme,"Introduction to Programming with Fortran",译作《Fortran权威指南》,人民邮电出版社。

  原书还有个小标题:With Coverage of Fortran 90,95,2003,and 77。

  这本书不具体介绍了,就把之前在论坛上与IceAge的对话给摘录下来吧,连带着和彭书、《F95/03》一起比较:

IceAge:
  它的章节安排和其他说不太一样,各章节似乎有点专题的味道,当然也不大。入门书籍感觉有彭国伦那本就足够了,2k3的新特性可以看你的推荐的这本。入门,即学会写fortran程序很容易,但编程风格这些应该属于更进一步的内功吧,“权威指南”似乎更适合于修炼“内功” 


俺:
  
  我之所以那么推荐那本书,其实就因为她的内功。引一段译者的话: 

  “本书从始至终强调读者树立实际工程编程思想,致力于培养读者编写可读性好、维护性强和完整性好的程序能力。“ 

  我自己就是用彭国伦那本95入门,后来看到这本书后又通读了一遍,才算把根基打下。彭书是不错,但讲授方法、编程风格、程序设计思想、对Fortran的高视野把握,比起Chapman的书还是有些差距的。 

  我是读完Chapman的书才看到那本“权威”指南,当时抱着印证的心态去浏览了下,发现他内容是够新了,内容也足够简明扼要,但偏偏就有好多内容都只是点到为止,没有深入讲述。在内功方面,你能看出作者是武林高手,也能在字里行间偶有点播,但Chapman的书不一样,他不但是个高手,而且是个愿意手把手仔仔细细教你功夫的大宗师。 

  我们俩都在意内功,彭书寥寥,权威指南不刻意讲授,而Chapman的书则是体贴到了每章结束都给你仔细归纳“良好的编程习惯小结“的地步。 

  所以个人认为,入门教材首推Chapman的书;彭书的优点是兼顾F77,如果手头有fixed format的F77老程序,可以用来参考;权威指南,则适合已经有了相当编程基础,及Fortran经验,借他独特的章节安排来梳理知识,升华理解。 



4)关于F77、F90/95及F03

  F77不用多说,如果没真实需求,根本就没必要专门学,因为那令人吐血的Fixed Format早该被淘汰。如果有需求,凭F90的基础,查一查彭书也就会了。

  F95比起F90变动不大,具体可参见三本书的Fortran发展史。在我印象中,两者是经常被相提并论的,或者干脆就以F95一名涵盖。特别这么一说是因为:F77的Fixed Format所保存的文件扩展名是.f,而f90往后的free format扩展名是.f90,哪怕是F03的特性,写到代码保存起来依然还是.f90。但教材也好,编译器也好,通常都只提F95这样的字眼,如彭书和《F95/03》。不把事情说清除,很容易就有这样的疑问:为什么扩展名都是f90,却没专题介绍?

  最后,一个建议。F03的相关内容,大家如果有余力,还是尽量仔细读读,因为这是Fortran上极大的变革:面向对象的程序设计理念的引进。哪怕用不着,哪怕不该用,也建议大家好好的品味一翻。然后,不要轻易使用。这就矛盾了,好东西为啥不能轻易用?因为还不普及。

  在另外两篇文章已经说过,Intel最新的ifort v12都还差两种特性才把Fortran2003完全实现呢,老版本的ifort就更残缺了。科大超算中心大联想集群用的ifort还是v10系列,你想在上面用F03的特性还得先查手册。而我本人很冏的例子是:我曾经按照《F95/03》一书,想尝试对自定义类型绑定赋值符“=”号,却编译来编译去都不成功,最终仔细一查才知道我用的IVF 11.1.69其实还不支持这特性。多插一句,其实《F95/03》在成书的时候,她所引用的编译器(L/F Fortran95,IVF9,NAGWare Fortran 95)都还不支持任何一个F03的特性,所有书中的例子都是作者基于F03标准虚构出来,都完全没“实际测试”过呢。哪怕是到了新世纪第二个十年之初的今天,许多Fortran的老用户根本就不知道或者一直忽视F03的存在,更别说更新一代的F08了。

  用Fortran的人都是务实的学者或工程师,不像其他商业性特浓或者新兴的程序设计语言用户(如Java)得紧紧跟着新标准新功能生怕落伍。对大部分Fortran老用户来说,譬如你的导师,结构化的设计思想已经够用,你标新立异的用面向对象(OOP)的手段来编程,往往得不到赞赏,反而会因起交流上的障碍。平心而论,OOP是先进,但未必高效,从F03问世起就一直质疑不断也不是没原因的。不过现在计算机性能已经不同往日,对程序的效率的要求就远不如以前那么苛刻了,反而是采用模块化对象进行程序设计能使程序更便于修改、维护及重用。这也是Fortran标准至今依然不断更新的主要动力。

  以上均属个人观点,仅供参考。话是那么说了,但连我自己都喜欢用一点简单的OOP手段(如操作封装),因为维护起来实在要方便一些。

回复列表 (共17个回复)

11 楼

求这本的英文版学习一下,谢谢咯~~~[em1][em1]

12 楼


忘说邮箱了
exiaom@163.com
tks very much~

13 楼


adonis1992@126.com
谢谢啦~

14 楼

一些fortran书籍


Modern Fortran Explained
http://ishare.iask.sina.com.cn/f/22807809.html 



The Fortran 2003 handbook
http://ishare.iask.sina.com.cn/f/33620733.html 


Modern.Fortran.Style.and.Usage
http://ishare.iask.sina.com.cn/f/23686396.html 

顺便说一下下载的时候点击“用手机下载“,就不要登录和积分了

15 楼

我是新手,想拜读一下此书,tankzc80@qq.com  谢谢大侠啦!

16 楼

谢谢受教了,读研编程需要经常用Fortran和C

17 楼

正在死啃第二本的飘过~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册