程式語言
由於電腦唯一所看得懂的語言是由二進位『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)。