一個不錯的Fortran教程

好大的牛角發表於2018-11-06

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

發信人: 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莫屬。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述

相關文章