編程語(yǔ)言的種類(lèi)與介紹
編程語(yǔ)言總體分以為機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言,如下
10年積累的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有銀川免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
機(jī)器語(yǔ)言
由于計(jì)算機(jī)內(nèi)部只能接受二進(jìn)制代碼,因此,用二進(jìn)制代碼0和1描述的指令稱(chēng)為機(jī)器指令,全部機(jī)器指令的集合構(gòu)成計(jì)算機(jī)的機(jī)器語(yǔ)言,用機(jī)器語(yǔ)言編程的程序稱(chēng)為目標(biāo)程序。只有目標(biāo)程序才能被計(jì)算機(jī)直接識(shí)別和執(zhí)行。但是機(jī)器語(yǔ)言編寫(xiě)的程序無(wú)明顯特征,難以記憶,不便閱讀和書(shū)寫(xiě),且依賴(lài)于具體機(jī)種,局限性很大,機(jī)器語(yǔ)言屬于低級(jí)語(yǔ)言。
用機(jī)器語(yǔ)言編寫(xiě)程序,編程人員要首先熟記所用計(jì)算機(jī)的全部指令代碼和代碼的涵義。手編程序時(shí),程序員得自己處理每條指令和每一數(shù)據(jù)的存儲(chǔ)分配和輸入輸出,還得記住編程過(guò)程中每步所使用的工作單元處在何種狀態(tài)。這是一件十分繁瑣的工作。編寫(xiě)程序花費(fèi)的時(shí)間往往是實(shí)際運(yùn)行時(shí)間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯(cuò)。除了計(jì)算機(jī)生產(chǎn)廠家的專(zhuān)業(yè)人員外,絕大多數(shù)的程序員已經(jīng)不再去學(xué)習(xí)機(jī)器語(yǔ)言了。
機(jī)器語(yǔ)言是微處理器理解和使用的,用于控制它的操作二進(jìn)制代碼。
盡管機(jī)器語(yǔ)言好像是很復(fù)雜的,然而它是有規(guī)律的。
存在著多至100000種機(jī)器語(yǔ)言的指令。這意味著不能把這些種類(lèi)全部列出來(lái)。
以下是一些示例:
指令部份的示例
0000 代表 加載(LOAD)
0001 代表 存儲(chǔ)(STORE)
...
匯編語(yǔ)言
匯編語(yǔ)言的實(shí)質(zhì)和機(jī)器語(yǔ)言是相同的,都是直接對(duì)硬件操作,只不過(guò)指令采用了英文縮寫(xiě)的標(biāo)識(shí)符,更容易識(shí)別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫(xiě)出來(lái)。匯編程序的每一句指令只能對(duì)應(yīng)實(shí)際操作過(guò)程中的一個(gè)很細(xì)微的動(dòng)作。例如移動(dòng)、自增,因此匯編源程序一般比較冗長(zhǎng)、復(fù)雜、容易出錯(cuò),而且使用匯編語(yǔ)言編程需要有更多的計(jì)算機(jī)專(zhuān)業(yè)知識(shí),但匯編語(yǔ)言的優(yōu)點(diǎn)也是顯而易見(jiàn)的,用匯編語(yǔ)言所能完成的操作不是一般高級(jí)語(yǔ)言所能夠?qū)崿F(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比較小,而且執(zhí)行速度很快。
示例:匯編語(yǔ)言打印hello world
; hello.asm
section .data ; 數(shù)據(jù)段聲明
msg db "Hello, world!", 0xA ; 要輸出的字符串
len equ $ - msg ; 字串長(zhǎng)度
section .text ; 代碼段聲明
global _start ; 指定入口函數(shù)
_start: ; 在屏幕上顯示一個(gè)字符串
mov edx, len ; 參數(shù)三:字符串長(zhǎng)度
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)核功能
高級(jí)語(yǔ)言
高級(jí)語(yǔ)言是大多數(shù)編程者的選擇。和匯編語(yǔ)言相比,它不但將許多相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作有關(guān)但與完成工作無(wú)關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡(jiǎn)化了程序中的指令。同時(shí),由于省略了很多細(xì)節(jié),編程者也就不需要有太多的專(zhuān)業(yè)知識(shí)。
高級(jí)語(yǔ)言主要是相對(duì)于匯編語(yǔ)言而言,它并不是特指某一種具體的語(yǔ)言,而是包括了很多編程語(yǔ)言,像最簡(jiǎn)單的編程語(yǔ)言PASCAL語(yǔ)言也屬于高級(jí)語(yǔ)言。
高級(jí)語(yǔ)言所編制的程序不能直接被計(jì)算機(jī)識(shí)別,必須經(jīng)過(guò)轉(zhuǎn)換才能被執(zhí)行,按轉(zhuǎn)換方式可將它們分為兩類(lèi):
編譯類(lèi):編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語(yǔ)言),因此其目標(biāo)程序可以脫離其語(yǔ)言環(huán)境獨(dú)立執(zhí)行(編譯后生成的可執(zhí)行文件,是cpu可以理解的2進(jìn)制的機(jī)器碼組成的),使用比較方便、效率較高。但應(yīng)用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標(biāo)文件(* .obj,也就是OBJ文件)才能執(zhí)行,只有目標(biāo)文件而沒(méi)有源代碼,修改很不方便。類(lèi)似于翻譯官。
編譯后程序運(yùn)行時(shí)不需要重新翻譯,直接使用編譯的結(jié)果就行了。程序執(zhí)行效率高,依賴(lài)編譯器,跨平臺(tái)性差些。如C、C++、Delphi等
解釋類(lèi):執(zhí)行方式類(lèi)似于我們?nèi)粘I钪械摹巴暦g”,應(yīng)用程序源代碼一邊由相應(yīng)語(yǔ)言的解釋器“翻譯”成目標(biāo)代碼(機(jī)器語(yǔ)言),一邊執(zhí)行,因此效率比較低,而且不能生成可獨(dú)立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器(想運(yùn)行,必須先裝上解釋器,就像跟老外說(shuō)話,必須有翻譯在場(chǎng)),但這種方式比較靈活,可以動(dòng)態(tài)地調(diào)整、修改應(yīng)用程序。如Python、Java、PHP、Ruby等語(yǔ)言。
總結(jié):
機(jī)器語(yǔ)言:優(yōu)點(diǎn)是最底層,速度最快,缺點(diǎn)是最復(fù)雜,開(kāi)發(fā)效率最低
匯編語(yǔ)言:優(yōu)點(diǎn)是比較底層,速度最快,缺點(diǎn)是復(fù)雜,開(kāi)發(fā)效率最低
高級(jí)語(yǔ)言:編譯型語(yǔ)言執(zhí)行速度快,不依賴(lài)語(yǔ)言環(huán)境運(yùn)行,跨平臺(tái)差
編譯型語(yǔ)言執(zhí)行速度快,不依賴(lài)語(yǔ)言環(huán)境運(yùn)行,跨平臺(tái)差
解釋型跨平臺(tái)好,一份代碼,到處使用,缺點(diǎn)是執(zhí)行速度慢,依賴(lài)解釋器運(yùn)行
二、python的介紹
python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節(jié)期間,Guido開(kāi)始寫(xiě)Python語(yǔ)言的編譯器。Python這個(gè)名字,來(lái)自Guido所摯愛(ài)的電視劇Monty Python’s Flying Circus。他希望這個(gè)新的叫做Python的語(yǔ)言,能符合他的理想:創(chuàng)造一種C和shell之間,功能全面,易學(xué)易用,可拓展的語(yǔ)言。
目前Python主要應(yīng)用領(lǐng)域:
WEB開(kāi)發(fā)
網(wǎng)絡(luò)編程
爬蟲(chóng)
云計(jì)算
人工智能
自動(dòng)化運(yùn)維
金融分析
科學(xué)運(yùn)算
游戲開(kāi)發(fā)