Pyhton的發展歷程
Python的由來
在1989年12月時,吉多·範羅蘇姆——龜叔,想尋找一門“課余”編程項目來打發聖誕節前後的時間。Guido決定為當時正構思的一個新的腳本語言寫一個解釋器,它是ABC語言(教學語言、是專門為非專業程序員設計的。但是不成功)的後代,對UNIX/C程序員會有吸引力。作為蒙提·派森的飛行馬戲團的狂熱愛好者,他選擇了Python作為項目的標題,使用C進行開發。
1991年 發布Python第一個版本。
Python的現況
截止2016年7月,Python在TIOBE流行編程語言排行榜,已經上升到第四名。Python呈上升趨勢,反映出Python的應用越來越廣泛。
為什麽使用Python的人悅來越多?
Python被應用在眾多領域:
數據分析: 2016/2月/11,美國科學家宣布發現引力波,分析觀測30年的數據。分析引力波數據的Python包:GWPY
雲計算 : 典型應用——Python開發的OpenStack
WEB開發: 眾多優秀的WEB框架,Django、flask、 tornado
科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas。
系統運維: 運維人員必備,slatstack(系統自動化配置和管理工具),Ansible(自動化運維工具)
圖形開發: wxPython、PyQT、TKinter
……………等等
使用Python的企業
Google
NASA - 美國宇航局,從1994年起把python作為主要開發語言
Dropbox - 美國最大的在線雲存儲網站,全部用Python實現,每天網站處理10億個文件的上傳和下載
豆瓣網 - 圖書、唱片、電影等文化產品的資料數據庫網站
BitTorrent - bt下載軟件客戶端
gedit - Linux平臺的文本編輯器
GIMP - Linux平臺的圖像處理軟件(Linux下的PS)
知乎(國外的Quora) - 社交問答網站,國內最大的問答社區,通過Python開發
Autodesk Maya
YouTube:世界上最大的視頻網站YouTube就是用Python開發的
Facebook:大量的基礎庫均通過Python實現的
Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿裏、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。
更多案例:https://www.python.org/about/success/
Python的優缺點
先看優點
1. Python的定位是“優雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,
初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復雜的程序。
2. 開發效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現任何功能,Python官方庫裏都有
相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大降低開發周期,避免重復造輪子。
3. 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
4. 可移植性————由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。如果你小心地避免使用依賴於系統的特性,那麽你的所有Python程序無需修改就幾乎可以在市場上所有的系統平臺上運行
5. 可擴展性————如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。
6. 可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能
缺點:
1. 代碼不能加密
因為PYTHON是解釋性語言,它的源碼都是以明文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應該用Python來去實現。
2. 多線程支持不好——等講線程的時候在詳細說
3. Python慢
Python相對C語言確實慢很多,但其實這裏所指的速度慢在大多數時候我們是無法感知的,比如說,是用C語言程序開發了一個程序,執行需要花0.01秒,使用Python實現同樣功能的程序,需要花0.1秒的時間,雖然相差10倍,但是我們基本是感知不到的。更多的時候,程序慢是程序員實現功能方式導致的。就好像開罐頭的時候,有的人用牙咬,有的人用工具,這樣兩個人的效率相比起來就差了很多。
Python解釋器將程序的讀入內存à編譯成字節碼à字節碼轉換為機器碼à底層執行
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 ...
Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是通過網絡調用來交互,確保各程序之間的獨立性。
Python 發展史
1989年,為了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
1991年,第一個Python編譯器誕生。它是用C語言實現的,並能夠調用C語言的庫文件。從一出生,Python已經具有了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊為基礎的拓展系統。
Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.
1999年 Python的web框架之祖——Zope 1發布
Python 2.0 - 2000/10/16,加入了內存回收機制,構成了現在Python語言框架的基礎
Python 2.4 – 2004/11/30, 同年目前最流行的WEB框架Django 誕生
Python 2.5 - 2006/09/19
Python 2.6 - 2008/10/1
Python 2.7 - 2010/07/03
Python 3.0 - 2008/12/03
Python 3.1 - 2009/06/27
Python 3.2 - 2011/02/20
Python 3.3 - 2012/09/29
Python 3.4 - 2014/03/16
Python 3.5 - 2015/09/13
2014年11月,Python2.7將在2020年停止支持的消息被發布,並且不會在發布2.8版本,建議用戶盡可能的遷移到3.4+
Python最初發布時,在設計上有一些缺陷,比如Unicode標準晚於Python出現,所以一直以來對Unicode的支持並不完全,而ASCII編碼支持的字符有限。例: 對中文支持不好
Python3相對Python早期的版本是一個較大的升級,Py3在設計的時候沒有考慮向下兼容,所以很多早期版本的Python的程序無法再Py3上運行。
為了照顧早期的版本,推出過渡版本2.6——基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。
2010年繼續推出了兼容版本2.7,大量Python3的特性被反向遷移到了Python2.7
2.7比2.6進步非常多,同時擁有大量3中的特性和庫,並且照顧了原有的Python開發人群
Python2 還是 Python3 ?
py2.7是2.x系列的最後一個版本,已經停止開發,不再增加新功能。2020年終止支持。
所有的最新的標準庫的更新改進,只會在3.x的版本裏出現。
龜叔決定清理Python2.x ,並且不再兼容舊版本。 最大的一個改變就是使用Unicode作為默認編碼。Pyhton2.x中直接寫中文會報錯,Python3中可以直接寫中文了。
從開源項目看,支持py3的比例已經大大提高,知名的項目一般都支持py2.7和py3+。
py3比py2更規範統一、去掉了沒必要的關鍵字
Python3.x還在持續改進
所以我們還是推薦大家使用Python3.x。
Pyhton的發展歷程