網路城邦
上一篇 回創作列表 下一篇  字體:
淺談電腦和「大蟒蛇」 ~~ 002
2012/02/08 08:45:35瀏覽236|回應0|推薦3
	

淺談電腦和「大蟒蛇」 ~~ 002


~~ 三種不同類型的電腦語言



基本而言﹐電腦語言可分為「機器語言(Machine Language)」、「組合語言
(Assembly Language)」和「高級語言(High-Level Language)」這三種
類型。

〈一〉機器語言


機器語言是特別為一個機型的電腦硬體而設計的。不同類型的電腦﹐就有不同的機
器語言。一個機器語言的指令是由許多零與一所組合而成。下面所舉的﹐就是一個
IBM 電腦機器語言指令的例子。它會將儲存在兩個特殊的記憶體(叫做 Registers)
的數字相加在一起︰

0001101000110010

以機器語言所寫成的電腦程式可以直接為電腦所了解與執行。不過﹐想想看﹐一個
由機器語言所寫成的電腦程式就有成千上萬的類似上面例子的零與一的組合﹐是不
是會讓您看得眼花繚亂﹐頭昏腦脹?這種電腦語言﹐不但難學﹐而且容易出錯(例
如說﹐在成千上萬的零與一之中﹐不小心在應該是零的地方﹐誤打成一)﹐也不易
找出錯誤(如果程式執行的結果和預期的不符合﹐那麼在那成千上萬的零與一之間﹐
要找出錯誤可不是易事)﹐此外﹐因為一種電腦硬體就有一種為它所設計的機器語
言﹐所以很可能在好不容易剛學會了一個機器語言之時﹐就換了機型或是換了工作﹐
那麼過去所學的東西﹐馬上就用不上了。由此種種﹐人們不想學﹐也不想使用這種
語言﹐是很自然的了。

〈二〉組合語言


因為機器語言的難學、易出錯、難除錯﹐於是便有了組合語言的產生。組合語言的
指令有點像是簡寫或是縮寫的文字﹐例如上面所舉的機器語言的指令例子﹐若寫成
組合語言﹐就有如下面所示:

AR 3,2

AR 其實就是 Add Registers 的縮寫。要學這樣的電腦語言﹐顯然要比去學機器語
言好些﹐不過還是相當不容易的﹐因為必須充份了解電腦底層的運作。過去我教組
合語言時﹐很多學生都重修一兩次以上﹐才能過關呢。

首先我們可以看到﹐組合語言的指令不再是純粹由許多零與一來構成﹐而零與一所
構成的指令才是電腦可以直接了解和執行的﹐換句話說﹐由組合語言所寫成的指令﹐
必須先翻譯成由零與一所組成的機器語言的指令﹐才能被執行。也就是說﹐由組合
語言所寫成的程式﹐必須先經過一道翻譯的步驟﹐而這負責翻譯的軟體就叫做
Assembler。而從這兒我們知道﹐使用組合語言只是方便人們﹐對電腦本身﹐並沒
什麼好處。

〈三〉高級電腦語言


組合語言也是因電腦硬體的不同而異﹐學會一種電腦的組合語言﹐並無法應用於另
一種電腦﹐而且這種語言也不太好學﹐於是﹐有心人就想﹐是不是能夠有更容易學
習的電腦語言﹐而且倘若學會了﹐也可以適用於各種不同的電腦?換句話說﹐只要
學會了一種電腦語言﹐不管以後換了什麼樣的電腦﹐都仍然可以適用﹐而不必重新
學習新的電腦語言。由於這些考量﹐才有所謂「高級電腦語言」的產生。它被稱為
高級電腦語言﹐因為它比較接近我們人類所使用的語言﹐至於機器語言有時也被稱
為「低級電腦語言」。

在高級電腦語言中的商用電腦語言「科博(COBOL)」﹐就有如英文。例如﹐下面
的科博指令:

ADD AMOUNT TO TOTAL.

您一定可以了解是要做什麼吧?

在市面上所存在的高級電腦語言很多﹐例如 Java、Python、FORTRAN、COBOL、
C++ 、Visual Basic、Pascal、BASIC 等等等等﹐真是不勝枚舉。

跟組合語言一樣﹐由高級語言所寫成的電腦程式﹐其中的指令也必須經由翻譯轉換
成由零與一所組成的機器語言的指令﹐才能被電腦所了解與執行。一般而言﹐高級
電腦語言的翻譯軟體有兩大類﹐一種叫做 Compiler﹐另一種叫做 Interpreter。不
過﹐我在此暫時不多用文字來區分它們。

因為高級語言比較接近我們使用的文字﹐比較容易學習和找出及改正錯誤﹐再加上
學了一種語言(例如 Java)﹐不管是使用什麼電腦(AMD 的也好﹐Intel 的也好﹐
華碩的也好﹐HP 的也好)﹐都可以適用﹐非常方便﹐所以現在沒有人或是很少人
使用機器語言及組合語言了。

在這篇文章裡﹐我介紹了三種不同類型的電腦語言﹐而電腦真正能夠了解及執行的
是由零與一所組合而成的指令。由零與一所構成的數字系統叫做二進位的系統
(Binary Number System)﹐而平日我們日常生活所習慣使用的是十進位系統
(Decimal Number System)。為什麼電腦要捨棄我們所習慣的十進位數字系統﹐
卻採用我們所不熟悉的二進位數字系統呢?一個電腦指令要是如何組成的呢?這些
是我們下一篇文章要介紹的。

〈待續〉


(2012-02-07)


【附記】

海濱之歌







( 心情隨筆心情日記 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=FuChen&aid=6094695