## 闲谈
计算机姑娘是擅长进行科学计算的,本来她就是做这个的,只不过后来人们让她处理了很多文字内容罢了,乃至于现在有一些人认为她是用来打字写文章的(变成打字机了),忘记了她最擅长的计算。
每种编程语言都能用来做计算,区别在于编程过程中,是否有足够的工具包供给。比如用汇编,就得自己多劳动,如果用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://box.kancloud.cn/2015-09-07_55ed5ea90be42.png)](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31001.png)
在In后面的编辑去,可以写python语句。然后按下`SHIFT+ENTER`或者`CTRL+ENTER` 就能执行了,如果按下`ENTER`,不是执行,是在当前编辑区换行。
[![](https://box.kancloud.cn/2015-09-07_55ed5eaee273c.png)](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31002.png)
Ipython Notebook是一个非常不错的编辑器,执行之后,直接显示出来输入内容和输出的结果。当然,错误是难免的,它会:
[![](https://box.kancloud.cn/2015-09-07_55ed5eb6d5acc.png)](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31003.png)
注意观察图中的箭头所示,直接标出有问题的行。返回编辑区,修改之后可继续执行。
[![](https://box.kancloud.cn/2015-09-07_55ed5ebe9f326.png)](https://github.com/qiwsir/StarterLearningPython/blob/master/3images/31004.png)
不要忽视左边的辅助操作,能够让你在使用ipython notebook的时候更方便。
[![](https://box.kancloud.cn/2015-09-07_55ed5ec23ebbf.png)](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字符编码的区别联系