程式語言

由於電腦唯一所看得懂的語言是由二進位『01010001』所組成的機器碼,因此早期的程式設計者必須使用機器語言來撰寫程式,他們必須將每個指令轉換成二進位碼,相當辛苦並且容易出錯,所以後來有許多電腦科學家,發展出組合語言以及高階語言。波姆(Bohm)及賈可皮尼(Jacopini)曾證明循序性、選擇性、重複性等三種敘述,就可用來描述程式邏輯的所有形態結構。是目前流行結構程式的依據。

我們都直接將電腦語言直接分為低階語言(low level language)和高階語言(High level language)二種。

而低階語言:我們又可分為機器語言(Machine language)和組合語言(Assembly language)二種。

(一) 機器語言(Machine language)

機器語言是一種電腦唯一能直接識別的語言,它係由”0”與”1”兩種符號所組成。

機器語言之優點:

1. 程式執行速度最快,效率也最高。

2. 程式佔用主記憶體空間會較高階語言所佔的空間少。

3. 機器語言不需經過編譯即可執行。

但相對地缺點是:

1. 程式難以撰寫,容易出錯且修改及維護都困難。

2. 程式之可攜性最差。以機器語言撰寫完成的程式,在不同機型的電腦上,不能執行。

3. 程式設計人員,須具有相當深入的電腦硬體知識才能勝任。

(二) 組合語言(Assembly Language)

組合語言是一種以英文字縮寫來表達人類語言含意的符號碼語言。所謂的符號碼代表助憶指令

(Mnemonics Instructions)。

組合語言的優點:

1. 因使用助憶指令,比機器語較易學習。

2. 低階語言程式執行效率高。

3. 程式執行速度快。

4. 最易表現計算機具有的功能。

組合語言的缺點:

1. 組合語言,因機種不同,所以不同的CPU,其相容性差。

2. 組合語言撰寫的程式比較長且繁瑣。

3. 程式人員需備硬體的相關知識。

4. 程式維護及修改均不易。

(三)高階語言 (High-level Language)

高階語言是一種接近人類語法表達的語言。

高階語言具有以下之優點:

1. 接近人類語法,易學易懂。

2. 程式撰寫較簡短與除錯均較容易。

3. 程式之可攜性(Portability)高。

相反地,其缺點為:

1. 程式的執行效率較低階語言差。

2. 佔用主記憶體空間較大。

常見的高階語言

(一) BASIC (Beginner's All-purpose Symbolic Instruction Code)

為一種簡單易學,很適合初學者學習的直譯程式。其轉換為機器語言和JavaScript一樣是採用直譯式。其程式如:

10 SUM=0

20 FOR I=1 TO 10

30 SUM = SUM + I

40 NEXT I

50 PRINT SUM

上列程式片段的執行結果為55。又 BASIC語言中,DATA敘述所供應的資料個數,如果小於READ敘述的變數個數,則程式會出現 OUT FOR DATA,將無法執行。

(二) FORTRAN (Formula Translation)

為一種用於科學,工程及數學上的語言。

(三) COBOL (Common Business-Oriented Language)

為一種適於資料多,計算少的商業應用語用。〕

(四) PASCAL

為一種具結構化,適合多用途使用的語言。

(五) C

是一種相當結構化,具速度快可攜性高的語言,C語言不但是結構化語言,同時具有組合語言及高階語

言的優點,最適合設計系統程式。若需處理低階的位元或主記憶體內容,通常採用C或組合語言設計程

式較為理想。

(六) RPG

為適應商務上大量編製報表需要而設計出之語言。

(七) LISP

也是用於人工智慧上的語言,主要專門處理字串等非數字資料的程式語言。

(八) Java與JavaScript

此二種語言具有跨平台,是目前常用在動態網頁設計上的語言。Java是一種物件導向(Object-Oriented)的

程式語言。Java也是屬於一種高階語言,程式編寫後,需經編譯後才可執行,相反的,JavaScript是直譯

描述高階語言,它是邊翻譯邊執行,不需先編譯即可執行。

語言的翻譯程式(Language Translator)又可分:

(一) 組譯程式(Assembler)

是一種將組合語言的原始程式,翻譯成機器語言組成的目的程式。

例如:組合語言的組譯程序為:

組合語言原始程式 --------> 組譯程式 --------> 目的程式

Assembly Assembler (機器語言)

(二) 編譯程式 (Compiler)

是將高階語言所寫的原始程式,譯成機器語言組成的目的程式。

例如:C語言的編譯程序為:

原始程式 --------> 編譯程式 --------> 目的程式

(C語言) (Compiler) (OBJ機器碼)

其特點:

1. 執行速度較快。

2. 可單獨執行程式,不須依附於軟體才能夠執行。

3. 需過濾整個程式無訛後,才全部翻譯成機器語言(目的程式),並經連結(Link)與載入後產生可執行模組(Executable Module)才可被執行程式的工作。

4. 資料型態不合與語法錯誤在原始程式編譯過程中是會被發現的。

5.一般寫程式的流程為:編譯-連結-載入-執行

(三)直譯程式(Interpreter)

是將程式依行號順序,依序一邊翻譯一邊執行,若遇程式錯誤,即停於錯誤處,否則繼續往下執行,一次只能讀取、翻譯、執行一列程式敘述。是一種交談式的翻譯程式,程式本身並不會產生目的程式 (機器碼)。

例如:BASIC的直譯過程為:

原始程式 --------> 直譯程式 --------> 程式執

(.BAS) (Interpreter) 行結果

在程式設計中,堆疊的資料結構 (Stack) 是一個有順序的資料儲存體,其存取資料的方式為先進後出(First In Last Out)。相反的串列(Queue)資料結構是,其存取資料的方式為先進先出(First In First Out),像排隊買票一樣。

微秒(Microseconds)是計量電腦速度的微小時間單位之一,一微秒等於百萬分之一秒(10-6)。