陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第一章 程式語言的演進 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司.

Slides:



Advertisements
Similar presentations
第十届中小学 NOC 活动 学生竞赛项目 -- 信息科技类 程序设计 培 训 讲 义 孙建华. 要点  程序设计是技术与艺术相结合的赛项。每一 个程序都来源于一种观念、一个想法、一项 创意,其实现水平有赖于技术手段,其优劣 有赖于用户检验。程序设计的过程是表达和 表现作者创造性的过程。  本赛项的要点是:用户群体需求定位恰当的.
Advertisements

程序设计基础 第 2 章 解题要有程序 主讲:吴献彩 Tel : QQ :

第一單元 建立java 程式.
電腦與問題解決 5-1 電腦解題概論 5-2 電腦解題程序 5-3 演算法概論.
軟體工程 -物件導向程式設計與UML系統分析實作
第一章 認識程式語言.
Ch02物件導向程式設計 物件導向系統分析與設計.
課程名稱:程式設計 授課老師:________
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
第一章 軟體工程 (Software Engineering Introduction)
計算機概論 第三章 程式語言 陳維魁/陳邦治 旗標出版社.
新世代計算機概論 第14章 程式語言.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Chapter 5 遞迴 資料結構導論 - C語言實作.
第1章 程式語言與Visual Basic的基礎
計算機概論 蘇木春 中央大學資工系.
第八章 编码和测试 编码概述 编码语言与编码工具 编码示例 测试的基本概念 黑盒测试和白盒测试 测试用例设计 多模块程序的测试策略
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
臺北市立大學 資訊科學系(含碩士班) 賴阿福 CS TEAM
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Java簡介.
程式語言簡介.
物件導向程式設計 CH1, CH2.
Chapter 1 Introduction.
陳維魁 博士 儒林圖書公司 第七章 參數的傳遞 陳維魁 博士 儒林圖書公司.
電腦的種類 超級電腦 (supercomputer) 大型電腦 (Mainframe) 迷你電腦 ( Mini computer)
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
第1章 認識Arduino.
第一章 電腦、程式與JAVA.
第一章 C語言概論 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載.
第一章 计算机语言的学科形态与发展历程   计算机语言在计算学科中占有特殊的地位,它是计算学科中最富有智慧的成果之一,它深刻地影响着计算学科各个领域的发展。不仅如此,计算机语言还是程序员与计算机交流的主要工具。因此,可以说如果不了解计算机语言,就谈不上对计算学科的真正了解。
C語言簡介 日期 : 2018/12/2.
生物資訊程式語言應用 Part 3 Perl Language.
類別(class) 類別class與物件object.
陳維魁 博士 儒林圖書公司 第十一章 LISP 程式語言 陳維魁 博士 儒林圖書公司.
安裝JDK 安裝Eclipse Eclipse 中文化
Concepts in General / Web Programming
Java 程式設計 講師:FrankLin.
資電學院 計算機概論 F7810 第三章 程式語言 陳邦治編著 旗標出版社.
程式設計 老師:戴自強 助教:楊斯竣.
第 1 章 Java 簡介.
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
Topic Introduction—RMI
第一單元 建立java 程式.
TB-054A  周天穎 編著 儒林圖書公司 發行.
计算机问题求解 – 论题1-7 - 不同的程序设计方法
JAVA 程式設計 資訊管理系 - 網路組.
陳維魁 博士 儒林圖書公司 第三章 變數與繫結 陳維魁 博士 儒林圖書公司.
CH05. 選擇敘述.
GUI Title and GUI Status
程式語言 程式語言發展史 資料型態 程式指令 程序定義和使用.
第3 语言翻译问题 [学习目标]:学习和掌握语言的语法的基本概念和基本要素,理解翻译的步骤;学习和掌握BNF文法。
陳維魁 博士 儒林圖書公司 陳維魁 博士 儒林圖書公司.
導 論 教學投影片.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
陣列與結構.
第 4 章 認識 SQL 語言與資料型別.
编译原理实践 1.课程说明及引论.
資料表示方法 資料儲存單位.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
程式語言簡介 2019/7/17 明乘中學編製.
Programming & Language Telling the computer what to do
開發Java程式語言的工具 JDK.
第三章 Arduino互動程式設計入門 Arduino程式基礎 認識變數 認識數字系統 認識常數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Chapter 4 Multi-Threads (多執行緒).
程式設計與程式語言 告訴電腦做些什麼 第十六章.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第一章 程式語言的演進 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司

大綱 程式語言的意義 程式語言的設計目標 程式語言的分類 各種語言的特性 高階語言的處理器 命令式語言與應用式語言 習題

程式語言的意義 由一組系統化的符號所成之集合,目的是表達某種機器解決特定問題的步驟 向計算機描述計算過程之工具

程式語言的設計目標 簡潔(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) 語法接近人類日常生活的語言

各種語言的特性 Fortran Algol 60 Lisp Cobol APL Basic Snobol PL/1 Simula Prolog Pascal ADA C++ JAVA

FORTRAN FORmula TRANslator language 第一個高階語言 針對科學計算而設計 固定格式 首創輸出入格式化(I/O format) 提供正、零、負三種 IF 分枝結構 提供 Do 迴圈控制結構

執行下列Fortran之部份程式並求出 K 值 DO 400 I=1,5 IF(K) 100,200,300 100 K=K+5 GOTO 400 200 K=2*K+1 300 K=4*K-2 400 CONTINUE

Fortran 共用區(common area) 作用 處理方式

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

Algol 60 動態界限陣列 採外顯式(explicit)宣告 首創以保留字(reserved word)來定義資料型態 首創結構化程式設計的概念 首創以B.N.F來描述語法 (Algol 58提出)

結構化程式設計 structured programming 把一個大的問題,依照邏輯上的特性,往下細分成幾個小的問題,再把這幾個小的問題,依照邏輯的特性,再往下細分成更小的問題,依此類推,直到很容易編寫程式的單元時為止

結構化程式設計 基本結構 循序結構 選擇結構 反覆結構

結構化程式設計 優點 可以分工 可讀性高 容易維護 易除錯 缺點 程式碼會變長 執行時間較長

PASCAL 紀念法國數學家Blaise Pascal 1975 年發展完成,由 IBM 贊助 採區塊結構 具嚴謹語法結構,適合教學用途

LISP 劍橋波蘭式(Cambridge polish notation) LISt Processing language 1950年代末期由麻省理工學院發展 S運算式(S expression) 利用垃圾收集法(garbage collection) 來管理記憶體 使用於人工智慧(Artificial Intelligence) 之應用,稱為人工智慧的低階語言 劍橋波蘭式(Cambridge polish notation)

Garbage collection 系統會主動的回收, 程式不再使用的記憶體空間 範例 Small talk JAVA LISP

SNOBOL StriNg Oriented symBOlic Language 貝爾實驗室於1960年代中期發展 具字樣配對(pattern matching) 能力 具字串處理能力(string manipulating) 型樣資料型態(pattern data type)

PL/1 Programming Language /1 IBM 於1960年代中期設計 綜合 Fortran,Cobol 與 Algol 60 之特性 首創 例外處理 (exception handling) 指標(pointer)資料型態 以維也納定義語言(Vienna Definition Language)來描述語意 採區塊結構 提供遞迴呼叫 (recursive call) 的功能 多重任務 (multi-tasking

Cobol COmmon Business Oriental Language 發展於 1960~1970 年代,由美國防部贊助 主要用於商業資料處理 具 IF-THEN-ELSE 敘述 語法傾向自然語言(natural language) 雜訊字(noise word) 首創與機器無關的資料描述方式 (data division)

COBOL 資料描述方式 IDENTIFICATION DIVISION ENVIRONMENT DIVISION DATA DIVISION PROCEDURE DIVISION

Algol W 使用數值結果呼叫法 (call by value result) 傳遞參數 首創 case敘述 提供記錄(record)與指標(pointer) 結構

Algol 68 參數的傳遞採用數值結果呼叫法 提供記錄與指標資料型態 首先提供使用者自行定義資料型態的功能

APL A Programming Language 擅長數學計算。 採不標準字元集。 允許陣列整體運算。 提供指標(pointer) 型態。 提供集合(set) 資料型態。〔首創〕 提供記錄(record) 資料型態。 提供 case 結構。 允許使用者自定資料型態。 採傳值呼叫法與傳址呼叫法傳遞參數

SIMULA 發展於1960年代後期 首創資料抽象化(data abstraction) 類別(class)

C 貝爾實驗室於1970年代發展 採區塊結構 可攜性高 適合發展系統程式 具 Self-compiled 特性 可呼叫組合語言

C++ Bjarne Stroustrup 設計,在貝爾實驗室中發展 主要目標 採用區塊結構 適合發展系統程式 高可攜性 實現物件導向程式設計理想 採用區塊結構 適合發展系統程式 高可攜性 高機器獨立性(machine independent) 區分大小寫 識別字由大小寫英文字母,數字或底線所構成,但第一個字元不得為數字

BASIC 1960年代中期發展 交談式(interactive)語言 適合程式發展初期使用 利用解譯器(interpreter)處理程式 Beginner's All-purpose Symbolic Instruction Code 1960年代中期發展 交談式(interactive)語言 適合程式發展初期使用 利用解譯器(interpreter)處理程式

Prolog PROgramming LOGic Alan Colmeraure 於1970年代初期發展 適用於人工智慧之應用 邏輯式程式語言 人工智慧的高階語言 1982年日本宣佈以 Prolog 為第五代電腦之發展語言

ADA 紀念 Augusta ADA Byron 美國防部發展 主要運用於國防需求 提供 資料抽象化 例外處理 平行處理

RPG Report Program Generator 由 IBM 發展 主要用作大量報表之產生

GPSS General Purpose Simulation System 主要用於模擬 (Simulation)

PILOT Programmed Inquiry Learning Or Teaching 主要應用於電腦輔教學 (Computer Aided Instruction) 可幫助教師編寫教材

FORTH 設計的目標是為了提供對電腦的記憶體及速度作最佳之運用

MODULA-2 由Wirth 發展出來,適用於系統軟體之開發

JAVA Sun Microsystems所發展 名稱之命名是源於突發的靈感 物件導向程式語言,以 class 為基本架構 垃圾收集法(garbage collection) Multithread 例外(exception)處理能力 取消 指標(pointer)資料型態 多重繼承(multiple inheritance) 運算子覆載(operator overloading)

JAVA Byte Code 可在不同的機器平台上移植,待要執行時,再由JAVA的直譯器(interpreter)處理此Byte Code即可 允許程式段能夠透過網路系統到另一個機器平台上執行 JAVA語言比 C語言具有更高的可攜性 目前在Windows NT, Windows 95, Macintosh, SUN, Linux等開發平台上已有的直譯程式可供使用。

高階語言的處理器 作用 種類 將利用高階語言寫成的程式段翻譯成機器可接受的碼。 編譯器(compiler) 直譯器(interpreter) 對原始程式碼中的每一條敘述,按照先後順序做一次之處理,並產生對應的目的碼 直譯器(interpreter) 對原始程式碼中的敘述,按照執行的先後順序做處理,並直接產生程式執行結果

編譯器及直譯器的比較 輸入 輸出 時間 空間 除錯特性 彈性 適合階段 範例

命令式語言 藉著改變變數之內容以做為控制程式執行的方法 範例 Fortran Cobol Basic Algol Pascal PL/1 C ….

應用式語言 語言藉著函數來表達。因此輸入將作為函數的參數而輸出則為函數的值 範例 Lisp APL Snobol

學習程式語言的目的 增進對程式語言的瞭解 可改進設計的程式之架構,藉以增進程式執行之效率 可選擇適用的語言 較易學習與設計新的語言

精選習題 程式語言常見的設計準則為何? 何謂外顯式型態法 (explicit typing)? 何謂內隱式型態法 (implicit typing)? 程式設計(design)與撰寫(coding)有何不同?