科學(xué)計(jì)算編程中的Fortran.doc

科學(xué)計(jì)算編程中的Fortran.doc

ID:59142230

大小:30.50 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2020-09-11

科學(xué)計(jì)算編程中的Fortran.doc_第1頁(yè)
科學(xué)計(jì)算編程中的Fortran.doc_第2頁(yè)
科學(xué)計(jì)算編程中的Fortran.doc_第3頁(yè)
科學(xué)計(jì)算編程中的Fortran.doc_第4頁(yè)
科學(xué)計(jì)算編程中的Fortran.doc_第5頁(yè)
資源描述:

《科學(xué)計(jì)算編程中的Fortran.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、科學(xué)計(jì)算編程中的Fortran與C++之爭(zhēng)自從有了程序設(shè)計(jì)語(yǔ)言,“哪種編程語(yǔ)言好”就成為了亙古不變的話題。這個(gè)問(wèn)題一經(jīng)提出,必然會(huì)招來(lái)一場(chǎng)巨大的口水仗。作者曾經(jīng)在某些論壇上提出了類似“Fortran和C++那個(gè)用的多”之類的問(wèn)題,回帖全部達(dá)幾十個(gè)以上,各種意見(jiàn)針?shù)h相對(duì),猶如Fortran和C++信徒之間的“圣戰(zhàn)”一般好看。有很多人曾經(jīng)請(qǐng)C++語(yǔ)言之父BjarneStroustrup做一個(gè)C++與其它編程語(yǔ)言的比較,而Stroustrup明確的拒絕了。他指出,從技術(shù)上講,一個(gè)所謂的“公平”的比較將會(huì)

2、涉及到大量的技術(shù),這是一個(gè)工作量巨大的任務(wù),絕對(duì)不是簡(jiǎn)單的用C++和其它語(yǔ)言寫同一段代碼然后比較其運(yùn)行時(shí)間就能完成的。這種比較涉及到具體的應(yīng)用領(lǐng)域和用戶需求,所處理的信息類型,編譯器的質(zhì)量(不同語(yǔ)言的編譯器開(kāi)發(fā)的投入是有相當(dāng)大差別的),程序員的水平與“偏好”,編程語(yǔ)言的標(biāo)準(zhǔn)(如究竟是C++97與Fortran90比較,還是應(yīng)該C++0x與Fortran2003比較?)等等。他甚至認(rèn)為,這種比較是“rarelymeaningful”的[1]。因此,今天作者也不打算為某種編程語(yǔ)言搖旗吶喊,而是僅就科學(xué)

3、計(jì)算編程領(lǐng)域,特別是,限于作者專業(yè)即量子化學(xué)和分子模擬,來(lái)談一談兩大“主流”編程語(yǔ)言:Fortran和C++的在理論化學(xué)界的應(yīng)用歷史,以及某些人(包括作者)對(duì)它們的看法。1Fortran的美好時(shí)代毋庸置疑,1957年出現(xiàn)的Fortran是世界上第一個(gè)高級(jí)編程語(yǔ)言。它的出現(xiàn),大大降低了普通科研人員學(xué)習(xí)編程的門檻,而且增強(qiáng)了代碼的可移植性。在此之前,人們都是用機(jī)器語(yǔ)言直接書寫程序,這種語(yǔ)言對(duì)于一般人而言難度太大了,而且是與運(yùn)行機(jī)器相關(guān),因此很難寫出高效且具有可移植性的程序。例如,Roothaan在研究

4、原子自洽場(chǎng)的計(jì)算時(shí)專門為IBM7030數(shù)字計(jì)算機(jī)寫了一些程序,這些程序用來(lái)優(yōu)化Slater基組已經(jīng)10多年了。不幸的是,由于該程序是完全使用IBM的機(jī)器語(yǔ)言所書寫,因此在20世紀(jì)60年代,當(dāng)這種機(jī)器逐漸消失時(shí),這些程序逐漸成為了廢品。意識(shí)到這個(gè)資源的重要性,Clementi及其同事決定把這些程序用Fortran全部重寫,并且增加了處理Gauss基組的功能[2]。這段代碼從此復(fù)活,成為了量子化學(xué)程序庫(kù)中一個(gè)重要部分。Fortran語(yǔ)言的重要性從此被理論化學(xué)家所知。它的優(yōu)點(diǎn)幾乎數(shù)不勝數(shù)。首先,它的語(yǔ)法

5、簡(jiǎn)單,任何一個(gè)理論化學(xué)的研究生幾乎一天就能學(xué)會(huì),可以迅速用它開(kāi)展工作;其次,它的運(yùn)行效率極高,不要說(shuō)現(xiàn)代編譯器(如GNUFortran或intelFortran編譯器),就是世界上第一個(gè)Fortran編譯器都可以將其每一語(yǔ)句都翻譯成幾乎沒(méi)有冗余的、效率至少不低于手寫的機(jī)器碼;第三,F(xiàn)ortran代碼具有可移植性,與機(jī)器無(wú)關(guān)。很快,在20世紀(jì)70~80年代,一批批量子化學(xué)程序如雨后春筍般出現(xiàn),如早期的Gaussian,Polyatom,以及后來(lái)的GAMESS,NWChem等等,幾乎全部都是由Fort

6、ran77編寫的。Fortran77在量子化學(xué)領(lǐng)域絕對(duì)是功不可沒(méi),它為普及和發(fā)展量子化學(xué)做出了巨大的貢獻(xiàn)。那個(gè)時(shí)代,F(xiàn)ortran77是很多自然科學(xué)研究生的必修課。自此,F(xiàn)ortran成為了數(shù)值計(jì)算領(lǐng)域的“主流”語(yǔ)言。2C語(yǔ)言的崛起20實(shí)際70年代,C語(yǔ)言逐漸崛起。這個(gè)語(yǔ)言是為了編寫Unix操作系統(tǒng)而開(kāi)發(fā)的。很快,這種“半?yún)R編”性質(zhì)的高級(jí)語(yǔ)言,由于其具有極其靈活的控制機(jī)器的能力而深受計(jì)算機(jī)專業(yè)人士的喜愛(ài)。不過(guò),由于其學(xué)習(xí)難度較之Fortran稍高,而量子化學(xué)以純粹數(shù)值計(jì)算為主,F(xiàn)ortran足以滿

7、足要求,因此C在量子化學(xué)領(lǐng)域沒(méi)有什么明顯優(yōu)勢(shì),因此大多數(shù)量子化學(xué)家對(duì)其不感興趣。此時(shí),C和Fortran處于“井水不犯河水”的狀態(tài)。而80年代左右,分子模擬科學(xué)開(kāi)始發(fā)展。由于分子模擬的流程相對(duì)復(fù)雜,F(xiàn)ortran77語(yǔ)言在實(shí)現(xiàn)某些功能時(shí)稍顯繁瑣,如對(duì)某些配置文件進(jìn)行語(yǔ)法分析,一些模式識(shí)別和人工智能過(guò)程等等,此時(shí)C語(yǔ)言的優(yōu)勢(shì)開(kāi)始顯露,大量分子模擬領(lǐng)域的研究組開(kāi)始用C開(kāi)發(fā)程序,如分子對(duì)接軟件Autodock等等。Fortran壟斷地位的打破,表明理論化學(xué)領(lǐng)域編程語(yǔ)言之戰(zhàn)的種子已經(jīng)悄然的埋下。3理論化學(xué)

8、軟件開(kāi)發(fā)的瓶頸在任何軟件開(kāi)發(fā)領(lǐng)域(學(xué)術(shù)界還是商業(yè)界),前人留下的代碼庫(kù)都是無(wú)比寶貴的財(cái)富。因?yàn)闊o(wú)論程序員的水平有多高,代碼畢竟是一個(gè)字一個(gè)字的敲進(jìn)去的。比如矩陣乘法這種通用的操作都需要每次重新寫,那會(huì)浪費(fèi)大量寶貴的人力財(cái)力。在前人的基礎(chǔ)上開(kāi)發(fā)新的功能,是大型軟件開(kāi)發(fā)的通用規(guī)則。量子化學(xué)自60年代以來(lái),積累了大量的Fortran程序庫(kù),它們的開(kāi)發(fā)都是非常艱苦的,是無(wú)數(shù)量子化學(xué)家智慧的結(jié)晶,每個(gè)研究組都要在前人的基礎(chǔ)上繼續(xù)的研究,例如現(xiàn)在的Gaussian09里面還使用著當(dāng)年P(guān)ople

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。