SlideShare a Scribd company logo
程式語⾔言類型
(Programming Paradigm)
Let it go
語⾔言
計概:Programming Paradigm
Fortran
Matlab
Octave
Bigwig
TUTOR
BASIC
BCPL
C
C++
COBOL
Haskell
Java
Mercury
Objective-C
Pascal
Scheme
Swift
Ada
Chapel
Eiffel
Go
Joule
Limbo
MultiLisp
Orc
Oz
Pict
Rust
SALSA
Scala
SequenceL
C#
Candle
ChucK
Cyclone
ActionScript
Frink
LPC
MSL
MEL
PCASTL
Perl
PHP
Pico
Pike
R
Rust
S-Lang
Scala
sed
SuperCollider
TCL
UnrealScript
Lucid
Max
Oz
Prograph
Pure Data
Reaktor
VEE
VHDL
VisSim
Clarion
Clipper
RDQL
SPARQL
SQL
WebDNA
WebQL
Lustre
MetaPost
Modelica
Prolog
Oz
RDQL
SPARQL
SQL
xBase
Ruby
EEL
程序式類型〔procedural paradigm;或規則式類型
(imperative paradigm)〕可將程式視為主動的代理
⼈人,能主動處理被動的物件。被動的物件無法⾃自⾏行啟
動,但可以接受主動代理⼈人發出的動作。在程序式類
型中的程式是屬於主動代理⼈人,將資料或資料項視為
被動的物件。資料項被儲存於電腦的記憶體中,以供
程式處理。
程序式類型 (Procedural Paradigm)
(英⽂文版)252
程式(program)是主動的⼈人(active agent)
資料(data)是被動的物(passive object)
程式呼叫(call)程序(procedural)來影響資料(data)
程式(program)、程序(procedure)和資料(data)是分開的
當⼀一個程式想要影響⼀一個資料時,這個程式會發出⼀一個程
序,⽽而這個程序包含影響資料所需的動作
程序式類型 (Procedural Paradigm)
(英⽂文版)252
程式(program)是主動的⼈人(active agent)
資料(data)是被動的物(passive object)
程式呼叫(call)程序(procedural)來影響資料(data)
程式(program)、程序(procedure)和資料(data)是分開的
當⼀一個程式想要影響⼀一個資料時,這個程式會發出⼀一個程
序,⽽而這個程序包含影響資料所需的動作
⼈人 洗 碗
程序式類型 (Procedural Paradigm)
(英⽂文版)252
程式 程序 資料
程序式類型 (Procedural Paradigm)
(英⽂文版)253
程序式類型 (Procedural Paradigm)
(英⽂文版)253
上檔(段數)
{
段數 + 1
}
程序式類型 (Procedural Paradigm)
(英⽂文版)253
上檔(段數)
{
段數 + 1
}
程序:
上檔功能
被影響的資料:段數
程序式類型 (Procedural Paradigm)
(英⽂文版)253
Ubike段數 = 2
Ubike換檔程式
{
上檔(Ubike段數)
}
上檔(段數)
{
段數 + 1
}
程序
被影響的資料
程序式類型 (Procedural Paradigm)
Ubike段數 = 2
Ubike換檔程式
{
上檔(Ubike段數)
}
上檔(段數)
{
段數 + 1
}
程序
被影響的資料
呼叫程序
程式
資料
(英⽂文版)253
程序式類型 (Procedural Paradigm)
Ubike段數 = 2
Ubike換檔程式
{
上檔(Ubike段數)
}
折疊⾞車⾞車段數 = 2
折疊⾞車換檔程式
{
上檔(折疊⾞車段數)
}
都市⾞車段數 = 2
都市⾞車換檔程式
{
上檔(都市⾞車段數)
}
同個程序可以拿來影響不同資料
(英⽂文版)253
程序式類型 (Procedural Paradigm)
Ubike段數 = 2
Ubike換檔程式
{
上檔(Ubike段數)
}
折疊⾞車段數 = 2
折疊⾞車換檔程式
{
上檔(折疊⾞車段數)
}
都市⾞車段數 = 2
都市⾞車換檔程式
{
上檔(都市⾞車段數)
}
同個程序可以拿來影響不同資料
(英⽂文版)253
程序式類型 (Procedural Paradigm)
上檔(段數)
{
段數 + 1
}
(英⽂文版)253
程序式類型 (Procedural Paradigm)
上檔(段數)
{
段數 + 1
}
呼叫程序 加法(段數, 1)
(英⽂文版)253
程序式類型 (Procedural Paradigm)
(英⽂文版)254
程序式類型 (Procedural Paradigm)
腳踏⾞車段數 = 2
腳踏⾞車換檔程式
{
上檔(腳踏⾞車段數)
}
上檔(段數)
{
段數 + 1
}
(英⽂文版)254
程序式類型 (Procedural Paradigm)
FORTRAN(FORmula TRANslation)
⽅方程式轉譯程式語⾔言,第⼀一個⾼高階語⾔言
COBOL(COmmon Business-Oriented Language)
共通商業導向程式語⾔言,商業程式設計語⾔言
Pascal
教導初學者結構化程式設計的⽅方法
C(C language)
寫作業系統與系統軟體
Ada
美國國防部承包商所使⽤用的統⼀一語⾔言
(英⽂文版)254
物件導向式類型 (object-oriented paradigm)
(英⽂文版)256
物件導向式類型(object-oriented paradigm)以處
理主動物件取代被動物件。在⽇日常⽣生中我們經常碰
到許多主動物件,執⾏行在這些物件上的動作都被包
含於物件裡,所以物件僅需要接收外界傳來的適當
刺激,就會去執⾏行相關的某個動作。 物件導向式類
型的檔案中會包含所有的程序,稱為⽅方法
(methods),也就是會對檔案執⾏行的動作:列
印、複製、刪除等。
物件導向式類型 (object-oriented paradigm)
(英⽂文版)256
資料(data)是主動的物(active object)
資料(data)包含所有能夠影響資料本⾝身的程序(procedure)
包含在資料(data)裡的程序(procedure)稱為⽅方法(method)
包含⽅方法(method)的資料(data)稱為物件(object)
程式(program)觸發物件(object)裡的⽅方法(method)
當⼀一個程式想要影響⼀一個物件時,這個程式觸發這個物件
裡的⽅方法
物件導向式類型 (object-oriented paradigm)
(英⽂文版)256
物件導向式類型 (object-oriented paradigm)
(英⽂文版)256
物件 Ubike
{
Ubike段數
上檔(Ubike段數)
{
Ubike段數 + 1
}
}
Ubike換檔程式
{
Ubike.上檔
}
物件導向式類型 (object-oriented paradigm)
(英⽂文版)256
物件 Ubike
{
Ubike段數 = 2
上檔(Ubike段數)
{
Ubike段數 + 1
}
}
Ubike換檔程式
{
Ubike.上檔
}
資料
⽅方法
物件
物件導向式類型 (object-oriented paradigm)
腳踏⾞車
單速⾞車
登⼭山越野⾞車
淑⼥女⾞車
UBike
折疊⾞車 競速⾞車
都市⾞車
類別
物件
(英⽂文版)257
同個類別(class)的物件可以全部⼀一起在類別定義
物件導向式類型 (object-oriented paradigm)
物件 Ubike
{
Ubike段數
上檔(Ubike段數)
{
Ubike段數 + 1
}
}
(英⽂文版)257
同個類別(class)的內容可以全部⼀一起定義
物件導向式類型 (object-oriented paradigm)
類別 腳踏⾞車
{
腳踏⾞車段數
上檔(腳踏⾞車段數)
{
腳踏⾞車段數 + 1
}
}
(英⽂文版)257腳踏⾞車物件 Ubike
類別
同個類別(class)的內容可以全部⼀一起定義
物件導向式類型 (object-oriented paradigm)
類別 腳踏⾞車
{
腳踏⾞車段數
上檔(腳踏⾞車段數)
{
腳踏⾞車段數 + 1
}
}
同個類別(class)的內容可以全部⼀一起定義
Ubike換檔程式
{
Ubike.上檔
}
折疊⾞車換檔程式
{
折疊⾞車.上檔
}
都市⾞車換檔程式
{
都市⾞車.上檔
}
(英⽂文版)257
腳踏⾞車物件 Ubike
腳踏⾞車物件 折疊⾞車
…
類別
物件導向式類型 (object-oriented paradigm)
類別 腳踏⾞車
{
腳踏⾞車段數
上檔(腳踏⾞車段數)
{
腳踏⾞車段數 + 1
}
}
(英⽂文版)257
同個類別(class)的內容可以全部⼀一起定義
物件導向式類型 (object-oriented paradigm)
(英⽂文版)257
⼀一個類別可以繼承(inherit)另⼀一個類別
⾞車⼦子類別
汽⾞車
機⾞車
卡⾞車
腳踏⾞車 類別
物件導向式類型 (object-oriented paradigm)
類別 腳踏⾞車
{
腳踏⾞車段數
上檔(腳踏⾞車段數)
{
腳踏⾞車段數 + 1
}
}
(英⽂文版)257
⼀一個類別可以繼承(inherit)另⼀一個類別
物件導向式類型 (object-oriented paradigm)
(英⽂文版)257
類別 ⾞車
{
⾞車段數
上檔(⾞車段數)
{
⾞車段數 + 1
}
}
類別 腳踏⾞車 繼承 ⾞車
(英⽂文版)257
⼀一個類別可以繼承(inherit)另⼀一個類別
物件導向式類型 (object-oriented paradigm)
(英⽂文版)257
類別 ⾞車
{
⾞車段數
上檔(⾞車段數)
{
⾞車段數 + 1
}
}
類別 腳踏⾞車 繼承 ⾞車
Ubike換檔程式
{
Ubike.上檔
}
折疊⾞車換檔程式
{
折疊⾞車.上檔
}
都市⾞車換檔程式
{
都市⾞車.上檔
}
腳踏⾞車物件 Ubike
腳踏⾞車物件 折疊⾞車
⼀一個類別可以繼承(inherit)另⼀一個類別
物件導向式類型 (object-oriented paradigm)
(英⽂文版)257
⾞車⼦子
汽⾞車
機⾞車
卡⾞車
腳踏⾞車
繼承同個類別的不同類別可以有多樣性 (Polymorphism)
同樣的名字的⽅方法(method)可以做不同的事
物件導向式類型 (object-oriented paradigm)
(英⽂文版)257
繼承同個類別的不同類別可以有多樣性 (Polymorphism)
同樣的名字的⽅方法(method)可以做不同的事
⾞車⼦子
類別 腳踏⾞車
{
警⽰示聲()
{
敲擊⾦金屬鈴鐺
}
}
類別 卡⾞車
{
警⽰示聲()
{
鳴喇叭
}
}
物件導向式類型 (object-oriented paradigm)
(英⽂文版)258
C++
由C演變⽽而來,C加上物件導向概念的延伸版
Java
由C++演變⽽而來,完全物件導向式的語⾔言
函式類型 (Functional Paradigm)
(英⽂文版)258
增加⼀一(x) = x + 1
2 + 1增加⼀一(2) = 2
函式類型 (Functional Paradigm)
(英⽂文版)259
函式類型 在函式類型(functional paradigm)中
的程式被視為數學函式。將函式(function)視為
⼀一個⿊黑箱,有⼀一串輸⼊入與⼀一串輸出。
1. 預先定義⼀一組基本(不可分割的)函式,可以
讓任何程式 設計師使⽤用。
2. 允許程式設計師合併基本的函式,產⽣生新的函
式。
函式類型 (Functional Paradigm)
先定義⼀一組不可分割的基本函式
增加⼀一(x) = x + 1
減少⼀一(x) = x - 1
允許使⽤用基本函式合成新的函式
增加⼆二(x) = 增加⼀一(增加⼀一(x))
減少⼆二(x) = 減少⼀一(減少⼀一(x))
(英⽂文版)259
函式類型 (Functional Paradigm)
找出數列中排第三個數的值
(英⽂文版)259
先定義⼀一組不可分割的基本函式
First(數列) = 取數列中排第⼀一個數的值
Rest(數列) = 刪掉數列中排第⼀一個的數
允許使⽤用基本函式合成新的函式
Third(數列) = First(Rest(Rest(數列)))
函式類型 (Functional Paradigm)
(英⽂文版)259
LSIP
專⾨門處理數列的語⾔言
Scheme
LISP的改良版
函式類型 vs 程序式類型
(英⽂文版)259
Ubike段數 = 2
Ubike換檔程式
{
上檔(Ubike段數)
}
上檔(Ubike段數)
{
Ubike段數 + 1
}
上檔(Ubike段數)
{
增加⼀一(Ubike段數)
}
函式類型 程序式類型
宣告式類型 (Declarative Paradigm)
宣告式語⾔言(declarative language)使⽤用邏輯推論的原
理來回覆查詢。⼀一些給定的敘述(事實)被假設為真,
使⽤用邏輯推論的規則去演繹出新的敘述(事實)。
類似函式類型,先從⼀一些確定的事實,推論到其他事實
如果 (A 是 B) 且 (B 是 C) => (A 是 C)
(Ubike是腳踏⾞車) 且 (腳踏⾞車是⾞車) => (Ubike是⾞車)
(英⽂文版)260
宣告式類型 (Declarative Paradigm)
宣告式語⾔言是⽤用既定的已知事實套上嚴謹的邏輯定律來
進⾏行推論,他是建⽴立在⼀一⾨門很專⾨門的學問(就叫做邏輯)
上,利⽤用從各個領域得到的各種確定事實,套上由這個
學問領域的邏輯學家導出的邏輯定律,來從確定事實推
導出新的事實
反例:(A 是 C) 且 (B 是 C) =>? (A 是 B)
(英⽂文版)260
宣告式類型 (Declarative Paradigm)
(英⽂文版)260
宣告式語⾔言是⽤用既定的已知事實套上嚴謹的邏輯定律來
進⾏行推論,他是建⽴立在⼀一⾨門很專⾨門的學問(就叫做邏輯)
上,利⽤用從各個領域得到的各種確定事實,套上由這個
學問領域的邏輯學家導出的邏輯定律,來從確定事實推
導出新的事實
反例:(A 是 C) 且 (B 是 C) =>? (A 是 B)
NO
(法拉利是⾞車) 且 (藍寶基尼是⾞車) !=> (法拉利是藍寶基尼)
宣告式類型 (Declarative Paradigm)
(英⽂文版)261
Prolog (PROgramming in LOGic)
範例:
腳踏⾞車 (Ubike)
⾞車 (腳踏⾞車)
?-⾞車 (腳踏⾞車)
>> Yes
告訴電腦已知事實
詢問此邏輯是否成⽴立

More Related Content

PDF
如何在 Java App 中導入 Scala
PPTX
TypeScript 綜合格鬥技
PPTX
腦力激盪技巧 ( brainstorming skill )
PPTX
程式設計首日封
PDF
从效率出发的设计思考
PDF
分析路上你我他/如何學習分析
PPT
成大專題演講 遊戲製作 - how a video game is made
PDF
Python 起步走
如何在 Java App 中導入 Scala
TypeScript 綜合格鬥技
腦力激盪技巧 ( brainstorming skill )
程式設計首日封
从效率出发的设计思考
分析路上你我他/如何學習分析
成大專題演講 遊戲製作 - how a video game is made
Python 起步走

Viewers also liked (20)

PDF
初學R語言的60分鐘
PDF
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】
PDF
Advisor 介绍(详细版)
PDF
Network Device Development - Part 4: Firewall 103 ~ Protocol Filter & Payload...
PDF
Network Device Development - Part 5: Firewall 104 ~ Packet Splitter
PDF
2015.10.05 Updated > Network Device Development - Part 2: Firewall 101
PPT
常用Mac/Linux命令分享
PDF
IHaskell 快速入門
PPTX
特留分扣減權之時效
PPTX
不動產和贈與稅節稅規劃
PDF
淺談編譯器最佳化技術
PPTX
跨平台開發從測試到架構
PDF
你的程式開發初體驗 (以Swift為例)
PDF
2015.10.05 Updated > Network Device Development - Part 1: Switch
PDF
The Evolution of Async Programming (GZ TechParty C#)
PDF
Jscex:案例、阻碍、体会、展望
PDF
企业开发领域的语言特性
PDF
分布式版本管理
PDF
LINQ Inside
PPT
Ruby Past, Present, Future
初學R語言的60分鐘
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】
Advisor 介绍(详细版)
Network Device Development - Part 4: Firewall 103 ~ Protocol Filter & Payload...
Network Device Development - Part 5: Firewall 104 ~ Packet Splitter
2015.10.05 Updated > Network Device Development - Part 2: Firewall 101
常用Mac/Linux命令分享
IHaskell 快速入門
特留分扣減權之時效
不動產和贈與稅節稅規劃
淺談編譯器最佳化技術
跨平台開發從測試到架構
你的程式開發初體驗 (以Swift為例)
2015.10.05 Updated > Network Device Development - Part 1: Switch
The Evolution of Async Programming (GZ TechParty C#)
Jscex:案例、阻碍、体会、展望
企业开发领域的语言特性
分布式版本管理
LINQ Inside
Ruby Past, Present, Future
Ad

Similar to 計概:Programming Paradigm (20)

PDF
一拍一产品背后的故事(React实战)
PDF
Javascript primer plus
PDF
Build desktop app_by_xulrunner
PDF
程式人雜誌 -- 2015 年5月號
PDF
程式人雜誌 2015年五月
PPT
Java Script 引擎技术
KEY
Scala
PDF
105-2 iOS程式設計(二)
PPTX
Entity framework + Linq 介紹
PPTX
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
PDF
redux-observable with react-apollo
PPTX
Ecma script edition5-小试
PDF
Ruby Rails 老司機帶飛
PDF
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
PDF
J Ruby和Rails 让Ruby语言融入Java项目
PDF
Python系列4
PDF
千呼萬喚始出來的 Java SE 7
PPT
山頂洞人日記 - 回歸到最純樸的開發
PPT
信息系统开发平台OpenExpressApp
PPT
(宇宏)Talend工具說明
一拍一产品背后的故事(React实战)
Javascript primer plus
Build desktop app_by_xulrunner
程式人雜誌 -- 2015 年5月號
程式人雜誌 2015年五月
Java Script 引擎技术
Scala
105-2 iOS程式設計(二)
Entity framework + Linq 介紹
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
redux-observable with react-apollo
Ecma script edition5-小试
Ruby Rails 老司機帶飛
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
J Ruby和Rails 让Ruby语言融入Java项目
Python系列4
千呼萬喚始出來的 Java SE 7
山頂洞人日記 - 回歸到最純樸的開發
信息系统开发平台OpenExpressApp
(宇宏)Talend工具說明
Ad

More from Rex Yuan (14)

PDF
8/9 RLDM for Prosocial Behavior
PDF
圖文作業
PDF
A Brief Intro to Chatbot
PDF
A review of consumer brain computer interface devices
PDF
CSOP 第一週:上課簡報
PDF
Maximum Flow
PDF
Box Problem
PDF
Huffman Code Decoding
PDF
Longest Common Sequence Algorithm Analysis
PDF
Convex Hull Algorithm Analysis
PDF
計概:Programming Paradigm (Notes)
PDF
台灣大學聯盟第一學期
PDF
Word and Phrases: Improv Everywhere - Gotta Share
PDF
LinkedIn, the Serious Network 繁體中文版
8/9 RLDM for Prosocial Behavior
圖文作業
A Brief Intro to Chatbot
A review of consumer brain computer interface devices
CSOP 第一週:上課簡報
Maximum Flow
Box Problem
Huffman Code Decoding
Longest Common Sequence Algorithm Analysis
Convex Hull Algorithm Analysis
計概:Programming Paradigm (Notes)
台灣大學聯盟第一學期
Word and Phrases: Improv Everywhere - Gotta Share
LinkedIn, the Serious Network 繁體中文版

計概:Programming Paradigm