## 閑談
計算機姑娘是擅長進行科學計算的,本來她就是做這個的,只不過后來人們讓她處理了很多文字內容罷了,乃至于現在有一些人認為她是用來打字寫文章的(變成打字機了),忘記了她最擅長的計算。
每種編程語言都能用來做計算,區別在于編程過程中,是否有足夠的工具包供給。比如用匯編,就得自己多勞動,如果用Fortran,就方便得多了。不知道讀者是否聽說過Fortran,貌似古老,現在仍被使用。(以下引文均來自維基百科)
> Fortran語言是為了滿足數值計算的需求而發展出來的。1953年12月,IBM公司工程師約翰·巴科斯(J. Backus)因深深體會編寫程序很困難,而寫了一份備忘錄給董事長斯伯特·赫德(Cuthbert Hurd),建議為IBM704系統設計全新的電腦語言以提升開發效率。當時IBM公司的顧問馮·諾伊曼強烈反對,因為他認為不切實際而且根本不必要。但赫德批準了這項計劃。1957年,IBM公司開發出第一套FORTRAN語言,在IBM704電腦上運作。歷史上第一支FORTRAN程式在馬里蘭州的西屋貝地斯核電廠試驗。1957年4月20日星期五的下午,一位IBM軟體工程師決定在電廠內編譯第一支FORTRAN程式,當程式碼輸入後,經過編譯,印表機列出一行訊息:“原始程式錯誤……右側括號後面沒有逗號”,這讓現場人員都感到訝異,修正這個錯誤後,印表機輸出了正確結果。而西屋電氣公司因此意外地成為FORTRAN的第一個商業用戶。1958年推出FORTRAN Ⅱ,幾年後又推出FORTRAN Ⅲ,1962年推出FORTRAN Ⅳ後,開始廣泛被使用。目前最新版是Fortran 2008。
還有一個廣為應用的不得不說,那就是matlab,一直以來被人稱贊。
> MATLAB(矩陣實驗室)是MATrix LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業數學軟件。MATLAB是一種用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境。除了矩陣運算、繪制函數/數據圖像等常用功能外,MATLAB還可以用來創建用戶界面及與調用其它語言(包括C,C++,Java,Python和FORTRAN)編寫的程序。
但是,它是收費的商業軟件,雖然在某國這個無所謂。
還有R語言,也是在計算領域被多多使用的。
> R語言,一種自由軟體程式語言與操作環境,主要用于統計分析、繪圖、數據挖掘。R本來是由來自新西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman開發(也因此稱為R),現在由“R開發核心團隊”負責開發。R是基于S語言的一個GNU計劃項目,所以也可以當作S語言的一種實現,通常用S語言編寫的代碼都可以不作修改的在R環境下運行。R的語法是來自Scheme。
最后要說的就是python,近幾年使用python的領域不斷擴張,包括在科學計算領域,它已經成為了一種趨勢。在這個過程中,雖然有不少人詬病python的這個慢那個解釋動態語言之類(這種說法是值得討論的),但是,依然無法阻擋python在科學計算領域大行其道。之所以這樣,就是因為它是python。
* 開源,就這一條就已經足夠了,一定要用開源的東西。至于為什么,本教程前面都闡述過了。
* 因為開源,所以有非常棒的社區,里面有相當多支持科學計算的庫,不用還等待何時?
* 簡單易學,這點對那些不是專業程序員來講非常重要。我就接觸到一些搞天文學和生物學的研究者,他們正在使用python進行計算。
* 在科學計算上如果用了python,能夠讓數據跟其它的比如web無縫對接,這不是很好的嗎?
當然,最重要一點,就是本教程是講python的,所以,在科學計算這塊肯定不會講Fortran或者R,一定得是python。
## [](https://github.com/qiwsir/StarterLearningPython/blob/master/310.md#安裝)安裝
如果讀者使用Ubuntu或者Debian,可以這樣來安裝:
~~~
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
~~~
一股腦把可能用上的都先裝上。在安裝的時候,如果需要其它的依賴,你會明顯看到的。
如果是別的系統,比如windows類,請自己網上查找安裝方法吧,這里內容不少,最權威的是看官方網站列出的安裝:[http://www.scipy.org/install.html](http://www.scipy.org/install.html)
## [](https://github.com/qiwsir/StarterLearningPython/blob/master/310.md#基本操作)基本操作
在科學計算中,業界比較喜歡使用ipython notebook,前面已經安裝。在shell中執行
~~~
ipython notebook --pylab=inline
~~~
得到下圖的界面,這是在瀏覽器中打開的:
[](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31001.png)
在In后面的編輯去,可以寫python語句。然后按下`SHIFT+ENTER`或者`CTRL+ENTER`?就能執行了,如果按下`ENTER`,不是執行,是在當前編輯區換行。
[](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31002.png)
Ipython Notebook是一個非常不錯的編輯器,執行之后,直接顯示出來輸入內容和輸出的結果。當然,錯誤是難免的,它會:
[](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31003.png)
注意觀察圖中的箭頭所示,直接標出有問題的行。返回編輯區,修改之后可繼續執行。
[](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31004.png)
不要忽視左邊的輔助操作,能夠讓你在使用ipython notebook的時候更方便。
[](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31005.png)
除了在網頁中之外,如果你已經喜歡上了python的交互模式,特別是你用的計算機中有一個shell的東西,更是棒了。于是可以:
~~~
$ ipython
~~~
進入了一個類似于python的交互模式中,如下所示:
~~~
In [1]: print "hello, pandas"
hello, pandas
In [2]:
~~~
或者說ipython同樣是一個不錯的交互模式。
- 第零章 預備
- 關于Python的故事
- 從小工到專家
- Python安裝
- 集成開發環境
- 第壹章 基本數據類型
- 數和四則運算
- 除法
- 常用數學函數和運算優先級
- 寫一個簡單的程序
- 字符串(1)
- 字符串(2)
- 字符串(3)
- 字符串(4)
- 字符編碼
- 列表(1)
- 列表(2)
- 列表(3)
- 回顧list和str
- 元組
- 字典(1)
- 字典(2)
- 集合(1)
- 集合(2)
- 第貳章 語句和文件
- 運算符
- 語句(1)
- 語句(2)
- 語句(3)
- 語句(4)
- 語句(5)
- 文件(1)
- 文件(2)
- 迭代
- 練習
- 自省
- 第叁章 函數
- 函數(1)
- 函數(2)
- 函數(3)
- 函數(4)
- 函數練習
- 第肆章 類
- 類(1)
- 類(2)
- 類(3)
- 類(4)
- 類(5)
- 多態和封裝
- 特殊方法(1)
- 特殊方法(2)
- 迭代器
- 生成器
- 上下文管理器
- 第伍章 錯誤和異常
- 錯誤和異常(1)
- 錯誤和異常(2)
- 錯誤和異常(3)
- 第陸章 模塊
- 編寫模塊
- 標準庫(1)
- 標準庫(2)
- 標準庫(3)
- 標準庫(4)
- 標準庫(5)
- 標準庫(6)
- 標準庫(7)
- 標準庫(8)
- 第三方庫
- 第柒章 保存數據
- 將數據存入文件
- mysql數據庫(1)
- MySQL數據庫(2)
- mongodb數據庫(1)
- SQLite數據庫
- 電子表格
- 第捌章 用Tornado做網站
- 為做網站而準備
- 分析Hello
- 用tornado做網站(1)
- 用tornado做網站(2)
- 用tornado做網站(3)
- 用tornado做網站(4)
- 用tornado做網站(5)
- 用tornado做網站(6)
- 用tornado做網站(7)
- 第玖章 科學計算
- 為計算做準備
- Pandas使用(1)
- Pandas使用(2)
- 處理股票數據
- 附:網絡文摘
- 如何成為Python高手
- ASCII、Unicode、GBK和UTF-8字符編碼的區別聯系