計算能理解的語言是什麽?之前,我們已經了解到它只能理解二進制,0101010...妳不能輸壹堆二進制給計算機(雖然原來的計算機就是這麽做的)讓它工作,這樣開發速度太慢了。所以最好的方法是讓人們輸入簡單的指令,計算機可以把指令轉換成二進制來執行,例如:
如果程序員想讓計算機播放壹首歌,他只需要輸入指令。
“老夥計們,開門。mp3 "
玩
計算機的cpu收到這樣的指令後,會把它變成壹堆只有CPU能理解的指令,然後把指令變成如下各種對應的相似二進制。
[操作| rs | rt |地址/立即]
353868十進制
1000110001010000000001000100065438二進制
最後cpu調用妳硬盤上的這首歌,通過揚聲器播放出來。
上面的cpu指令太難理解了。如果讓妳天天寫這樣的代碼,大家都得自殺。幸運的是,偉大的計算機先驅們開發出了各種編程語言,讓我們可以通過編寫壹些簡單的規則來操作計算機。
有哪些編程語言?
編程語言壹般分為機器語言、匯編語言和高級語言,如下
機器語言
因為計算機只能接受二進制代碼,所以用二進制代碼0和1描述的指令稱為機器指令,所有機器指令的集合構成了計算機的機器語言,用機器語言編寫的程序稱為目標程序。只有目標程序可以被計算機直接識別和執行。而用機器語言寫的程序沒有明顯的特點,難記,讀寫不方便,依賴於具體型號,有很大的局限性。機器語言屬於低級語言。
要用機器語言編寫程序,程序員首先應該記住所有的指令代碼和所用計算機代碼的含義。手工編程時,程序員要自己處理每條指令和數據的存儲、分配、輸入和輸出,還要記住編程過程每壹步所用工作單元的狀態。這是壹項非常乏味的工作。寫程序花費的時間往往是實際運行時間的幾十倍甚至上百倍。而且編制的程序都是0和1的指令代碼,不直觀,容易出錯。除了計算機廠商的專業人士,大部分程序員都停止了學習機器語言。
機器語言是微處理器理解並用來控制其操作的二進制代碼。
雖然機器語言看起來很復雜,但它是有規律的。
機器語言指令多達100000條。這意味著不能列出所有這些類別。
以下是壹些例子:
說明部分示例
0000代表負載。
0001代表商店。
…
寄存器部分示例
0000代表寄存器a。
0001代表寄存器b。
…
存儲器部分的例子
0000000000000代表地址為0的內存。
000000000001代表地址為1的內存。
00000000010000代表地址為16的內存。
1000000000代表地址為2 11的內存。
集成示例
0000,0000,000000010000代表荷載A,16。
0000,0001,0000000001代表載荷B,1。
0001,0001,00000010000代表B店,16。
0001,0001,0000000001代表商店B,1[1]。
匯編語言
匯編語言的本質和機器語言是壹樣的,都是直接在硬件上操作,只是指令用的是英文縮寫標識符,更容易識別和記憶。它還要求程序員以命令的形式寫出每個具體的操作。匯編程序的每壹條指令在實際操作過程中只能對應壹個非常細微的動作。比如移動和自增,所以匯編源程序壹般冗長、復雜、容易出錯,用匯編語言編程需要更多的計算機專業知識,但匯編語言的優勢也很明顯。匯編語言能完成的操作不是普通高級語言能實現的,源程序匯編生成的可執行文件不僅比較小,而且非常快。
Hello world編的,打印壹個hello world,需要寫十幾行,妳醉了。
;hello.asm
部分。數據;數據段聲明
msg db“妳好,世界!”,0xA要輸出的字符串。
len equ $-msg;字符串長度
部分。文本;代碼段聲明
全局_開始;指定入口函數
_ start:;在屏幕上顯示壹個字符串。
mov edx,len參數3:字符串長度
mov ecx,msg參數2:要顯示的字符串。
mov ebx,1;參數1:文件描述符(標準輸出)
mov eax,4;系統調用號(sys_write)
int0x80調用內核函數
;退出程序
mov ebx,0;參數1:退出代碼
mov eax,1;系統調用號(sys_exit)
int0x80調用內核函數
高級語言
高級語言是大多數程序員的選擇。與匯編語言相比,它不僅將許多相關的機器指令合成為壹條指令,而且去掉了與具體操作相關但與完成工作無關的細節,如使用堆棧和寄存器,大大簡化了程序中的指令。同時由於省略了很多細節,程序員不需要太多專業知識。
高級語言主要是相對於匯編語言而言的。它不是指某壹種特定的語言,而是包括了很多編程語言,比如PASCAL這種最簡單的編程語言。
用高級語言寫的程序不能被計算機直接識別,只能轉換後執行。根據轉換方法,它們可以分為兩類:
編譯類:編譯是指在應用源程序執行之前,將程序源代碼翻譯成目標代碼(機器語言),這樣它的目標程序就可以脫離其語言環境獨立執行(編譯後生成的可執行文件由cpu能理解的二進制機器碼組成),使用起來方便高效。但是壹旦應用需要修改,就必須先修改源代碼,然後重新編譯生成新的目標文件(*。OBJ,即obj文件)才能執行。只修改目標文件而不修改源代碼是不方便的。
編譯後的程序運行時,不需要重新翻譯,直接使用編譯後的結果即可。程序執行效率高,依賴編譯器,跨平臺性能差。如C、C++、Delphi等。
講解類:執行方式類似於我們日常生活中的“同聲翻譯”。壹個應用的源代碼被翻譯成目標代碼(機器語言)同時執行,效率比較低,無法生成可以獨立執行的可執行文件。應用程序離不開它的解釋器(要想運行,必須先安裝解釋器,就像和外國人說話壹樣,必須有翻譯在場),但這種方式更靈活。如Python、Java、PHP、Ruby等語言。
摘要
機器語言
優點是層次最低,速度最快,缺點是最復雜,開發效率最低。
匯編語言
優點是比較低級,最快,缺點是復雜,開發效率最低。
高級語言
編譯語言執行速度快,獨立於語言環境,跨平臺性差。
解釋性跨平臺好,壹個代碼到處用,缺點是執行慢,依賴解釋器運行。
主流編程語言介紹(10分鐘)
世界上有600多種編程語言,但主流使用的最多也就二三十種。不同的語言有各自的特點和專業領域。隨著計算機的不斷發展,新的語言不斷誕生,同時,很多舊的語言也在慢慢被使用。有壹個權威的語言排名網站,在那裏可以看到主流的編程語言有哪些。
TIOBE發布編程語言列表已經快六年了。在這六年中,我們見證了許多語言的興衰。雖然中國有很多大牛,但是關註這種語言的排名是沒有意義的。然而,我們仍然可以看到哪些語言正在蓬勃發展,哪些語言正在衰落。從Objective-C的崛起過程中,我們仍然可以看到移動設備的黃金潛力,尤其是iOS應用的發展。
以下是壹些主流編程語言:
c語言:
c語言是壹種計算機編程語言,兼具高級語言和匯編語言的特點。由美國貝爾研究所的D.M.Ritchie於1972引入。1978之後,C語言先後移植到大、中、小、微型計算機上。它可以作為工作系統設計語言來編寫系統應用程序,也可以作為應用程序編程語言來編寫獨立於計算機硬件的應用程序。它具有廣泛的應用和強大的數據處理能力,不僅在軟件開發中,而且在各種科學研究中。適用於編譯系統軟件、三維、二維圖形和動畫,以及單片機、嵌入式系統開發等特定應用。
C++:
C++是C語言繼承的擴展。可用於C語言的過程化編程,以抽象數據類型為特征的面向對象編程,以繼承和多態為特征的面向對象編程。C++在擅長面向對象編程的同時,也可以進行基於過程的編程,所以C++可以適應問題的大小。
C++不僅具有計算機高效運行的實用特性,還致力於提高大型程序的編程質量和編程語言的問題描述能力。
JAVA:
Java是壹種面向對象的編程語言,可以編寫跨平臺的應用軟件。是Sun Microsystems在1995年5月推出的Java編程語言和Java平臺(即JavaSE、JavaEE、JavaME)的總稱。Java技術具有優秀的通用性、高效性、平臺可移植性和安全性,廣泛應用於個人電腦、數據中心、遊戲機、科學超級計算機、手機和互聯網,擁有全球最大的專業開發者群體。在全球雲計算和移動互聯網的產業環境下,Java優勢明顯,前景廣闊。
PHP:
PHP (mbth: PHP:超文本預處理器,中文名:超文本預處理器)是壹種通用的開源腳本語言。語法吸收了C語言、Java、Perl的特點,利於學習,應用廣泛,主要適用於Web開發領域。
紅寶石:
Ruby是開源的,在網上免費提供,但是需要許可證。[4]
Ruby是壹種通用的解釋型編程語言。
Ruby是真正的面向對象編程語言。
Ruby是壹種類似於Python和Perl的服務器端腳本語言。
Ruby可以用來編寫通用網關接口(CGI)腳本。
Ruby可以嵌入超文本標記語言(HTML)中。
Ruby有壹個簡單的語法,這使得新開發人員能夠快速而容易地學習Ruby。
去吧:
Go是壹種開源編程語言,可以很容易地構造簡單、可靠、高效的軟件。
圍棋是羅伯特·格裏斯默、羅布·派克和肯·湯普森在2007年底開發的。後來Ian Lance Taylor,Russ Cox等人也加入進來,最後是2009年6月開源+01,2012年初發布Go 1穩定版。現在圍棋的發展是完全開放的,有活躍的社區。
擅長並發編程。
Python:
Python是壹門優秀的綜合性語言。Python簡潔、優雅、強大。廣泛應用於人工智能、雲計算、金融分析、大數據開發、WEB開發、自動化運維、測試等方向,已成為全球第四大流行語言。