編程語言(programming language),是用來定義計算機程序的形式語言。它是一種被標準化的交流技巧,用來向計算機發出指令。一種計算機語言讓程序員可以準確地定義計算機所須要使用的數據,並精確地定義在不一樣狀況下所應當採起的行動。python
最先的編程語言是在電腦發明以後產生的,當時是用來控制提花織布機及自動演奏鋼琴的動做。在電腦領域已發明了上千不一樣的編程語言,並且每一年仍有新的編程語言誕生。不少編程語言須要用指令方式說明計算的程序,而有些編程語言則屬於聲明式編程,說明須要的結果,而不說明如何計算。程序員
編程語言本來是被設計成專門使用在計算機上的,但它們也能夠用來定義算法或者數據結構。正是由於如此,程序員纔會試圖使程序代碼更容易閱讀。編程語言每每使程序員可以比使用機器語言更準確地表達他們所想表達的目的。對那些從事計算機科學的人來講,懂得程序設計語言是十分重要的,由於在當今全部的計算都須要程序設計語言才能完成。web
編程語言俗稱「計算機語言」,種類很是的多,總的來講能夠分紅機器語言、彙編語言、高級語言三大類。電腦每作的一次動做,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序所有都是用咱們所掌握的語言來編寫的。因此人們要控制計算機必定要經過計算機語言向計算機發出命令。 目前通用的編程語言有兩種形式:彙編語言和高級語言。算法
因爲計算機內部只能接受二進制代碼,所以,用二進制代碼0和1描述的指令稱爲機器指令,所有機器指令的集合構成計算機的機器語言,用機器語言編程的程序稱爲目標程序。只有目標程序才能被計算機直接識別和執行。可是機器語言編寫的程序無明顯特徵,難以記憶,不便閱讀和書寫,且依賴於具體機種,侷限性很大,機器語言屬於低級語言。shell
彙編語言的實質和機器語言是相同的,都是直接對硬件操做,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它一樣須要編程者將每一步具體的操做用命令的形式寫出來。彙編程序一般由三部分組成:指令、僞指令和宏指令。彙編程序的每一句指令只能對應實際操做過程當中的一個很細微的動做。例如移動、自增,所以彙編源程序通常比較冗長、複雜、容易出錯,並且使用匯編語言編程須要有更多的計算機專業知識,但彙編語言的優勢也是顯而易見的,用匯編語言所能完成的操做不是通常高級語言所可以實現的,並且源程序經彙編生成的可執行文件不只比較小,並且執行速度很快。數據庫
高級語言是大多數編程者的選擇。和彙編語言相比,它不但將許多相關的機器指令合成爲單條指令,而且去掉了與具體操做有關但與完成工做無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,因爲省略了不少細節,編程者也就不須要有太多的專業知識。編程
高級語言主要是相對於彙編語言而言,它並非特指某一種具體的語言,而是包括了不少編程語言,像最簡單的編程語言PASCAL語言也屬於高級語言。flask
高級語言所編制的程序不能直接被計算機識別,必須通過轉換才能被執行,按轉換方式可將它們分爲兩類:windows
解釋類:執行方式相似於咱們平常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,所以效率比較低,並且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,能夠動態地調整、修改應用程序,如Python。瀏覽器
編譯類:編譯是指在應用源程序執行以前,就將程序源代碼「翻譯」成目標代碼(機器語言),所以其目標程序能夠脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦須要修改,必須先修改源代碼,再從新編譯生成新的目標文件(* .obj,也就是OBJ文件)才能執行,只有目標文件而沒有源代碼,修改很不方便,如C語言。
世界上的編程語言有600多種,但真正你們主流在使用的最多二三十種,不一樣的語言有本身的特色和擅長領域,隨着計算機的不斷髮展,新語言在不斷誕生,也同時有不少老舊的語言慢慢無人用了。
² 2017年5月數據(https://www.tiobe.com/tiobe-index/ )
ü JAVA:
Java是一種能夠撰寫跨平臺應用軟件的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具備卓越的通用性、高效性、平臺移植性和安全性,普遍應用於我的PC、數據中心、遊戲控制檯、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社羣。在全球雲計算和移動互聯網的產業環境下,Java更具有了顯著優點和廣闊前景。
ü C語言:
C語言是一種計算機程序設計語言,它既具備高級語言的特色,又具備彙編語言的特色。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已前後被移植到大、中、小及微型機上,它能夠做爲工做系統設計語言,編寫系統應用程序,也能夠做爲應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用範圍普遍,具有很強的數據處理能力,不只僅是在軟件開發上,並且各種科研都須要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用好比單片機以及嵌入式系統開發。
ü C++:
C++是C語言的繼承的擴展,它既能夠進行C語言的過程化程序設計,又能夠進行以抽象數據類型爲特色的基於對象的程序設計,還能夠進行以繼承和多態爲特色的面向對象的程序設計。C++擅長面向對象程序設計的同時,還能夠進行基於過程的程序設計,於是C++就適應的問題規模而論,大小由之。
C++不只擁有計算機高效運行的實用性特徵,同時還致力於提升大規模程序的編程質量與程序設計語言的問題描述能力。
ü SQL
結構化查詢語言(Structured Query Language)簡稱SQL,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統;同時也是數據庫腳本文件的擴展名。結構化查詢語言是高級的非過程化編程語言,容許用戶在高層數據結構上工做。它不要求用戶指定對數據的存放方法,也不須要用戶瞭解具體的數據存放方式,因此具備徹底不一樣底層結構的不一樣數據庫系統可使用相同的結構化查詢語言語言做爲數據輸入與管理的接口。結構化查詢語言語句能夠嵌套,這使他具備極大的靈活性和強大的功能。
SQL語言結構簡潔,功能強大,簡單易學,因此自從IBM公司1981年推出以來,SQL語言,獲得了普遍的應用。現在不管是像Oracle,Sybase,Informix,SQL server這些大型的數據庫管理系統,仍是像Visual Foxpro,PowerBuilder這些微機上經常使用的數據庫開發系統,都支持SQL語言做爲查詢語言。
ü JavaScript
JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱爲JavaScript引擎,爲瀏覽器的一部分,普遍用於客戶端的腳本語言,最先是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增長動態功能。
ü Python
Python是一門優秀的綜合語言, Python的宗旨是簡明、優雅、強大,在人工智能、雲計算、金融分析、大數據開發、WEB開發、自動化運維、測試等方向應用普遍,
ü 易語言
易語言是一門計算機程序語言。以「易」著稱,以中文做爲程序代碼表達的語言形式。易語言的創始人是吳濤。早期版本的名字爲E語言。易語言最先的版本的發佈可追溯至2000年9月11日。能夠說,創造易語言的初衷是進行用中文來編寫程序的實踐。從2000年至今,易語言已經發展到必定的規模:功能上、用戶數量上都十分可觀。
Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,Guido開始寫可以解釋Python語言語法的解釋器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
目前Python主要應用領域:
1. WEB開發——最火的Python web框架Django, 支持異步高併發的Tornado框架,短小精悍的flask,bottle, Django官方的標語把Django定義爲the framework for perfectionist with deadlines(大意是一個爲徹底主義者開發的高效率web框架)
2. 網絡編程——支持高併發的Twisted網絡框架, py3引入的asyncio使異步編程變的很是簡單
3. 爬蟲——爬蟲領域,Python幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
4. 雲計算——目前最火最知名的雲計算框架就是OpenStack,Python如今的火,很大一部分就是由於雲計算
5. 人工智能——誰會成爲AI 和大數據時代的第一開發語言?這本已經是一個不須要爭論的問題。若是說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那麼三年以後,趨勢已經很是明確了,特別是前兩天 Facebook 開源了 PyTorch 以後,Python 做爲 AI 時代頭牌語言的位置基本確立,將來的懸念僅僅是誰能坐穩第二把交椅。
6. 自動化運維——問問中國的每一個運維人員,運維人員必須會的語言是什麼?10我的相信會給你一個相同的答案,它的名字叫Python
7. 金融分析——金融行業公司的好多分析程序、高頻交易軟件就是用的Python,到目前,Python是金融分析、量化交易領域裏用的最多的語言
8. 科學運算—— 你知道麼,97年開始,NASA就在大量使用Python在進行各類複雜的科學運算,隨着NumPy, SciPy, Matplotlib, Enthought librarys等衆多程序庫的開發,使的Python愈來愈適合於作科學計算、繪製高質量的2D和3D圖像。和科學計算領域最流行的商業軟件Matlab相比,Python是一門通用的程序設計語言,比Matlab所採用的腳本語言的應用範圍更普遍
9. 遊戲開發——在網絡遊戲開發中Python也有不少應用。相比Lua or C++,Python 比 Lua 有更高階的抽象能力,能夠用更少的代碼描述遊戲業務邏輯,與 Lua 相比,Python 更適合做爲一種 Host 語言,即程序的入口點是在 Python 那一端會比較好,而後用 C/C++ 在很是必要的時候寫一些擴展。Python 很是適合編寫 1 萬行以上的項目,並且可以很好地把網遊項目的規模控制在 10 萬行代碼之內。另外據我所知,知名的遊戲<文明> 就是用Python寫的。
Python在一些公司的應用:
1. 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發;
2. CIA: 美國中情局網站就是用Python開發的;
3. NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算;
4. YouTube:世界上最大的視頻網站YouTube就是用Python開發的;
5. Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載;
6. Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發;
7. Facebook:大量的基礎庫均經過Python實現的;
8. Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的;
9. 豆瓣: 公司幾乎全部的業務均是經過Python開發的;
10. 知乎: 國內最大的問答社區,經過Python開發(國外Quora);
11. 春雨醫生:國內知名的在線醫療網站是用Python開發的;
12. 除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。
1.易於學習:Python有相對較少的關鍵字,結構簡單,和一個明肯定義的語法,學習起來更加簡單。
2.易於閱讀:Python代碼定義的更清晰。
3.易於維護:Python的成功在於它的源代碼是至關容易維護的。
4.一個普遍的標準庫:Python的最大的優點之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好。
5.互動模式:互動模式的支持,您能夠從終端輸入執行代碼並得到結果的語言,互動的測試和調試代碼片段。
6.可移植:基於其開放源代碼的特性,Python已經被移植(也就是使其工做)到許多平臺。
7.可擴展:若是你須要一段運行很快的關鍵代碼,或者是想要編寫一些不肯開放的算法,你可使用C或C++完成那部分程序,而後從你的Python程序中調用。
8.數據庫:Python提供全部主要的商業數據庫的接口。
9.GUI編程:Python支持GUI能夠建立和移植到許多系統調用。
10.可嵌入: 你能夠將Python嵌入到C/C++程序,讓你的程序的用戶得到"腳本化"的能力。
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解釋器將程序的讀入內存 編譯成字節碼 à字節碼轉換爲機器碼 à底層執行。
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
Python 3.6 - 2016/12/23
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開發人羣。
Python是一門解釋型語言,代碼想運行,必須經過解釋器執行,Python的解釋器自己也能夠看做是個程序(翻譯官是哪國人不重要),這個程序是什麼語言開發的呢? 答案是好幾種語言? what? 由於Python有好幾種解釋器,分別基於不一樣語言開發,每一個解釋器特色不一樣,但都能正常運行咱們的Python代碼,下面分別來看下:
v CPython:
CPython是使用最廣且被的Python解釋器。本教程以CPython爲準。當咱們從Python官方網站下載並安裝好Python 2.7後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python就是啓動CPython解釋器。
v IPython:
IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少國產瀏覽器雖然外觀不一樣,但內核其實都是調用了IE。
CPython用>>>做爲提示符,而IPython用In [序號]:做爲提示符。
v PyPy:
PyPy是另外一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),因此能夠顯著提升Python代碼的執行速度。絕大部分Python代碼均可以在PyPy下運行,可是PyPy和CPython有一些是不一樣的,這就致使相同的Python代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要放到PyPy下執行,就須要瞭解PyPy和CPython的不一樣點。
v Jython:
Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。
v IronPython:
IronPython和Jython相似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼。
Python2 or Python3
目前雖然業內不少企業還在大量使用Python2.6 或 2.7,由於舊項目幾十萬甚至上百萬行的代碼想快速升級到3.0不是件容易的事,可是你們在開發新項目時幾乎都會使用3.x。另外Python3 確實想比2.x作了不少的改進。
Python目前已支持全部主流操做系統,在Linux,Unix,Mac系統上自帶Python環境,在Windows系統上須要安裝一下。
官網 https://www.python.org/downloads/windows/
雙擊下載好的exe文件:
注意勾選:Add Python 3.5 to PATH
1)Install Now:默認安裝;
2)Customize installation自定義安裝。
測試安裝是否成功:
windows --> 運行 --> 輸入cmd ,而後回車,彈出cmd程序,輸入python,若是能進入交互環境 ,表明安裝成功。
運行第一個Python程序:
1)進入解釋器的交互式模式:調試方便,沒法永久保存代碼
2)腳本文件的方式(使用nodpad++):永久保存代碼(保存在D盤中 hello.py)
強調:python解釋器執行程序是解釋執行,即打開文件讀內容,所以文件的後綴名沒有硬性限制,但一般定義爲.py結尾
第一次打開pycharm會顯示這個