1、編程與編程語言
1. 編程的目的
計算機的發明,是爲了用機器取代/解放人力,而編程的目的則是將人類的思想流程按照某種可以被計算機識別的表達方式傳遞給計算機,從而達到讓計算機可以像人腦/電腦同樣自動執行的效果。 python
2. 什麼是編程語言?
上面說起的可以被計算機所識別的表達方式即編程語言,語言是溝通的介質,而編程語言是程序員與計算機溝通的介質。在編程的世界裏,計算機更像是人的奴隸,人類編程的目的就命令奴隸去工做。linux
3. 什麼是編程?
編程即程序員根據需求把本身的思想流程按照某種編程語言的語法風格編寫下來,產出的結果就是包含一堆字符的文件。 #強調:程序在未運行前跟普通文件無異,只有程序在運行時,文件內所寫的字符纔有特定的語法意義。程序員
2、編程語言分類
編程的語言的發展經歷了web
- 機器語言:站在計算機(奴隸)的角度,說計算機能聽懂的語言,那就是直接用二進制編程,直接操做硬件
- 彙編語言:站在計算機(奴隸)的角度,簡寫的英文標識符取代二進制去編寫程序,本質仍然是直接操做硬件;
- 高級語言:站在人(奴隸主)的角度,說人話,即用人類的字符去編寫程序,屏蔽了硬件操做
高級語言更貼近人類語言,於是形成了:它必須被翻譯成計算機能讀懂二進制後,才能被執行,按照翻譯方式分爲正則表達式
1. 編譯型(須要編譯器,至關於用谷歌翻譯):如C,執行速度快,調試麻煩
算法
2. 解釋型(須要解釋器,至關於同聲傳譯):如python,執行速度慢,調試方便shell
3、Python介紹
1. Python的前世此生
- Cpython
Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
- Jyhton
Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
- IronPython
Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
- PyPy(特殊)
Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
- RubyPython、Brython ...
以上除PyPy以外,其餘的Python的對應關係和執行流程以下:flask
![](http://static.javashuo.com/static/loading.gif)
PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提高執行速度!
![](http://static.javashuo.com/static/loading.gif)
- 簡單————Python是一種表明簡單主義思想的語言。閱讀一個良好的Python程序就感受像是在讀英語同樣,儘管這個英語的要求很是嚴格!Python的這種僞代碼本質是它最大的優勢之一。它使你可以專一於解決問題而不是去搞明白語言自己。
- 易學————就如同你即將看到的同樣,Python極其容易上手。前面已經提到了,Python有極其簡單的語法。
- 免費、開源————Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你能夠自由地發佈這個軟件的拷貝、閱讀它的源代碼、對它作改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念。這是爲何Python如此優秀的緣由之一——它是由一羣但願看到一個更加優秀的Python的人創造並常常改進着的。
- 高層語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
- 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就能夠在下述任何平臺上面運行。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC、Symbian以及Google基於linux開發的Android平臺!
- 解釋性————這一點須要一些解釋。一個用編譯性語言好比C或C++寫的程序能夠從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程經過編譯器和不一樣的標記、選項完成。當你運行你的程序的時候,鏈接/轉載器軟件把你的程序從硬盤複製到內存中而且運行。而Python語言寫的程序不須要編譯成二進制代碼。你能夠直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱爲字節碼的中間形式,而後再把它翻譯成計算機使用的機器語言並運行。事實上,因爲你再也不須要擔憂如何編譯程序,如何確保鏈接轉載正確的庫等等,全部這一切使得使用Python更加簡單。因爲你只須要把你的Python程序拷貝到另一臺計算機上,它就能夠工做了,這也使得你的Python程序更加易於移植。
- 面向對象————Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。與其餘主要的語言如C++和Java相比,Python以一種很是強大又簡單的方式實現面向對象編程。
- 可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
- 豐富的庫————Python標準庫確實很龐大。它能夠幫助你處理各類工做,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。記住,只要安裝了Python,全部這些功能都是可用的。這被稱做Python的「功能齊全」理念。除了標準庫之外,還有許多其餘高質量的庫,如wxPython、Twisted和Python圖像庫等等。
- 規範的代碼————Python採用強制縮進的方式使得代碼具備極佳的可讀性。
4. Python的應用領域
- WEB開發——最火的Python web框架Django, 支持異步高併發的Tornado框架,短小精悍的flask,bottle, Django官方的標語把Django定義爲the framework for perfectionist with deadlines(大意是一個爲徹底主義者開發的高效率web框架)。
- 網絡編程——支持高併發的Twisted網絡框架, py3引入的asyncio使異步編程變的很是簡單。
- 爬蟲——爬蟲領域,Python幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥。
- 雲計算——目前最火最知名的雲計算框架就是OpenStack,Python如今的火,很大一部分就是由於雲計算。
- 人工智能——誰會成爲AI 和大數據時代的第一開發語言?這本已經是一個不須要爭論的問題。若是說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那麼三年以後,趨勢已經很是明確了,特別是前兩天 Facebook 開源了 PyTorch 以後,Python 做爲 AI 時代頭牌語言的位置基本確立,將來的懸念僅僅是誰能坐穩第二把交椅。
- 自動化運維——問問中國的每一個運維人員,運維人員必須會的語言是什麼?10我的相信會給你一個相同的答案,它的名字叫Python。
- 金融分析——我我的以前在金融行業,10年的時候,咱們公司寫的好多分析程序、高頻交易軟件就是用的Python,到目前,Python是金融分析、量化交易領域裏用的最多的語言
- 科學運算—— 你知道麼,97年開始,NASA就在大量使用Python在進行各類複雜的科學運算,隨着NumPy, SciPy, Matplotlib, Enthought librarys等衆多程序庫的開發,使的Python愈來愈適合於作科學計算、繪製高質量的2D和3D圖像。和科學計算領域最流行的商業軟件Matlab相比,Python是一門通用的程序設計語言,比Matlab所採用的腳本語言的應用範圍更普遍。
- 遊戲開發——在網絡遊戲開發中Python也有不少應用。相比Lua or C++,Python 比 Lua 有更高階的抽象能力,能夠用更少的代碼描述遊戲業務邏輯,與 Lua 相比,Python 更適合做爲一種 Host 語言,即程序的入口點是在 Python 那一端會比較好,而後用 C/C++ 在很是必要的時候寫一些擴展。Python 很是適合編寫 1 萬行以上的項目,並且可以很好地把網遊項目的規模控制在 10 萬行代碼之內。另外據我所知,知名的遊戲<文明> 就是用Python寫的。