使用 FOSS 的 FOSS 教育/研究
傳統上,學術研究以開放的方式進行,研究結果的發表先於同行評審過程。所有導致結果的假設、計算和實驗都在結果被期刊接受發表之前被仔細審查。研究人員通常不會獲得他們發現的智慧財產權,並且他們有義務發表這些發現。
計算機軟體 通常不僅在 計算機科學 和 ICT 研究中使用,而且在許多其他領域的科研中也使用。“然而,科學家很少將他們的軟體提供給其他科學家進行審查,即使他們這樣做,他們也經常使用閉源程式,其中底層 原始碼 受 版權 和商業秘密宣告的保護。但這種做法違背了科學的核心,即可驗證性。為了被認為是有效的,所有用於特定科學假設的計算和假設必須公開審查。然而,閉源軟體使得這種審查成為不可能。”[1]
相反,FOSS 的開放理念與學術研究過程完全一致,因為該軟體的 原始碼 也可供審查。研究人員應該儘可能地將 FOSS 作為他們工作中的工具。Bryan Pfaffenberger 進一步認為,“科學家僅僅使用開源軟體是不夠的,他們還必須使用開源作業系統。”[2]
如前所述,免費/開源 程式語言、資料庫系統、電子表格 軟體和其他可用於研究中的計算和資料分析的應用程式都可用。更專業的 FOSS 也可用。這裡介紹了一些重要的例子
出版
[edit | edit source]許多物理學和數學研究論文使用 LaTeX 編寫。
數值數學
[edit | edit source]數值演算法用於計算問題的近似解,而這些問題的精確解未知或難以獲得。數值演算法的輸出通常包含許多數字,這些數字代表感興趣的變數在不同時間點或空間中的值。
以某種方式屬於同一組的數值通常表示為陣列。來自線性代數的矩陣和向量以及張量可以方便地表示為陣列。因此,幾乎所有數值演算法都是用陣列編寫的。
陣列操作和演算法原型
[edit | edit source]數值演算法通常使用易於學習的解釋型程式語言開發。這些語言具有內建的陣列和矩陣物件。它們帶有大量用於數值計算、建立高質量圖形和檔案輸入輸出的子例程。它們易於使用,從而導致開發速度很快,這彌補了它們執行速度相對較慢的缺點。
缺失:簡短的功能
這裡提到的解釋型語言本身比編譯型語言(C、C++、Fortran)慢 20 到 100 倍。但是,數值子例程是用編譯型語言編寫的,並且執行速度很快。因此,從一定矩陣大小開始,解釋型語言的速度損失變得不那麼明顯。演算法的關鍵部分也可以用編譯型語言編寫,這相當容易。這裡的速度比較 [1]、[2] 顯示,對於簡單的有限差分演算法,速度損失為 5 到 10 倍。這裡的測試 [3] 比較了線性代數例程的效能。
Matlab - 專有且廣泛傳播
[edit | edit source]該領域的標準是專有語言 Matlab。該語言專門用於陣列操作。文件完善且非常廣泛;它也線上提供 [4]。
Matlab 是專有軟體。它以基本包和許多單獨的工具箱的形式出售,這些工具箱需要額外付費。定價資訊(商業許可證,單使用者,美國,2007 年 11 月):基本語言 1900 美元,工具箱價格從幾百美元到幾千美元不等。有學術折扣。
有關該語言本身的更詳細討論:請檢視幾乎相同的 Octave 語言。
Scilab
[edit | edit source]Scilab 是一種用於矩陣操作的專用語言。語法類似於 Matlab 語言,但不完全相同。它帶有大量用於解決來自許多科學學科的問題的軟體包。
從版本 5 開始,Scilab 是自由軟體,根據 CeCILL 許可證分發。 [5] [6]
熟悉 Scilab 的人:請擴充套件這一節!
Octave 是專有 Matlab 語言的免費克隆。它是一種專門用於陣列操作的語言,其語法非常適合此任務。該語言對逐元素和線性代數運算都有運算子。它也很容易學習。Octave 只是 Matlab 的核心,工具箱是獨立的專案,許多工具箱尚不存在。然而,最常見的演算法確實存在。
文件相當不錯。有一個教程 [7]。
用 C++、C 和 Fortran 為 Octave 編寫擴充套件模組非常容易。(比 Python 更容易。)Octave 附帶一個 C++ 庫用於矩陣操作,該庫也在內部使用 [8]。
Octave 沒有(只有模糊的)面向物件。因此組織大型專案很困難。
由於 Octave 是一種專用語言,因此很難做一些超出 Octave 範圍的事情。一個經常遇到的問題是讀取奇數檔案格式。Octave 沒有良好的字串處理功能,也沒有 XML 閱讀器。圖形使用者介面需要用不同的語言編寫。
Octave 沒有附帶 IDE,但許多編輯器可以對(相同的)Matlab 語言進行語法著色。還有一個 Octave 的 Emacs 模式 [9],它非常強大;但只對喜歡相當特殊的 Emacs[10] 編輯器的人有用。
Numpy、Scipy 和 Matplotlib 是 Python 程式語言的庫。它們一起賦予 Python 數值原型語言的功能。
- Numpy 提供陣列物件和所有基本陣列和矩陣功能。
- Scipy 是一個科學演算法集合(許多來自 Netlib),帶有 Python 包裝器。
- Matplotlib 提供二維(以及非常簡單的三維)繪圖功能。
Python[11] 是一種面向物件、通用用途的程式語言。儘管如此,Python 非常容易學習,Python 程式也很容易理解。它有一個龐大的標準庫。
R 支援各種統計和數值技術。它還透過使用包高度可擴充套件,包是使用者提交的針對特定功能或特定研究領域的庫。由於其 S 遺產,R 具有比大多數統計計算語言更強大的面向物件程式設計功能。其寬鬆的詞法作用域規則也簡化了 R 的擴充套件。
R 的另一個優勢是其圖形功能,它可以生成包含數學符號的出版質量圖形。
雖然 R 主要用於統計學家和其他需要統計計算和軟體開發環境的從業人員,但它也可以用作通用矩陣計算工具箱,其基準結果與 GNU Octave 及其專有對應產品 MATLAB(版本 < 7)相當。
符號數學是公式操作,就像你用筆和紙做的那樣。(至少從工程師的角度來看。)計算機代數系統 (CAS) 可以例如:簡化表示式、求導、積分或求解方程組。
眾所周知的專有軟體包是 Maple 和 Mathematica。這兩個軟體包都非常全面,但對大眾有用。它們都具有良好的圖形使用者介面。它們非常昂貴,但有學生折扣。
Maxima 是一個強大的 CAS,可以與 Maple 和 Mathematica 相媲美。然而,它缺乏良好的圖形前端。
圖形前端
生物資訊學,總的來說,是指使用計算機處理生物資訊。它是使用計算機來描述生物體的分子組成部分(計算分子生物學)。生物資訊學最突出的成果是 人類基因組計劃,旨在繪製人類基因的完整集合。分子生物學需要處理大量資料,這顯然只有藉助計算機和軟體才能實現。
FOSS 在生物資訊學中發揮著重要作用。Ewan [3] 認為“開源是有道理的,因為它遵循良好且眾所周知的科學原則。傳統上,科學實踐一直涉及公開分享和討論結果,並提供足夠的資訊以允許第三方確認結果。顯然,開源軟體非常適合這種模式。”使用 FOSS 的第二個原因是“實際資料比用於處理它的工具重要得多。”分享用於進行研究的軟體減少了開發軟體的重複工作。
生物資訊學組織(http://www.bioinformatics.org)成立於1999 年,旨在促進生物資訊學研究領域的全球溝通和合作,併為這類工作的研究方法和材料提供免費、公開的訪問許可權。其網站提供豐富的資源,包括軟體和資料庫,併為促進這些資源開發的活動提供論壇。
GNU/Linux 和 FOSS 已被用於專案中,以提供經濟實惠的高階計算能力。這透過將多個低成本伺服器和工作站的處理能力組合到一個系統中來實現,該系統可以提供超級計算機的算力。據 Cook 稱,“這些系統之所以如此有效,是因為存在許多非常大、非常複雜的問題,這些問題可以自然地分解成許多相同、更簡單問題的迭代。從天氣預報到計算機動畫,一切都符合這種描述。”[4]
Beowulf 是用於構建大規模並行系統的架構名稱,該系統由市售個人電腦構成。用於構建系統的計算機可以是 486 系統、奔騰系統和 Alpha 計算機;計算機不需要同質。即使是原本要被丟棄的舊電腦也可以用來構建這樣的系統。在美國的橡樹嶺國家實驗室,Stone 超級計算機是使用舊電腦的組合構建的,這些電腦透過標準乙太網連線在一起,用於解決對映問題。[5] 該系統具有 1.2 吉兆浮點運算每秒的理論峰值效能(FLOPS 代表每秒浮點運算次數。它被用作計算速度的近似量度。1 吉兆浮點運算每秒等於 10 億次浮點運算每秒)。
另一個例子是紐約州立大學啟動的超級計算機,它由超過 2000 臺執行GNU/Linux 的計算機組成,用於開展藥物研究,以對抗癌症、阿爾茨海默病和艾滋病。
- ↑ Pfaffenberger, B., "Linux in Higher Education: Open Source, Open Minds, Social Justice", Linux Journal, 2000 年 3 月 2 日;可從 http://www.linuxjournal.com/article.php?sid=5071 獲取。
- ↑ Pfaffenberger, B., "Linux in Higher Education: Open Source, Open Minds, Social Justice", Linux Journal, 2000 年 3 月 2 日;可從 http://www.linuxjournal.com/article.php?sid=5071 獲取。
- ↑ Stewart,B.,"Ewan Birney's Keynote: A Case for Open Source Bioinformatics",O'Reilly Network, 2002; 可從 www.oreillynet.com/lpt/a/1511 獲取。
- ↑ Cook, R.,"Supercomputers on the cheap", 2000 年 4 月;可從 http://www.cnn.com/2000/TECH/computing/04/13/cheap.super.idg 獲取。
- ↑ Hargrove,W.W.,Hoffman, F. M. and Sterling,T., "The Do-It-Yourself Supercomputer", Scientific American.com,2001 年 8 月 16 日;可從 www.sciam.com/article.cfm?articleID=000E238B-33EC-1C6F-84A9809EC588EF21 獲取。