65
OO x Python 你可能不認識的 OOP Joe @ Tainan.py x MOSUT 2014.09.27

OO x Python @ Tainan.py x MOSUT x FP 2014.09.27

Embed Size (px)

DESCRIPTION

徵稿中! MOSUT: https://www.facebook.com/groups/mosut/ Tainan.py: http://www.meetup.com/Tainan-py-Python-Tainan-User-Group/

Citation preview

Page 1: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

OO x Python你可能不認識的 OOP

Joe @ Tainan.py x MOSUT 2014.09.27

Page 2: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

x

We are:

@

Page 3: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

O OObject Oriented (物件導向)

# 這個講題超⼤大

Page 4: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

O.O?Object Oriented (物件導向)

# 今天將透過⼀一連串的 QA 來討論 OO

Page 5: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

來⾃自何⽅方OO 這個概念是怎麼產⽣生的

# 有⼈人知道嗎?

Q1

Page 6: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

物件導向 … 這個嘛去看⾺馬克斯的唯物論

來⾃自建築領域 去看 notes on the synthesis of form

只是⼈人類對事物概念模型的類推,會發展出很正常 …

# 無標準答案

有⼈人這樣說

Page 7: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

何時現蹤第⼀一個 OO 程式語⾔言什麼時候出現?

# 10 年前? 20 年? 去年?

Q2

Page 8: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 9: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

何時⼜又現蹤第⼆二個 OO 程式語⾔言什麼時候出現?

# 10 年前? 20 年? 去年

Q3

Page 10: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

# 也有⼈人認為他才是第⼀一個「真正」的 OO 語⾔言

Page 11: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

何時⼜又+現蹤第 N 個 OO 程式語⾔言什麼時候出現?

# 被揍飛

Q4

Page 12: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

C++ 1983

Python 1991

Java 1995

Ruby 1995

# 這裡只摘錄部分的 OO 語⾔言

Page 13: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

何謂 OO定義你⾃自⼰己的版本看看

# 想 30 秒

Q5

Page 14: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

C++

Python

Java

Ruby

# 這裡只詢問部分的 OO 語⾔言

Page 15: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

Alan Curtis Kay

• OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.

# Smalltalk 發明⼈人

Page 16: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

也有⼈人這麼說

Page 17: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

然後被打臉 XD

Page 18: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 19: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

眾說紛紜每個⼈人的切⼊入點都不⼀一樣

# Why

Page 20: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

⾒見樹不⾒見林X ⼤大資⼯工

# 對

Page 21: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

C++

Python

Java

Ruby

# 數⺫⽬目多寡不代表任何意義

Page 22: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

⾒見葉不⾒見樹X ⼤大資⼯工

# 對

Page 23: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

C++

# 你點了幾葉的技能點數

Page 24: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

如何⾒見林難

# 如果你想要的話 …

Q6

Page 25: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

學術⾓角度

Page 26: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

考試⾓角度

# 要注意 side-effect

Page 27: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

課程⾓角度

# 看⼀一下 Telecom SubParis 的課程好惹

Courses: ⾯面向對象技術⾼高級課程 (北京⼤大學 @ Coursera) https://www.coursera.org/course/aoo # 參考資料全部都有簡體翻譯本 or 有簡中書籍

Introduction to EE and CS (MIT OPEN COURSEWARE) Unit 1-1 Object-Oriented Programming http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-01sc-introduction-to-electrical-engineering-and-computer-science-i-spring-2011/unit-1-software-engineering/object-oriented-programming/ # 對,物件導向只是課程中的⼀一個⼩小單元

Object Oriented Development (Telecom SubParis) http://www-public.it-sudparis.eu/~gibson/Teaching/CSC7322/ # 參考資料極為廣泛⽽而深⼊入

物件導向程式設計 (台灣交通⼤大學開放課程 - 電機系⼤大⼀一) http://ocw.nctu.edu.tw/course_detail_4.php?bgid=8&gid=0&nid=343#.VB--zpOSw_M # 參考資料乍看就是⼀一本書 (c++)

物件導向軟體⼯工程(成⼤大資⼯工研究所) http://casd.csie.ncku.edu.tw/Object-Oriented_Software_Engineering.html # 參考資料為 http://www.amazon.com/Object-Oriented-Software-Engineering-Practical-Development/dp/0077109082 (java)

其他: 國內少數應數、⼯工科、電機 … 及教育訓練機構可能有開課

MOOCs 列表: https://www.facebook.com/notes/courseramoocs-%E5%90%8C%E5%AD%B8%E6%9C%83/moocs%E5%AD%B8%E7%BF%92%E8%B3%87%E6%BA%90/533988876640975 # OO 的課程其實沒有⾮非常多

Page 28: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

⾒見樹國內課程以⾒見樹居多

# C++ or Java

Page 29: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

不⾒見嚴格來講國內沒什麼課程 or 開在研究所

# x ⼤大資⼯工

Page 30: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

幹嘛今天

# ????

Q7

Page 31: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

⾒見葉神⽊木之葉

# 請愛⽤用英⽂文版 wiki

Page 32: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 33: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

# Object-oriented programming: challenges for the next fifty years

Page 34: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

# Object-oriented programming: challenges for the next fifty years

Page 35: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

Simulaobject, class, inheritance, virtual method, coroutine,

discrete event simulation, garbage collection

# 看 wiki 上的扣

Simula was influential in the development of Smalltalk[65] and later object-oriented programming languages[66]. It also helped inspire the actor model[67] of concurrent

computation although Simula only supports co-routines[68] and not true concurrency[69].

Page 36: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 37: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 38: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 39: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

⾒見葉神⽊木之葉

# 第⼆二棵

Page 40: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 41: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

# The Early History of Smalltalk

Page 42: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

Smalltalk強

Page 44: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 45: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 46: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 47: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 48: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 49: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
Page 50: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

http://pharo.org/

# 酷

Q8

看得懂嗎 XD

Page 51: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

對Q9

還是沒有告訴我 OO 是什麼?

Page 52: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

–上半場摘要

「今天透過不告訴你 OO 是什麼,以告訴你其實可以從很多⾯面向看待 OO。」

Page 53: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

–下半場摘要

「就只是⼯工商服務 Python」

Page 54: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

since 1991

Page 55: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

Multi-paradigm• OO

• imperative

• procedural

• functional

• reflective

Page 56: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

Zen

Page 57: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

TIOBE index

Page 58: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

• 優雅⽽而有核⼼心價值

• 可寫/讀性⾼高

• 強型別、動態定型

• ⽀支援多種 programming paradigms

• 有廣⼤大第三⽅方套件

• 跨平台⽽而廣泛被應⽤用在各個領域

• 聽說最近吸引很多 data scientist 跳進來

Python

Page 59: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

從何學起官網、線上課程、網路教學

# 如果英⽂文不錯、閱讀能⼒力強 … 可以

Page 60: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

# 族繁不及備載,請搜尋 MOOc python

Page 61: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

揪團學習法加⼊入社群

Page 62: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

http://wiki.python.org.tw/

Page 63: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

One more thing江湖傳聞

Page 64: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

PyCon APAC/Python (South) Taiwan

敬請期待

Page 65: OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27

Thanks歡迎發問

# 橋 10 ⽉月份聚會時間? 10/18 成⼤大?