python的歷史

来源:http://www.cnblogs.com/hujq1029/archive/2016/08/19/5789268.html
-Advertisement-
Play Games

Python的誕生 Python的創始人吉多·範羅蘇姆(Guido van Rossum),在1989年12月的聖誕節期間,為了打發時間,決定開發一種新的腳本解釋程式,作為ABC語言的繼承。 現在,python以其優美,清晰,簡單的特性在全世界廣泛流行,成為最主流的編程語言之一。 截止至2016年7 ...


Python的誕生

    Python的創始人吉多·範羅蘇姆(Guido van Rossum),在1989年12月的聖誕節期間,為了打發時間,決定開發一種新的腳本解釋程式,作為ABC語言的繼承。

現在,python以其優美,清晰,簡單的特性在全世界廣泛流行,成為最主流的編程語言之一。

    截止至2016年7月,python在TIOBE流行編程語言排行榜,已經上升到第四名。並且從趨勢圖中可以看出其還在呈增長趨勢。

 

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 - Google Groups、Gmail、Google Maps、AlphaGo等,Google App Engine支持python作為開發語言
NASA - 美國宇航局,從1994年起把python作為主要開發語言
Dropbox - 美國最大的線上雲存儲網站,全部用Python實現,每天網站處理10億個文件的上傳和下載
豆瓣網 - 圖書、唱片、電影等文化產品的資料資料庫網站
BitTorrent - bt下載軟體客戶端
gedit - Linux平臺的文本編輯器
GIMP - Linux平臺的圖像處理軟體(Linux下的PS)
知乎(國外的Quora) - 社交問答網站,國內最大的問答社區,通過Python開發
Autodesk Maya - 3D建模軟體,支持python作為腳本語言
YouTube:世界上最大的視頻網站YouTube就是用Python開發的
Facebook:大量的基礎庫均通過Python實現的
Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的

除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿裡、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。
更多案例:https://www.python.org/about/success/

 

Python的優缺點

    任何語言都有其歐缺點,python也不例外,先讓我們看看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的解釋器

1.Cpython

Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成位元組碼文件(pyc文件),然後運行在Python虛擬機上。

2.Jython

Python的Java實現,Jython會將Python代碼動態編譯成Java位元組碼,然後在JVM上運行。

3.IronPython

Python的C#實現,IronPython將Python代碼編譯成C#位元組碼,然後在CLR上運行。(與Jython類似)

4.PyPy

Python實現的Python,將Python的位元組碼位元組碼再編譯成機器碼。此編輯器能夠大大加快Python程式的運行速度,可能會是Python的未來。

5.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的版本里出現。Guido決定清理Python2.x ,並且不再相容舊版本。

最大的一個改變就是使用Unicode作為預設編碼。Pyhton2.x中直接寫中文會報錯,Python3中可以直接寫中文了。從開源項目看,支持py3的比例已經大大提高,知名的項目一般都支持py2.7和py3+。

py3比py2更規範統一、去掉了沒必要的關鍵字Python3.x還在持續改進。

    所以我們還是推薦大家使用Python3.x。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最前面的話:Smobiler是一個在VS環境中使用.Net語言來開發APP的開發平臺,也許比Xamarin更方便 ...
  • 在項目中載入這個dll 之後引用 使用方法具體如下圖: 在這裡需要註意到是項目中對interactivity的引用 : ...
  • 決策樹是一種非常經典的分類器,它的作用原理有點類似於我們玩的猜謎游戲。比如猜一個動物: 問:這個動物是陸生動物嗎? 答:是的。 問:這個動物有鰓嗎? 答:沒有。 這樣的兩個問題順序就有些顛倒,因為一般來說陸生動物是沒有鰓的(記得應該是這樣的,如有錯誤歡迎指正)。所以玩這種游戲,提問的順序很重要,爭取 ...
  • 物聯網涉及到各種設備、各種感測器、各種數據源、各種協議,並且很難統一,那麼就要有一個結構性的框架解決這些問題。SSIO就是根據時代發展的階段和現實實際情況的結合產物。 各種數據信息,如下圖: 解決方案,配合SIO使用: 一、SSIO特點 輕型高性能通信框架,適用於多種應用場,輪詢模式、自控模式、併發 ...
  • 遞歸演算法這個是非常常見的一個演算法,也是大多數人都會用的,因為它足夠簡單,通俗易懂!在遍歷城市,樹等大腦里反應出來的第一方法大多就屬於這個了 遞歸容易使用,但是也容易用壞,我想"記憶體溢出"這個估計是每個人用遞歸都會碰到的bug,我為什麼還是要寫這方面的知識呢,那是因為文章的最後我有一個問題要問 首先我 ...
  • 前提概要 當需要同時處理多個url時,可採用curl_multi_perform方式執行,如下代碼1: 問題概要 現在我的url為訂閱方式,每個curl都會一直收數據(即使沒數據也會每10s收到一幀心跳消息),永遠不會退出,即上面的迴圈永遠在執行,這樣我無法運行到"解析數據"那一步。所以我需要在迴圈 ...
  • 下載鏈接 ...
  • 謹記:在C語言中,當兩種不同類型之間運算時,低位元組長度類型會向高自己長度類型轉換,有符號會向無符號類型轉換。 舉例子如下: 輸出: -1 <= 1 -1 <= 1 當C2與i進行比較時,由於C2是有符號8位,i是無符號32位,根據C語言的規則,c2被轉換成32位,即-1的補碼,故會得出-1>1的結論 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...