程式語言的簡介

程式語言的意義
• 由一組系統化的符號所成之集合,目的是
表達某種機器解決特定問題的步驟
• 向計算機描述計算過程之工具
• 程式語言設計的目標是簡潔(simplicity) ,如
何以最精簡的方式來表達

程式語言的分類
• 第一代程式語言—機器語言(低階語言)

機器語言(machine language)
– 指令與資料均由二進碼所組成
– 寫成的程式段不需語言處理器處理,便可直接在機器上執行

• 第二代程式語言—組合語言(低階語言)

組合語言(assembly language)
– 組合語言的指令稱為助憶碼
– 組合語言的指令分為機器指令(machine operation)與虛擬指令(pseudo operation)二類
– 必需經由組譯程式(assembler )的處理,才可在機器上執行
– 與機器語言合稱為低階語言

• 第三代程式語言—高階語言

高階語言(high level language)
– 又稱為程序導向語言(procedure oriented language)
– 此種語言必需經過編譯或直譯程式處理過方可執行
– 如Pascal,C,Basic,Fortran與Cobol。

• 第四代程式語言—極高階語言

極高階語言
– 又稱為問題導向語言(problem-oriented language)
– 如SQL(Structured Query Language)

• 第五代程式語言—自然語言

自然語言(nature language)
– 又稱為知識庫語言(knowledge based language)
– 語法接近人類日常生活的語言
– 例如演算法的虛擬碼

top

程式語言的演進

Fortran
• 第一個高階語言
• 針對科學計算而設計
• 具固定格式(程式必需由第7個位置寫起)
• Compiler 於1957/4完成,由18 人年完成
• 變數名單不能超過6個字
• 首創輸出入格式化(I/O format,I 為整數,F 為浮
點數)
• 允許隱含性變數(ijklmn開頭的變數名稱為整數)
• 提供正、零、負三種IF 分枝結構
• 提供Do Loop迴圈控制結構(後測迴圈)
• 後期才加入字串處理(Fortran 90)


Algol 60
• ALGOrithmic Language
• 發展於1960年代, 但無較大之贊助者
• 採自由格式(free format)
• 採外顯式(explicit)宣告
• 採區塊結構(block structure)
• 允許使用遞迴副程式(recursive subroutine)
• 使用傳名呼叫法(call by name)傳遞參數

• 首創以保留字(reserved word)來定義資料型態
• 程式指令以分號結束
• 設定值符號為:=
• 動態界限陣列
• 首創結構化程式設計的概念
• 首創以B.N.F.來描述語法(Algol 58提出)
• 結構化程式設計的概念為程式設計過程依程
式的邏輯性不斷細分,直到很容易編寫程式
單元為止,且應儘量避免用goto

C 語言
• 貝爾實驗室於1970年代發展出來。
• 採區塊結構(block structure)。
• 可攜性高,高度的移轉性��機器獨立性。
• 適合發展系統程式。
• 具Self-compiled 特性(C語言本身的編譯程
式大部份是用C語言寫成)。
• 可呼叫組合語言。
• Unix系統絕大部份是用C語言寫成

C++
• C++ 語言為Bjarne Stroustrup 設計,在貝爾
實驗室中發展。
• C++ 語言設計的主要目標是希望能實現物件
導向程式設計的理想,因此C++是以C語言為
根本並結合了Simula 67的物件導向概念,及
Algol 68的overloading特性而形成最初的C++
語言。
• C++ 語言採用區塊結構(Block Structure)。
• C++ 語言非常適合發展系統程式,且利用
C++ 語言製作之程式具有很高的可攜性即機
器獨立性。
• C++ 語言會區分大小寫,如main、Main、
MAIN在C++語言中是被視為不同的符號。
• 輸入敘述為"cin”
語法: cin >> "變數"
由鍵盤將值讀入變數中。
• 輸出敘述為"cout“
語法: cout << "資料"
將“資料”輸出到螢幕上。
• C++語言的識別字由大小寫英文字母,數字
或底線所構成,但第一個字元不得為數字。

JAVA
• 由Sun Microsystems所發展,其名稱之命名
是源於突發的靈感。
• 物件導向程式語言,以class 為基本架構。
• 提供垃圾收集法(garbage collection)來管理
使用者不再使用的記憶體空間。
• 提供執行緒(Multithread)功能。
• 提供例外處理(exception) 能力。
• JAVA取消了指標(pointer)資料型態,多重
繼承(multiple inheritance),及運算子覆載
(operator overloading)等性質。
• 利用JAVA語言寫成的程式經由編譯器(compiler)處
理後產生的碼稱為Byte Code (中間碼),這種碼可在
不同的機器平台上移植,待要執行時,再由JAVA的
直譯器(interpreter)處理此Byte Code即可,因此
JAVA語言比C語言具有更高的可攜性。
• JAVA語言允許其程式段能夠透過網路系統到另一個
機器平台上執行。
• 目前在Windows、Macintosh、SUN、Linux等開發
平台上已有的直譯程式可供使用。

 

top

高階語言的處理器

• 高階語言的處理器主要的作用即是將利用高階語言
寫成的程式段翻譯成機器可接受的碼。
• 主要可分成編譯器(compiler)及直譯器(interpreter)
二類,說明如下:
– 1.編譯器:編譯器會對原始程式碼中的每一條敘
述,按照先後順序做一次之處理,並產生對應的
目的碼。
– 2.直譯器:直譯器會對原始程式碼中的敘述,按
照執行的先後順序做處理,並直接產生程式執行
結果。

top