[TOC]
成都創(chuàng)新互聯(lián)是一家專業(yè)提供臨高企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、網(wǎng)站建設、H5場景定制、小程序制作等業(yè)務。10年已為臨高眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡公司優(yōu)惠進行中。一 引子
二 編程語言分類:
#一 引子
? 基于上一章所學,有了計算機硬件,再在硬件之上安裝好操作系統(tǒng),我們就有了一個應用程序的運行平臺,我們接下來的任務就是學習如何使用某款編程語言來開發(fā)應用程序。
? 本章的主題是先帶大家了解下編程語言,然后重點介紹python這門編程語言
插圖:惡搞圖01
機器語言是站在計算機(奴隸)的角度,說計算機能聽懂/理解的語言,而計算機能直接理解的就是二進制指令,所以機器語言就是直接用二進制編程,這意味著機器語言是直接操作硬件的,因此機器語言屬于低級語言,此處的低級指的是底層、貼近計算機硬件(貼近代指需要詳細了解計算機硬件細節(jié)、直接控制硬件),詳解如下
#機器語言
用二進制代碼0和1描述的指令稱為機器指令,由于計算機內(nèi)部是基于二進制指令工作的,所以機器語言是直接控制計算機硬件。
用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令代碼以及代碼的含義,然后在編寫程序時,程序員得自己處理每條指令和每一數(shù)據(jù)的存儲分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態(tài)。這是一件十分繁瑣的工作。編寫程序花費的時間往往是實際運行時間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,不便閱讀和書寫,還容易出錯,且依賴于具體的計算機硬件型號,局限性很大。除了計算機生產(chǎn)廠家的專業(yè)人員外,絕大多數(shù)的程序員已經(jīng)不再去學習機器語言了。
機器語言是被微處理器理解和使用的,存在有多至100000種機器語言的指令,下述是一些簡單示例
#指令部份的示例
0000 代表 加載(LOAD)
0001 代表 存儲(STORE)
...
#暫存器部份的示例
0000 代表暫存器 A
0001 代表暫存器 B
...
#存儲器部份的示例
000000000000 代表地址為 0 的存儲器
000000000001 代表地址為 1 的存儲器
000000010000 代表地址為 16 的存儲器
100000000000 代表地址為 2^11 的存儲器
#集成示例
0000,0000,000000010000 代表 LOAD A, 16
0000,0001,000000000001 代表 LOAD B, 1
0001,0001,000000010000 代表 STORE B, 16
0001,0001,000000000001 代表 STORE B, 1[1]
總結(jié)機器語言優(yōu)缺點:
#優(yōu)點:
編寫的程序可以被計算機無障礙理解、直接運行,執(zhí)行效率高 。
#缺點:
1、復雜,開發(fā)效率低
2、貼近\依賴具體的硬件,跨平臺性差
插圖:惡搞圖02
匯編語言僅僅是用一個英文標簽代表一組二進制指令,毫無疑問,比起機器語言,匯編語言是一種進步,但匯編語言的本質(zhì)仍然是直接操作硬件,因此匯編語言仍是比較低級/底層的語言、貼近計算機硬件
插圖:惡搞圖03
#匯編語言
匯編語言的實質(zhì)和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作。例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業(yè)知識,但匯編語言的優(yōu)點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能夠?qū)崿F(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比較小,而且執(zhí)行速度很快。
匯編的hello world,打印一句hello world, 需要寫十多行,如下
; hello.asm
section .data ; 數(shù)據(jù)段聲明
msg db "Hello, world!", 0xA ; 要輸出的字符串
len equ $ - msg ; 字串長度
section .text ; 代碼段聲明
global _start ; 指定入口函數(shù)
_start: ; 在屏幕上顯示一個字符串
mov edx, len ; 參數(shù)三:字符串長度
mov ecx, msg ; 參數(shù)二:要顯示的字符串
mov ebx, 1 ; 參數(shù)一:文件描述符(stdout)
mov eax, 4 ; 系統(tǒng)調(diào)用號(sys_write)
int 0x80 ; 調(diào)用內(nèi)核功能
; 退出程序
mov ebx, 0 ; 參數(shù)一:退出代碼
mov eax, 1 ; 系統(tǒng)調(diào)用號(sys_exit)
int 0x80 ; 調(diào)用內(nèi)核功能
總結(jié)匯編語言優(yōu)缺點:
#1、優(yōu)點:
相對于機器語言,使用英文標簽編寫程序相對簡單,執(zhí)行效率稍低,開發(fā)效率稍高。
#2、缺點:
1、仍然是直接操作硬件,比起機器語言來說,復雜度稍低,但依舊居高不下,所以開發(fā)效率依舊較低
2、依賴具體的硬件,跨平臺性差
高級語言是站在人(奴隸主)的角度,說人話,即用人類的字符去編寫程序,而人類的字符是在向操作系統(tǒng)發(fā)送指令,而非直接操作硬件,所以高級語言是與操作系統(tǒng)打交道的,此處的高級指的是高層、開發(fā)者無需考慮硬件細節(jié),因而開發(fā)效率可以得到極大的提升,但正因為高級語言離硬件較遠,更貼近人類語言,人類可以理解,而計算機則需要通過翻譯才能理解,所以執(zhí)行效率會低于低級語言。
按照翻譯的方式的不同,高級語言又分為兩種:
類似谷歌翻譯,是把程序所有代碼編譯成計算機能識別的二進制指令,之后操作系統(tǒng)會拿著編譯好的二進制指令直接操作硬件,優(yōu)缺點如下
#1、優(yōu)點:
編譯一次之后就可以拿著結(jié)果重復運行,而無需再次翻譯,執(zhí)行效率高于解釋型
#2、缺點:
編譯型代碼是針對某一個平臺翻譯的,當前平臺翻譯的結(jié)果無法拿到另外一個平臺使用,即無法跨平臺
類似同聲翻譯,需要有一個解釋器,解釋器會讀取程序代碼,一邊翻譯一邊執(zhí)行,優(yōu)缺點如下
#1、優(yōu)點:
代碼運行是依賴于解釋器,不同平臺有對應版本的解釋器,所以代碼是可以跨平臺運行
#2、缺點:
每次執(zhí)行都需要翻譯,執(zhí)行效率低于編譯型
? 綜上選擇不同編程語言來開發(fā)應用程序?qū)Ρ?/p>
#1、執(zhí)行效率:機器語言>匯編語言>高級語言(編譯型>解釋型)
#2、開發(fā)效率:機器語言<匯編語言<高級語言(編譯型<解釋型)
#3、跨平臺性:解釋型具有極強的跨平臺型
? 由于我們開發(fā)是應用程序,而應用程序必須運行于某一個平臺之上,應用程序的快慢受限于平臺(就好比F1賽車與寶馬車同時跑在北京五環(huán)高速,都受限于道路環(huán)境,車速是差不多的)的快慢,并不是單從語言層面就可以提升整體執(zhí)行效率的,于是開發(fā)效率、跨平臺性才是我們需要優(yōu)先考慮的問題,這就是我們選python的原因
插圖:惡搞圖04
? 談及python,涉及兩層意思,一層代表的是python這門語言的語法風格,另外一層代表的則是專門用來解釋該語法風格的應用程序:python解釋器。
? python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus,他希望這個新的叫做Python的語言,能符合他的理想:創(chuàng)造一種C和shell之間,語法能夠像shell一樣簡潔,易學易用、可拓展性強,同時兼顧C的強大功能。于是Guido在1989年的圣誕節(jié)期間,開始編寫能夠解釋Python語言語法的解釋器。
? Python崇尚優(yōu)美、清晰、簡單,是一個優(yōu)秀并廣泛使用的語言。最新的TIOBE排行榜https://www.tiobe.com/tiobe-index/,Python已飆升至世界第三。
? Python可以應用于眾多領(lǐng)域,如:人工智能、數(shù)據(jù)分析、爬蟲、金融量化、云計算、WEB開發(fā)、自動化運維/測試、游戲開發(fā)、網(wǎng)絡服務、圖像處理等眾多領(lǐng)域。目前業(yè)內(nèi)幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
插圖:惡搞圖05
1989年,Guido開始寫Python語言的編譯器。
1991年,第一個Python編譯器誕生。它是用C語言實現(xiàn)的,并能夠調(diào)用C語言的庫文件。從一出生,Python已經(jīng)具有了:類,函數(shù),異常處理,包含表和詞典在內(nèi)的核心數(shù)據(jù)類型,以及模塊為基礎(chǔ)的拓展系統(tǒng)。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加入了內(nèi)存回收機制,構(gòu)成了現(xiàn)在Python語言框架的基礎(chǔ)
Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
Python 3.0 - December 3, 2008 (細心的讀者會發(fā)現(xiàn),08年時就推出了3.0,2010年反而又推出了2.7?是因為3.0不向下兼容2.0,而很多公司已經(jīng)基于2.0版本開發(fā)出了大量程序,公司已然投入了大量的人財物力,這就導致大家都拒絕升級3.0,無奈官方只能推出2.7過渡版本,之后我們都應該采用3.0解釋器開發(fā)程序,但為了方便讀者維護2.0版本的軟件,我們在遇到兩種版本的差異時會專門指出來)
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
Python 3.6 - 2016-12-23 發(fā)布python3.6.0版
官方的Python解釋器本質(zhì)就是基于C語言開發(fā)的一個軟件,該軟件的功能就是讀取以.py結(jié)尾的文件內(nèi)容,然后按照Guido定義好的語法和規(guī)則去翻譯并執(zhí)行相應的代碼。這種用C實現(xiàn)的解釋器稱為CPython,它是python領(lǐng)域性能最好,應用最廣泛的一款解釋器,我們在后面提到的解釋器指的都是Cpython解釋器。但其實解釋器作為一款應用軟件,完全可以采用其他語言來開發(fā),只要能解釋python這門語言的語法即可。Python解釋器的一些種類如下,簡單了解即可
# Jython
JPython解釋器是用JAVA編寫的python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼并執(zhí)行,它不但使基于java的項目之上嵌入python腳本成為可能,同時也可以將java程序引入到python程序之中。
# IPython
IPython是基于CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執(zhí)行Python代碼的功能和CPython是完全一樣的。這就好比很多國產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實都是調(diào)用了IE。
CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。
# PyPy
PyPy是Python開發(fā)者為了更好地Hack Python而用Python語言實現(xiàn)的Python解釋器。PyPy提供了JIT編譯器和沙盒功能,對Python代碼進行動態(tài)編譯(注意不是解釋),因此運行速度比CPython還要快。
# IronPython
IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。
插圖:惡搞圖06
Python解釋器目前已支持所有主流操作系統(tǒng),在Linux,Unix,Mac系統(tǒng)上自帶Python解釋器,在Windows系統(tǒng)上需要安裝一下,具體步驟如下。
##4.1、下載python解釋器
打開官網(wǎng) https://www.python.org,按提示下載即可
插圖:下載解釋器1
插圖:下載解釋器2
插圖:下載解釋器3
\
##4.2、安裝python解釋器
插圖:安裝解釋器1
插圖:安裝解釋器2
插圖:安裝解釋器3
、
##4.3、測試安裝是否成功
windows --> 運行 --> 輸入cmd ,然后回車,彈出cmd程序,輸入python,如果能進入交互環(huán)境 ,代表安裝成功。
插圖1:cmd檢測安裝1
插圖1:cmd檢測安裝2
##5.1 運行python程序有兩種方式
方式一: 交互式模式
插圖:交互式環(huán)境測試
配圖/交互式環(huán)境測試.jpg)
方式二:腳本文件
# 1、打開一個文本編輯工具,寫入下述代碼,并保存文件,此處文件的路徑為D:\test.py。強調(diào):python解釋器執(zhí)行程序是解釋執(zhí)行,解釋的根本就是打開文件讀內(nèi)容,因此文件的后綴名沒有硬性限制,但通常定義為.py結(jié)尾
print('hello world')
# 2、打開cmd,運行命令,如下圖
插圖:腳本文件測試
總結(jié):
#1、交互式模式下可以即時得到代碼執(zhí)行結(jié)果,調(diào)試程序十分方便
#2、若想將代碼永久保存下來,則必須將代碼寫入文件中
#3、我們以后主要就是在代碼寫入文件中,偶爾需要打開交互式模式調(diào)試某段代碼、驗證結(jié)果
在正式學習python語法前,我們必須事先介紹一個非常重要的語法:注釋
1、什么是注釋
注釋就是就是對代碼的解釋說明,注釋的內(nèi)容不會被當作代碼運行
2、為什么要注釋
增強代碼的可讀性
3、怎么用注釋?
代碼注釋分單行和多行注釋
1、單行注釋用#號,可以跟在代碼的正上方或者正后方
2、多行注釋可以用三對雙引號""" """
插圖:注釋的使用
、
4、代碼注釋的原則:
1、不用全部加注釋,只需要為自己覺得重要或不好理解的部分加注釋即可
2、注釋可以用中文或英文,但不要用拼音
在編寫第一個python程序時,存在以下問題,嚴重影響開發(fā)效率
問題一:我們了解到一個python程序從開發(fā)到運行需要操作至少兩個軟件
1、打開一個軟件:文本編輯器,創(chuàng)建文本來編寫程序
2、打開cmd,然后輸入命令執(zhí)行pyton程序
問題二:在開發(fā)過程中,并沒代碼提示以及糾錯功能
綜上,如果能有一款工具能夠集成n個軟件的功能,同時又代碼提示以及糾錯等功能,那么將會極大地提升程序員的開發(fā)效率,這就是IDE的由來,IDE全稱Integrated Development Environment,即集成開發(fā)環(huán)境,最好的開發(fā)Python程序的IDE就是PyCharm。
# 下載地址: https://www.jetbrains.com/pycharm/download 選擇Professional專業(yè)版
安裝完成后注冊,然后啟動,會讓你先創(chuàng)建一個項目,其實就是一個文件夾,我們以后的代碼都存在這里面。
插圖:Pycharm創(chuàng)建項目
創(chuàng)建文件夾是管理文件的良好方式
配圖/Pycharm創(chuàng)建文件夾.jpg)
創(chuàng)建py文件test.py
在test.py中寫代碼,輸入關(guān)鍵字的開頭可以用tab鍵補全后續(xù),并且會有代碼的錯誤提示
插圖:Pycharm執(zhí)行文件
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。