資料介紹
腳本語(yǔ)言已經(jīng)為很多科學(xué)計(jì)算器的構(gòu)建提供了很多強(qiáng)有力的工具,因?yàn)樗麄兲峁┝似渌忉屝驼Z(yǔ)言的接口。和很多用C,C++,F(xiàn)ortran,等編寫的軟件進(jìn)行集成,也可以為他們提供框架單元構(gòu)建。在這篇論文中,我主要描述腳本語(yǔ)言到科學(xué)計(jì)算工程中的進(jìn)程,我強(qiáng)調(diào)的是使用python在科學(xué)動(dòng)態(tài)研究中采用的大規(guī)模模塊動(dòng)態(tài)代碼,實(shí)驗(yàn)在在洛斯阿拉莫斯國(guó)家實(shí)驗(yàn)室進(jìn)行的。雖然這個(gè)應(yīng)用程序和天文數(shù)據(jù)分析,問(wèn)題,解決方案和經(jīng)驗(yàn)教訓(xùn)等不想關(guān),但是可能感興趣的研究人員正在考慮在自己的項(xiàng)目中使用腳本語(yǔ)言。
1. 簡(jiǎn)介
作為科學(xué)的軟件開(kāi)發(fā),最大的障礙之一是如何使科學(xué)軟件靈活,使用方便,維護(hù)簡(jiǎn)單,易于適應(yīng)規(guī)模擴(kuò)大和復(fù)雜性增高的新問(wèn)題。當(dāng)然,是有很多原因希望這些高品質(zhì),其中很重要的一點(diǎn)是,他們?cè)试S科學(xué)家花費(fèi)更少的時(shí)間爭(zhēng)取更多的時(shí)間去亞牛軟件,投入更多的時(shí)間在科學(xué)上。
很不幸的事,當(dāng)前科學(xué)計(jì)算軟件的現(xiàn)狀很不理想。首先,增加的計(jì)算能力已使科學(xué)家解決了空前的規(guī)模和復(fù)雜性的問(wèn)題。但是,有一個(gè)副作用,就是需要執(zhí)行這些任務(wù)的軟件也已成為龐大而復(fù)雜的。二是科學(xué)家們普遍使用各種各樣的系統(tǒng),從模擬代碼,數(shù)據(jù)分析軟件包,數(shù)據(jù)庫(kù),可視化工具,到與每一個(gè)代表不同的接口和文件格式的本土軟件。因此,科學(xué)家可能會(huì)花費(fèi)大量的時(shí)間,只是想把所有這些組件以某種方式共同工作。最后,努力運(yùn)用現(xiàn)代科學(xué)軟件工程原理去重寫軟件,充其量只能產(chǎn)生不同的結(jié)果。第一,科學(xué)家不愿意去拋棄原有的軟件。其次,這種努力對(duì)第二系統(tǒng)的影響也是很脆弱的,設(shè)計(jì)者想建造一個(gè)足夠龐大的系統(tǒng)以至于不可能去實(shí)施,也不可能去滿足特定問(wèn)題的需要。
盡管存在這些困難,較有前景的技術(shù)之一,是近年來(lái)出現(xiàn)的常見(jiàn)的腳本語(yǔ)言,如Python,Perl和Tcl(Python, 1999; Perl, 1999; Tcl, 1999)。,它們作為一種工具,能創(chuàng)造更好的科研軟件。在這篇文章中,我要重點(diǎn)強(qiáng)調(diào)腳本語(yǔ)言,尤其是python,源于我對(duì)一種特定的應(yīng)用新程序4年的跟蹤研究。我特別希望來(lái)說(shuō)明腳本語(yǔ)言是多么適合的科學(xué)軟件項(xiàng)目,以及它們可提供的開(kāi)發(fā)方式去解決重要的軟件工程問(wèn)題,如可靠性,元器件,重用和項(xiàng)目管理工程。盡管討論將集中在Python中,我想強(qiáng)調(diào)這些原則適用于一般的腳本語(yǔ)言。
2. 科學(xué)軟件開(kāi)發(fā)的特點(diǎn)
考慮到科學(xué)軟件主流派別。一方面有諸如IDL和MATLAB等封裝包。另一方面也有一些特定軟件去解決特定問(wèn)題(多數(shù)是研究人員自己寫的)。即使是封裝包更精致,對(duì)于更有意思的科學(xué)內(nèi)容來(lái)說(shuō),更有可能被本土軟件包含。例如,一個(gè)特殊用途的程序可能被寫入為了解決偏微分方程,而像IDL這樣的包可能會(huì)錯(cuò)誤百出。大多數(shù)新的科學(xué)軟件創(chuàng)建都是一個(gè)研究小組決定的,以解決新的計(jì)算問(wèn)題。最初,他們的目標(biāo)只是要解決一個(gè)非常具體的問(wèn)題,由一組特定的方程,初始條件,邊界條件和數(shù)值技術(shù)定義。在許多情況下,這個(gè)問(wèn)題可以通過(guò)編寫C或Fortran與一些數(shù)值方法和一些編程庫(kù)援助的小程序就可以搞定。
剛開(kāi)始時(shí),程序很小。但是一旦它們成功了,就會(huì)被擴(kuò)大去解決一些類似的問(wèn)題。為了處理這些差異,額外的靈活性通常被添加到一個(gè)的用戶界面,無(wú)論是用戶查詢各種問(wèn)題參數(shù)或要求用戶提供一個(gè)系列的命令行選項(xiàng)的形式系統(tǒng)。不幸的是,隨著更多的功能以這種方式被添加到工程中,科學(xué)家會(huì)在眾多命令行和神秘的輸入腳本中崩潰。當(dāng)程序到達(dá)這個(gè)階段,開(kāi)發(fā)者可能會(huì)決定徹底改革其結(jié)構(gòu)和用戶界面。很多時(shí)候,往往會(huì)導(dǎo)致本土的命令解釋器,它允許用戶設(shè)置參數(shù)和執(zhí)行簡(jiǎn)單的命令。當(dāng)然,這并不是一個(gè)驚奇。其一,實(shí)施一個(gè)簡(jiǎn)單的命令解釋器對(duì)有能力的程序員來(lái)說(shuō)并不是十分艱巨。其次,這種界面可以模仿那些更精美得科學(xué)軟件。不幸的是,這通常代表了許多項(xiàng)目開(kāi)發(fā)的最后階段。其一,超越了簡(jiǎn)單的解釋器將涉及廣泛的編程技能,而這正是很多編程者不具備的技能。例如,把一個(gè)完整的編程語(yǔ)言的命令解釋器都需要一些語(yǔ)言解析器的設(shè)計(jì)施工和技術(shù)知識(shí)。例如,把一個(gè)命令行解釋器變?yōu)檎麄€(gè)編程語(yǔ)言,需要解釋器構(gòu)造技術(shù)和一些語(yǔ)言設(shè)計(jì)技巧。同樣,建設(shè)一個(gè)圖形用戶界面需要一個(gè)同樣復(fù)雜的編程技能。然而更可能的情況是,科學(xué)家們沒(méi)有看到這些功能被加入所獲得收益是佛值得開(kāi)發(fā)。因此,科學(xué)家的工具箱全部充滿了各種各樣的程序,每個(gè)都是他們自己寫的奇怪的語(yǔ)言。然而,糟糕的用戶界面只是問(wèn)題的一部分。相反,關(guān)鍵的一點(diǎn)是,最有用的科學(xué)軟件開(kāi)始時(shí)比較小,在一個(gè)相對(duì)長(zhǎng)一段時(shí)間后變得比較零散。此外,這些項(xiàng)目在開(kāi)始時(shí)很少創(chuàng)建通用軟件包-雖然隨著時(shí)間的推移軟件的使用目的變得更加普遍。
由于存在這些問(wèn)題,努力提高科學(xué)軟件將面臨重大的挑戰(zhàn)。首先,科學(xué)家們很少愿意放棄現(xiàn)有的軟件,特別是如果他們熟悉其運(yùn)作,并對(duì)其結(jié)果的準(zhǔn)確性充滿信心。第二,努力去吧非結(jié)構(gòu)話得程序改造成正是的軟件設(shè)計(jì)也是失敗的。最后,需要強(qiáng)調(diào)簡(jiǎn)單的解決方案,也要提產(chǎn)剛和鼓勵(lì)軟件在最初創(chuàng)建時(shí)的發(fā)展和實(shí)驗(yàn)。
3. Python
Python是一種解釋性的面向?qū)ο缶幊陶Z(yǔ)言,在科學(xué)應(yīng)用中開(kāi)始受到極大關(guān)注。因?yàn)閜ython,和其他腳本語(yǔ)言一樣,為許多科學(xué)工程提供了下一個(gè)道路。Python提供了一種解釋型編程語(yǔ)言 ,可以看做是科學(xué)工學(xué)中已經(jīng)使用的簡(jiǎn)單命令語(yǔ)言的擴(kuò)展。第二,python和容易和用其他語(yǔ)言編寫的軟件進(jìn)行集成。因此,它既可以作為一個(gè)控制語(yǔ)言驅(qū)動(dòng)現(xiàn)有的程序,也可以作為將不同的系統(tǒng)結(jié)合在一起的膠水語(yǔ)言 。最后,Python提供了大量的第三方模塊集合,已經(jīng)建立的用戶群,以及以圖書和其在線參考等形式的文檔。 出于這個(gè)原因 ,可以把python作為一種擴(kuò)展,當(dāng)科學(xué)家寫他們自己的命令行時(shí)。
4. 集成動(dòng)態(tài)應(yīng)用
為了說(shuō)明python的使用,這篇論文的最后部分將重點(diǎn)集中在把python加入到動(dòng)態(tài)米快代碼中獲得的經(jīng)驗(yàn),這次試驗(yàn)在在洛斯阿拉莫斯國(guó)家實(shí)驗(yàn)室 進(jìn)行的。這個(gè)應(yīng)用程序最初在1992年被開(kāi)發(fā),為了實(shí)現(xiàn)大規(guī)模的模塊動(dòng)態(tài)的三維展示。最遲,程序用在1024處理器,在巨型計(jì)算機(jī)上運(yùn)行。后來(lái)程序也可以在SUN公司的多核處理器T3D,上運(yùn)行。雖然在這些領(lǐng)域取得了一些很大的成功,但是這個(gè)程序在實(shí)踐當(dāng)中很難使用。尤其是,當(dāng)趨勢(shì)線科學(xué)項(xiàng)目的目標(biāo)時(shí)問(wèn)題總會(huì)變得相當(dāng)復(fù)雜。
考慮到這些因素,加入python就被提上日程。首先,高度解釋的語(yǔ)言將為問(wèn)題規(guī)范和盡可能減少C源碼的改變提供了出色的機(jī)制。第二,為了解決數(shù)據(jù)分析問(wèn)題,我們計(jì)劃集成模擬代碼和數(shù)據(jù)分析和可視化功能。然而,為了使這項(xiàng)工作,一個(gè)非常強(qiáng)大的,簡(jiǎn)單的用戶界面將是必需的。 最終,python作為一種系統(tǒng),從表面上看就像matlab和IDL一樣。從持久性和性能上考慮,python也是很好的選擇。舉例來(lái)說(shuō),他可移植大各種系統(tǒng),對(duì)用戶來(lái)說(shuō)不閉有很多概念,python 也可以被加入到已經(jīng)存在的代碼中去。
- 用Python學(xué)習(xí)科學(xué)編程 0次下載
- Python科學(xué)計(jì)算利器Anaconda
- Python科學(xué)計(jì)算與數(shù)據(jù)分析 22次下載
- 基于科學(xué)計(jì)算程序的物理模型蛻變關(guān)系 5次下載
- Python數(shù)據(jù)科學(xué)手冊(cè)的PDF電子書免費(fèi)下載 4次下載
- Python進(jìn)行配置文件的教程免費(fèi)下載 6次下載
- Python的學(xué)習(xí)和使用經(jīng)驗(yàn)說(shuō)明 16次下載
- Python語(yǔ)言的特點(diǎn)和使用Python對(duì)XML文件的數(shù)據(jù)進(jìn)行解析說(shuō)明 6次下載
- 使用Python做科學(xué)計(jì)算的PDF電子書免費(fèi)下載 2次下載
- 用于數(shù)據(jù)科學(xué)的python必學(xué)模塊之Matplotlib的資料說(shuō)明 14次下載
- 用于數(shù)據(jù)科學(xué)的python必學(xué)模塊之Keras的資料說(shuō)明 9次下載
- 用Python做科學(xué)計(jì)算中文版PDF電子書免費(fèi)下載 0次下載
- python基礎(chǔ)教程之如何使用python進(jìn)行環(huán)境搭建 32次下載
- Python網(wǎng)頁(yè)爬蟲(chóng),文本處理,科學(xué)計(jì)算,機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘工具集 37次下載
- 數(shù)據(jù)科學(xué)的完整學(xué)習(xí)路徑(Python版) 0次下載
- 使用Python進(jìn)行Ping測(cè)試 232次閱讀
- 使用Python進(jìn)行自然語(yǔ)言處理 246次閱讀
- phpy:PHP與Python互調(diào)用庫(kù) 827次閱讀
- Python多進(jìn)程學(xué)習(xí) 455次閱讀
- 如何安裝Python包管理工具 987次閱讀
- 如何搭建Python編程環(huán)境 4945次閱讀
- 詳談Python的數(shù)據(jù)模型和對(duì)象模型 2452次閱讀
- 淺談如何進(jìn)行的量子計(jì)算 1485次閱讀
- 干貨 數(shù)據(jù)科學(xué)入門指南 3108次閱讀
- R和Python到底誰(shuí)更好如何將Python與R同時(shí)應(yīng)用在同一個(gè)項(xiàng)目 3963次閱讀
- 如何快速學(xué)習(xí)Python?學(xué)習(xí)Python有哪些坑? 3808次閱讀
- 17個(gè)非常有用的 Python 技巧 4821次閱讀
- 分析、數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)平臺(tái)最熱語(yǔ)言_Python 1747次閱讀
- 如何快速學(xué)會(huì)Python?利用Python進(jìn)行數(shù)據(jù)分析 1w次閱讀
- 一種可以優(yōu)雅編程的語(yǔ)言Python知識(shí)點(diǎn)匯總 4823次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1491次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開(kāi)關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費(fèi)
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開(kāi)關(guān)電源設(shè)計(jì)
- 0.23 MB | 4次下載 | 免費(fèi)
- 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多