溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

編程語言分類

發(fā)布時(shí)間:2020-04-02 11:38:11 來源:網(wǎng)絡(luò) 閱讀:283 作者:linhaifeng4573 欄目:編程語言

[TOC]

目錄:

  • 一 引子

  • 二 編程語言分類:

    • 2.1 機(jī)器語言
    • 2.2 匯編語言
    • 2.3 高級(jí)語言
    • 2.3.1 編譯型 (如C語言)
    • 2.3.2 解釋型 (如Python)
    • 2.4 總結(jié)

#一 引子

? 基于上一章所學(xué),有了計(jì)算機(jī)硬件,再在硬件之上安裝好操作系統(tǒng),我們就有了一個(gè)應(yīng)用程序的運(yùn)行平臺(tái),我們接下來的任務(wù)就是學(xué)習(xí)如何使用某款編程語言來開發(fā)應(yīng)用程序。

? 本章的主題是先帶大家了解下編程語言,然后重點(diǎn)介紹python這門編程語言

插圖:惡搞圖01
編程語言分類

二 編程語言分類:

2.1 機(jī)器語言

編程語言分類

機(jī)器語言是站在計(jì)算機(jī)(奴隸)的角度,說計(jì)算機(jī)能聽懂/理解的語言,而計(jì)算機(jī)能直接理解的就是二進(jìn)制指令,所以機(jī)器語言就是直接用二進(jìn)制編程,這意味著機(jī)器語言是直接操作硬件的,因此機(jī)器語言屬于低級(jí)語言,此處的低級(jí)指的是底層、貼近計(jì)算機(jī)硬件(貼近代指需要詳細(xì)了解計(jì)算機(jī)硬件細(xì)節(jié)、直接控制硬件),詳解如下

#機(jī)器語言
    用二進(jìn)制代碼0和1描述的指令稱為機(jī)器指令,由于計(jì)算機(jī)內(nèi)部是基于二進(jìn)制指令工作的,所以機(jī)器語言是直接控制計(jì)算機(jī)硬件。

    用機(jī)器語言編寫程序,編程人員要首先熟記所用計(jì)算機(jī)的全部指令代碼以及代碼的含義,然后在編寫程序時(shí),程序員得自己處理每條指令和每一數(shù)據(jù)的存儲(chǔ)分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態(tài)。這是一件十分繁瑣的工作。編寫程序花費(fèi)的時(shí)間往往是實(shí)際運(yùn)行時(shí)間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,不便閱讀和書寫,還容易出錯(cuò),且依賴于具體的計(jì)算機(jī)硬件型號(hào),局限性很大。除了計(jì)算機(jī)生產(chǎn)廠家的專業(yè)人員外,絕大多數(shù)的程序員已經(jīng)不再去學(xué)習(xí)機(jī)器語言了。

    機(jī)器語言是被微處理器理解和使用的,存在有多至100000種機(jī)器語言的指令,下述是一些簡單示例

    #指令部份的示例
    0000 代表 加載(LOAD)
    0001 代表 存儲(chǔ)(STORE)
    ...

    #暫存器部份的示例
    0000 代表暫存器 A
    0001 代表暫存器 B
    ...

    #存儲(chǔ)器部份的示例
    000000000000 代表地址為 0 的存儲(chǔ)器
    000000000001 代表地址為 1 的存儲(chǔ)器
    000000010000 代表地址為 16 的存儲(chǔ)器
    100000000000 代表地址為 2^11 的存儲(chǔ)器

    #集成示例
    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é)機(jī)器語言優(yōu)缺點(diǎn):

#優(yōu)點(diǎn):
編寫的程序可以被計(jì)算機(jī)無障礙理解、直接運(yùn)行,執(zhí)行效率高 。

#缺點(diǎn):
1、復(fù)雜,開發(fā)效率低
2、貼近\依賴具體的硬件,跨平臺(tái)性差

插圖:惡搞圖02
編程語言分類

2.2 匯編語言

匯編語言僅僅是用一個(gè)英文標(biāo)簽代表一組二進(jìn)制指令,毫無疑問,比起機(jī)器語言,匯編語言是一種進(jìn)步,但匯編語言的本質(zhì)仍然是直接操作硬件,因此匯編語言仍是比較低級(jí)/底層的語言、貼近計(jì)算機(jī)硬件

插圖:惡搞圖03

編程語言分類

#匯編語言
匯編語言的實(shí)質(zhì)和機(jī)器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標(biāo)識(shí)符,更容易識(shí)別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序的每一句指令只能對應(yīng)實(shí)際操作過程中的一個(gè)很細(xì)微的動(dòng)作。例如移動(dòng)、自增,因此匯編源程序一般比較冗長、復(fù)雜、容易出錯(cuò),而且使用匯編語言編程需要有更多的計(jì)算機(jī)專業(yè)知識(shí),但匯編語言的優(yōu)點(diǎn)也是顯而易見的,用匯編語言所能完成的操作不是一般高級(jí)語言所能夠?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:                  ; 在屏幕上顯示一個(gè)字符串
        mov edx, len     ; 參數(shù)三:字符串長度
        mov ecx, msg     ; 參數(shù)二:要顯示的字符串
        mov ebx, 1       ; 參數(shù)一:文件描述符(stdout) 
        mov eax, 4       ; 系統(tǒng)調(diào)用號(hào)(sys_write) 
        int 0x80         ; 調(diào)用內(nèi)核功能
                         ; 退出程序
        mov ebx, 0       ; 參數(shù)一:退出代碼
        mov eax, 1       ; 系統(tǒng)調(diào)用號(hào)(sys_exit) 
        int 0x80         ; 調(diào)用內(nèi)核功能

總結(jié)匯編語言優(yōu)缺點(diǎn):

#1、優(yōu)點(diǎn):
相對于機(jī)器語言,使用英文標(biāo)簽編寫程序相對簡單,執(zhí)行效率稍低,開發(fā)效率稍高。 

#2、缺點(diǎn):
1、仍然是直接操作硬件,比起機(jī)器語言來說,復(fù)雜度稍低,但依舊居高不下,所以開發(fā)效率依舊較低
2、依賴具體的硬件,跨平臺(tái)性差

2.3 高級(jí)語言

高級(jí)語言是站在人(奴隸主)的角度,說人話,即用人類的字符去編寫程序,而人類的字符是在向操作系統(tǒng)發(fā)送指令,而非直接操作硬件,所以高級(jí)語言是與操作系統(tǒng)打交道的,此處的高級(jí)指的是高層、開發(fā)者無需考慮硬件細(xì)節(jié),因而開發(fā)效率可以得到極大的提升,但正因?yàn)楦呒?jí)語言離硬件較遠(yuǎn),更貼近人類語言,人類可以理解,而計(jì)算機(jī)則需要通過翻譯才能理解,所以執(zhí)行效率會(huì)低于低級(jí)語言。

按照翻譯的方式的不同,高級(jí)語言又分為兩種:

2.3.1 編譯型(如C語言):

編程語言分類

類似谷歌翻譯,是把程序所有代碼編譯成計(jì)算機(jī)能識(shí)別的二進(jìn)制指令,之后操作系統(tǒng)會(huì)拿著編譯好的二進(jìn)制指令直接操作硬件,優(yōu)缺點(diǎn)如下

#1、優(yōu)點(diǎn):
編譯一次之后就可以拿著結(jié)果重復(fù)運(yùn)行,而無需再次翻譯,執(zhí)行效率高于解釋型

#2、缺點(diǎn):
編譯型代碼是針對某一個(gè)平臺(tái)翻譯的,當(dāng)前平臺(tái)翻譯的結(jié)果無法拿到另外一個(gè)平臺(tái)使用,即無法跨平臺(tái)

2.3.2 解釋型(如python):

編程語言分類

類似同聲翻譯,需要有一個(gè)解釋器,解釋器會(huì)讀取程序代碼,一邊翻譯一邊執(zhí)行,優(yōu)缺點(diǎn)如下

#1、優(yōu)點(diǎn):
代碼運(yùn)行是依賴于解釋器,不同平臺(tái)有對應(yīng)版本的解釋器,所以代碼是可以跨平臺(tái)運(yùn)行

#2、缺點(diǎn):
每次執(zhí)行都需要翻譯,執(zhí)行效率低于編譯型

2.4 總結(jié)

? 綜上選擇不同編程語言來開發(fā)應(yīng)用程序?qū)Ρ?/p>

#1、執(zhí)行效率:機(jī)器語言>匯編語言>高級(jí)語言(編譯型>解釋型)

#2、開發(fā)效率:機(jī)器語言<匯編語言<高級(jí)語言(編譯型<解釋型)

#3、跨平臺(tái)性:解釋型具有極強(qiáng)的跨平臺(tái)型

? 由于我們開發(fā)是應(yīng)用程序,而應(yīng)用程序必須運(yùn)行于某一個(gè)平臺(tái)之上,應(yīng)用程序的快慢受限于平臺(tái)(就好比F1賽車與寶馬車同時(shí)跑在北京五環(huán)高速,都受限于道路環(huán)境,車速是差不多的)的快慢,并不是單從語言層面就可以提升整體執(zhí)行效率的,于是開發(fā)效率、跨平臺(tái)性才是我們需要優(yōu)先考慮的問題,這就是我們首選python的原因

插圖:惡搞圖04

編程語言分類

三 python介紹

? 談及python,涉及兩層意思,一層代表的是python這門語言的語法風(fēng)格,另外一層代表的則是專門用來解釋該語法風(fēng)格的應(yīng)用程序:python解釋器。

? python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。Python這個(gè)名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus,他希望這個(gè)新的叫做Python的語言,能符合他的理想:創(chuàng)造一種C和shell之間,語法能夠像shell一樣簡潔,易學(xué)易用、可拓展性強(qiáng),同時(shí)兼顧C(jī)的強(qiáng)大功能。于是Guido在1989年的圣誕節(jié)期間,開始編寫能夠解釋Python語言語法的解釋器。

? Python崇尚優(yōu)美、清晰、簡單,是一個(gè)優(yōu)秀并廣泛使用的語言。最新的TIOBE排行榜https://www.tiobe.com/tiobe-index/,Python已飆升至世界第三。

? Python可以應(yīng)用于眾多領(lǐng)域,如:人工智能、數(shù)據(jù)分析、爬蟲、金融量化、云計(jì)算、WEB開發(fā)、自動(dòng)化運(yùn)維/測試、游戲開發(fā)、網(wǎng)絡(luò)服務(wù)、圖像處理等眾多領(lǐng)域。目前業(yè)內(nèi)幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團(tuán)等。

插圖:惡搞圖05

編程語言分類

3.1 Python解釋器的發(fā)展史

編程語言分類

1989年,Guido開始寫Python語言的編譯器。
1991年,第一個(gè)Python編譯器誕生。它是用C語言實(shí)現(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)存回收機(jī)制,構(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 (細(xì)心的讀者會(huì)發(fā)現(xiàn),08年時(shí)就推出了3.0,2010年反而又推出了2.7?是因?yàn)?.0不向下兼容2.0,而很多公司已經(jīng)基于2.0版本開發(fā)出了大量程序,公司已然投入了大量的人財(cái)物力,這就導(dǎo)致大家都拒絕升級(jí)3.0,無奈官方只能推出2.7過渡版本,之后我們都應(yīng)該采用3.0解釋器開發(fā)程序,但為了方便讀者維護(hù)2.0版本的軟件,我們在遇到兩種版本的差異時(shí)會(huì)專門指出來)

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版

3.2 Python解釋器有哪些種類?

官方的Python解釋器本質(zhì)就是基于C語言開發(fā)的一個(gè)軟件,該軟件的功能就是讀取以.py結(jié)尾的文件內(nèi)容,然后按照Guido定義好的語法和規(guī)則去翻譯并執(zhí)行相應(yīng)的代碼。這種用C實(shí)現(xiàn)的解釋器稱為CPython,它是python領(lǐng)域性能最好,應(yīng)用最廣泛的一款解釋器,我們在后面提到的解釋器指的都是Cpython解釋器。但其實(shí)解釋器作為一款應(yīng)用軟件,完全可以采用其他語言來開發(fā),只要能解釋python這門語言的語法即可。Python解釋器的一些種類如下,簡單了解即可

# Jython
JPython解釋器是用JAVA編寫的python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼并執(zhí)行,它不但使基于java的項(xiàng)目之上嵌入python腳本成為可能,同時(shí)也可以將java程序引入到python程序之中。

# IPython
IPython是基于CPython之上的一個(gè)交互式解釋器,也就是說,IPython只是在交互方式上有所增強(qiáng),但是執(zhí)行Python代碼的功能和CPython是完全一樣的。這就好比很多國產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實(shí)都是調(diào)用了IE。
CPython用>>>作為提示符,而IPython用In [序號(hào)]:作為提示符。

# PyPy
PyPy是Python開發(fā)者為了更好地Hack Python而用Python語言實(shí)現(xiàn)的Python解釋器。PyPy提供了JIT編譯器和沙盒功能,對Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋),因此運(yùn)行速度比CPython還要快。

# IronPython
IronPython和Jython類似,只不過IronPython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。

插圖:惡搞圖06

四 安裝Cpython解釋器

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 --> 運(yùn)行 --> 輸入cmd ,然后回車,彈出cmd程序,輸入python,如果能進(jìn)入交互環(huán)境 ,代表安裝成功。

插圖1:cmd檢測安裝1

插圖1:cmd檢測安裝2

五 第一個(gè)python程序

##5.1 運(yùn)行python程序有兩種方式

方式一: 交互式模式

插圖:交互式環(huán)境測試

配圖/交互式環(huán)境測試.jpg)

方式二:腳本文件

# 1、打開一個(gè)文本編輯工具,寫入下述代碼,并保存文件,此處文件的路徑為D:\test.py。強(qiáng)調(diào):python解釋器執(zhí)行程序是解釋執(zhí)行,解釋的根本就是打開文件讀內(nèi)容,因此文件的后綴名沒有硬性限制,但通常定義為.py結(jié)尾
print('hello world')

# 2、打開cmd,運(yùn)行命令,如下圖 

插圖:腳本文件測試

總結(jié):

#1、交互式模式下可以即時(shí)得到代碼執(zhí)行結(jié)果,調(diào)試程序十分方便
#2、若想將代碼永久保存下來,則必須將代碼寫入文件中
#3、我們以后主要就是在代碼寫入文件中,偶爾需要打開交互式模式調(diào)試某段代碼、驗(yàn)證結(jié)果

5.2 注釋

在正式學(xué)習(xí)python語法前,我們必須事先介紹一個(gè)非常重要的語法:注釋

1、什么是注釋

注釋就是就是對代碼的解釋說明,注釋的內(nèi)容不會(huì)被當(dāng)作代碼運(yùn)行

2、為什么要注釋

增強(qiáng)代碼的可讀性

3、怎么用注釋?

代碼注釋分單行和多行注釋

1、單行注釋用#號(hào),可以跟在代碼的正上方或者正后方

2、多行注釋可以用三對雙引號(hào)""" """

插圖:注釋的使用

4、代碼注釋的原則:

1、不用全部加注釋,只需要為自己覺得重要或不好理解的部分加注釋即可

2、注釋可以用中文或英文,但不要用拼音

六 IDE工具pycharm的使用

6.1、什么是IDE?為何要有IDE

在編寫第一個(gè)python程序時(shí),存在以下問題,嚴(yán)重影響開發(fā)效率

問題一:我們了解到一個(gè)python程序從開發(fā)到運(yùn)行需要操作至少兩個(gè)軟件

1、打開一個(gè)軟件:文本編輯器,創(chuàng)建文本來編寫程序
2、打開cmd,然后輸入命令執(zhí)行pyton程序

問題二:在開發(fā)過程中,并沒代碼提示以及糾錯(cuò)功能

綜上,如果能有一款工具能夠集成n個(gè)軟件的功能,同時(shí)又代碼提示以及糾錯(cuò)等功能,那么將會(huì)極大地提升程序員的開發(fā)效率,這就是IDE的由來,IDE全稱Integrated Development Environment,即集成開發(fā)環(huán)境,最好的開發(fā)Python程序的IDE就是PyCharm。

6.2、pychram安裝

# 下載地址: https://www.jetbrains.com/pycharm/download  選擇Professional專業(yè)版

安裝完成后注冊,然后啟動(dòng),會(huì)讓你先創(chuàng)建一個(gè)項(xiàng)目,其實(shí)就是一個(gè)文件夾,我們以后的代碼都存在這里面。

插圖:Pycharm創(chuàng)建項(xiàng)目

6.3、Pycharm創(chuàng)建文件夾

創(chuàng)建文件夾是管理文件的良好方式

配圖/Pycharm創(chuàng)建文件夾.jpg)

6.4、如何創(chuàng)建文件并編寫程序執(zhí)行

創(chuàng)建py文件test.py

在test.py中寫代碼,輸入關(guān)鍵字的開頭可以用tab鍵補(bǔ)全后續(xù),并且會(huì)有代碼的錯(cuò)誤提示

插圖:Pycharm執(zhí)行文件

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI