為計(jì)算做準(zhǔn)備

2018-02-24 15:48 更新

閑談

計(jì)算機(jī)姑娘是擅長(zhǎng)進(jìn)行科學(xué)計(jì)算的,本來她就是做這個(gè)的,只不過后來人們讓她處理了很多文字內(nèi)容罷了,乃至于現(xiàn)在有一些人認(rèn)為她是用來打字寫文章的(變成打字機(jī)了),忘記了她最擅長(zhǎng)的計(jì)算。

每種編程語言都能用來做計(jì)算,區(qū)別在于編程過程中,是否有足夠的工具包供給。比如用匯編,就得自己多勞動(dòng),如果用Fortran,就方便得多了。不知道讀者是否聽說過Fortran,貌似古老,現(xiàn)在仍被使用。(以下引文均來自維基百科)

Fortran語言是為了滿足數(shù)值計(jì)算的需求而發(fā)展出來的。1953年12月,IBM公司工程師約翰·巴科斯(J. Backus)因深深體會(huì)編寫程序很困難,而寫了一份備忘錄給董事長(zhǎng)斯伯特·赫德(Cuthbert Hurd),建議為IBM704系統(tǒng)設(shè)計(jì)全新的電腦語言以提升開發(fā)效率。當(dāng)時(shí)IBM公司的顧問馮·諾伊曼強(qiáng)烈反對(duì),因?yàn)樗J(rèn)為不切實(shí)際而且根本不必要。但赫德批準(zhǔn)了這項(xiàng)計(jì)劃。1957年,IBM公司開發(fā)出第一套FORTRAN語言,在IBM704電腦上運(yùn)作。歷史上第一支FORTRAN程式在馬里蘭州的西屋貝地斯核電廠試驗(yàn)。1957年4月20日星期五的下午,一位IBM軟體工程師決定在電廠內(nèi)編譯第一支FORTRAN程式,當(dāng)程式碼輸入後,經(jīng)過編譯,印表機(jī)列出一行訊息:“原始程式錯(cuò)誤……右側(cè)括號(hào)後面沒有逗號(hào)”,這讓現(xiàn)場(chǎng)人員都感到訝異,修正這個(gè)錯(cuò)誤後,印表機(jī)輸出了正確結(jié)果。而西屋電氣公司因此意外地成為FORTRAN的第一個(gè)商業(yè)用戶。1958年推出FORTRAN Ⅱ,幾年後又推出FORTRAN Ⅲ,1962年推出FORTRAN Ⅳ後,開始廣泛被使用。目前最新版是Fortran 2008。

還有一個(gè)廣為應(yīng)用的不得不說,那就是matlab,一直以來被人稱贊。

MATLAB(矩陣實(shí)驗(yàn)室)是MATrix LABoratory的縮寫,是一款由美國(guó)The MathWorks公司出品的商業(yè)數(shù)學(xué)軟件。MATLAB是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境。除了矩陣運(yùn)算、繪制函數(shù)/數(shù)據(jù)圖像等常用功能外,MATLAB還可以用來創(chuàng)建用戶界面及與調(diào)用其它語言(包括C,C++,Java,Python和FORTRAN)編寫的程序。

但是,它是收費(fèi)的商業(yè)軟件,雖然在某國(guó)這個(gè)無所謂。

還有R語言,也是在計(jì)算領(lǐng)域被多多使用的。

R語言,一種自由軟體程式語言與操作環(huán)境,主要用于統(tǒng)計(jì)分析、繪圖、數(shù)據(jù)挖掘。R本來是由來自新西蘭奧克蘭大學(xué)的Ross Ihaka和Robert Gentleman開發(fā)(也因此稱為R),現(xiàn)在由“R開發(fā)核心團(tuán)隊(duì)”負(fù)責(zé)開發(fā)。R是基于S語言的一個(gè)GNU計(jì)劃項(xiàng)目,所以也可以當(dāng)作S語言的一種實(shí)現(xiàn),通常用S語言編寫的代碼都可以不作修改的在R環(huán)境下運(yùn)行。R的語法是來自Scheme。

最后要說的就是python,近幾年使用python的領(lǐng)域不斷擴(kuò)張,包括在科學(xué)計(jì)算領(lǐng)域,它已經(jīng)成為了一種趨勢(shì)。在這個(gè)過程中,雖然有不少人詬病python的這個(gè)慢那個(gè)解釋動(dòng)態(tài)語言之類(這種說法是值得討論的),但是,依然無法阻擋python在科學(xué)計(jì)算領(lǐng)域大行其道。之所以這樣,就是因?yàn)樗莗ython。

  • 開源,就這一條就已經(jīng)足夠了,一定要用開源的東西。至于為什么,本教程前面都闡述過了。
  • 因?yàn)殚_源,所以有非常棒的社區(qū),里面有相當(dāng)多支持科學(xué)計(jì)算的庫,不用還等待何時(shí)?
  • 簡(jiǎn)單易學(xué),這點(diǎn)對(duì)那些不是專業(yè)程序員來講非常重要。我就接觸到一些搞天文學(xué)和生物學(xué)的研究者,他們正在使用python進(jìn)行計(jì)算。
  • 在科學(xué)計(jì)算上如果用了python,能夠讓數(shù)據(jù)跟其它的比如web無縫對(duì)接,這不是很好的嗎?

當(dāng)然,最重要一點(diǎn),就是本教程是講python的,所以,在科學(xué)計(jì)算這塊肯定不會(huì)講Fortran或者R,一定得是python。

安裝

如果讀者使用Ubuntu或者Debian,可以這樣來安裝:

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

得到下圖的界面,這是在瀏覽器中打開的:

在In后面的編輯去,可以寫python語句。然后按下SHIFT+ENTER或者CTRL+ENTER?就能執(zhí)行了,如果按下ENTER,不是執(zhí)行,是在當(dāng)前編輯區(qū)換行。

Ipython Notebook是一個(gè)非常不錯(cuò)的編輯器,執(zhí)行之后,直接顯示出來輸入內(nèi)容和輸出的結(jié)果。當(dāng)然,錯(cuò)誤是難免的,它會(huì):

注意觀察圖中的箭頭所示,直接標(biāo)出有問題的行。返回編輯區(qū),修改之后可繼續(xù)執(zhí)行。

不要忽視左邊的輔助操作,能夠讓你在使用ipython notebook的時(shí)候更方便。

除了在網(wǎng)頁中之外,如果你已經(jīng)喜歡上了python的交互模式,特別是你用的計(jì)算機(jī)中有一個(gè)shell的東西,更是棒了。于是可以:

$ ipython

進(jìn)入了一個(gè)類似于python的交互模式中,如下所示:

In [1]: print "hello, pandas"
hello, pandas

In [2]: 

或者說ipython同樣是一個(gè)不錯(cuò)的交互模式。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)