程式語言的簡介 |
程式語言的意義 • 由一組系統化的符號所成之集合,目的是 表達某種機器解決特定問題的步驟 • 向計算機描述計算過程之工具 • 程式語言設計的目標是簡潔(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等開發 平台上已有的直譯程式可供使用。
|
高階語言的處理器 |
• 高階語言的處理器主要的作用即是將利用高階語言 寫成的程式段翻譯成機器可接受的碼。 • 主要可分成編譯器(compiler)及直譯器(interpreter) 二類,說明如下: – 1.編譯器:編譯器會對原始程式碼中的每一條敘 述,按照先後順序做一次之處理,並產生對應的 目的碼。 – 2.直譯器:直譯器會對原始程式碼中的敘述,按 照執行的先後順序做處理,並直接產生程式執行 結果。 |