計(jì)算機(jī)姑娘是擅長(zhǎng)進(jìn)行科學(xué)計(jì)算的,本來(lái)她就是做這個(gè)的,只不過(guò)后來(lái)人們讓她處理了很多文字內(nèi)容罷了,乃至于現(xiàn)在有一些人認(rèn)為她是用來(lái)打字寫(xiě)文章的(變成打字機(jī)了),忘記了她最擅長(zhǎng)的計(jì)算。
每種編程語(yǔ)言都能用來(lái)做計(jì)算,區(qū)別在于編程過(guò)程中,是否有足夠的工具包供給。比如用匯編,就得自己多勞動(dòng),如果用 Fortran,就方便得多了。不知道讀者是否聽(tīng)說(shuō)過(guò) Fortran,貌似古老,現(xiàn)在仍被使用。(以下引文均來(lái)自維基百科)
Fortran 語(yǔ)言是為了滿足數(shù)值計(jì)算的需求而發(fā)展出來(lái)的。1953 年 12 月,IBM 公司工程師約翰·巴科斯(J. Backus)因深深體會(huì)編寫(xiě)程序很困難,而寫(xiě)了一份備忘錄給董事長(zhǎng)斯伯特·赫德(Cuthbert Hurd),建議論為 IBM704 系統(tǒng)設(shè)計(jì)全新的電腦語(yǔ)言以提升開(kāi)發(fā)效率。當(dāng)時(shí) IBM 公司的顧問(wèn)馮·諾伊曼強(qiáng)烈反對(duì),因?yàn)樗握J(rèn)為不切實(shí)際而且根本不必要。但赫德批準(zhǔn)了這項(xiàng)計(jì)劃。1957 年,IBM 公司開(kāi)發(fā)出第一套 FORTRAN 語(yǔ)言,在 IBM704 電腦上運(yùn)作。歷史上第一支 FORTRAN 程式在馬里蘭州的西屋貝地斯核電廠實(shí)驗(yàn)室。1957 年 4 月 20 日星期五的下午,一位 IBM 軟件工程師決定在電廠內(nèi)編譯第一支 FORTRAN 程式,當(dāng)程式碼輸入后,經(jīng)過(guò)編譯,印表機(jī)列出一行訊息:“原始程式錯(cuò)誤……右側(cè)括號(hào)后面沒(méi)有逗號(hào)”,這讓現(xiàn)場(chǎng)人員都感到訝異,修正這個(gè)錯(cuò)誤后,印表機(jī)輸出了正確結(jié)果。而西屋電器公司因此意外地成為 FORTRAN 的第一個(gè)商業(yè)用戶。1958 年推出 FORTRAN Ⅱ,幾年后又推出 FORTRAN Ⅲ,1962 年推出 FORTRAN Ⅳ 后,開(kāi)始廣泛被使用。目前最新版是 Fortran 2008。
還有一個(gè)廣為應(yīng)用的不得不說(shuō),那就是 matlab,一直以來(lái)被人稱贊。
MATLAB(矩陣實(shí)驗(yàn)室)是 MATrix LABoratory 的縮寫(xiě),是一款由美國(guó) The MathWorks 公司出品的商業(yè)數(shù)學(xué)軟件。MATLAB 是一種用于算法開(kāi)發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境。除了矩陣運(yùn)算、繪制函數(shù)/數(shù)據(jù)圖像等常用功能外,MATLAB 還可以用來(lái)創(chuàng)建用戶界面及與調(diào)用其它語(yǔ)言(包括 C,C++,Java,Python 和 FORTRAN)編寫(xiě)的程序。
但是,它是收費(fèi)的商業(yè)軟件,雖然在某國(guó)這個(gè)無(wú)所謂。
還有 R 語(yǔ)言,也是在計(jì)算領(lǐng)域被多多使用的。
R 語(yǔ)言,一種自由軟件程式語(yǔ)言與操作環(huán)境,主要用于統(tǒng)計(jì)分析、繪圖、數(shù)據(jù)挖掘。R 本來(lái)是由來(lái)自新西蘭奧克蘭大學(xué)的 Ross Ihaka 和 Robert Gentleman 開(kāi)發(fā)(也因此稱為 R),現(xiàn)在由“R 開(kāi)發(fā)核心團(tuán)隊(duì)”負(fù)責(zé)開(kāi)發(fā)。R 是基于 S 語(yǔ)言的一個(gè) GNU 計(jì)劃項(xiàng)目,所以也可以當(dāng)作 S 語(yǔ)言的一種實(shí)現(xiàn),通常用 S 語(yǔ)言編寫(xiě)的代碼都可以不作修改的在 R 環(huán)境下運(yùn)行。R 的語(yǔ)法是來(lái)自 Scheme。
最后要說(shuō)的就是 Python,近幾年使用 Python 的領(lǐng)域不斷擴(kuò)張,包括在科學(xué)計(jì)算領(lǐng)域,它已經(jīng)成為了一種趨勢(shì)。在這個(gè)過(guò)程中,雖然有不少人詬病 Python 的這個(gè)慢那個(gè)解釋動(dòng)態(tài)語(yǔ)言之類(這種說(shuō)法是值得討論的),但是,依然無(wú)法阻擋 Python 在科學(xué)計(jì)算領(lǐng)域大行其道。之所以這樣,就是因?yàn)樗?Python。
當(dāng)然,最重要一點(diǎn),就是本教程是講 Python 的,所以,在科學(xué)計(jì)算這塊肯定不會(huì)講 Fortran 或者 R,一定得是 Python。
如果讀者使用 Ubuntu 或者 Debian,可以這樣來(lái)安裝:
sudo apt-get install Python-numpy Python-scipy Python-matplotlib ipython ipython-notebook Python-pandas Python-sympy Python-nose
一股腦把可能用上的都先裝上。在安裝的時(shí)候,如果需要其它的依賴,你會(huì)明顯看到的。
如果是別的系統(tǒng),比如 windows 類,請(qǐng)自己網(wǎng)上查找安裝方法吧,這里內(nèi)容不少,最權(quán)威的是看官方網(wǎng)站列出的安裝:http://www.scipy.org/install.html
在科學(xué)計(jì)算中,業(yè)界比較喜歡使用 ipython notebook,前面已經(jīng)安裝。在 shell 中執(zhí)行
ipython notebook --pylab=inline
得到下圖的界面,這是在瀏覽器中打開(kāi)的:
http://wiki.jikexueyuan.com/project/start-learning-python/images/31001.png" alt="" />
在 In 后面的編輯去,可以寫(xiě) Python 語(yǔ)句。然后按下 SHIFT+ENTER
或者 CTRL+ENTER
就能執(zhí)行了,如果按下 ENTER
,不是執(zhí)行,是在當(dāng)前編輯區(qū)換行。
http://wiki.jikexueyuan.com/project/start-learning-python/images/31002.png" alt="" />
Ipython Notebook 是一個(gè)非常不錯(cuò)的編輯器,執(zhí)行之后,直接顯示出來(lái)輸入內(nèi)容和輸出的結(jié)果。當(dāng)然,錯(cuò)誤是難免的,它會(huì):
http://wiki.jikexueyuan.com/project/start-learning-python/images/31003.png" alt="" />
注意觀察圖中的箭頭所示,直接標(biāo)出有問(wèn)題的行。返回編輯區(qū),修改之后可繼續(xù)執(zhí)行。
http://wiki.jikexueyuan.com/project/start-learning-python/images/31004.png" alt="" />
不要忽視左邊的輔助操作,能夠讓你在使用 ipython notebook 的時(shí)候更方便。
http://wiki.jikexueyuan.com/project/start-learning-python/images/31005.png" alt="" />
除了在網(wǎng)頁(yè)中之外,如果你已經(jīng)喜歡上了 Python 的交互模式,特別是你用的計(jì)算機(jī)中有一個(gè) shell 的東西,更是棒了。于是可以:
$ ipython
進(jìn)入了一個(gè)類似于 Python 的交互模式中,如下所示:
In [1]: print "hello, pandas"
hello, pandas
In [2]:
或者說(shuō) ipython 同樣是一個(gè)不錯(cuò)的交互模式。
總目錄 | 上節(jié):用 tornado 做網(wǎng)站 (7) | 下節(jié):Pandas 使用 (1)
如果你認(rèn)為有必要打賞我,請(qǐng)通過(guò)支付寶:qiwsir@126.com,不勝感激。