顯示具有 oop 標籤的文章。 顯示所有文章
顯示具有 oop 標籤的文章。 顯示所有文章

2021年12月25日 星期六

考古:再訪物件導向


Simula 的兩位創造者 (source)



呃,這份投影片已經是七年前做的了 ... 真是充滿著資訊量與中二

近幾個月同事們進行著一個名為「再想一下」,每週半小時的公司內部技術分享會,討論的講題從 CSS Tricks、React 18、H264 ... 到這兩週都在討論 Monad 跟 Y Combinator(我到底聽了什麼 😨),其中有前端同事寫了幾篇初探 Python OOP 的文章,引起了許多討論,也勾起了我當年考古 OO 的回憶,於是便翻出了這份投影片,並且再稍微考古一下。

依稀記得最初的物件導向,其實是希望每個物件就像 micro computer 般能夠自動運作,然後透過建立成千上萬的物件,讓他們自動進行互動,就能夠(爽快地)完成任務。在這次的考古過程中,很幸運地發現了這篇寫於 2019 的優質考古文:OOP Before OOP with Simula。(點了連結以後,不回來繼續看本文也無所謂了)

當年的考古,我著重在「原來五六十年前就已經有物件導向的概念」、「看看這些語法跟現在根本沒差多少」、「噢噢,古早的人在寫程式解這些問題(核子反應爐模擬)」,雖然想要快速掌握 OO 發展的脈絡,在有限的時間與經驗之下,也只能看一些簡略的介紹,或是去設法咀嚼一些指標人物說過的話,當下並不真的全然理解。

再次的考古,由於已經有了以前(殘缺)的大局觀,所以已經不再需要迫切地看很多東西,可以細看自己覺得有興趣的一小部分就好。對於 Simula 來講,我覺得有體悟的是「simulation」這一個 context,在需要做 simulation 的情況下,你會怎麼去設計一個程式語言或者說是框架,來協助你執行任務?根據 Simula 的創造者 Ole-Johan Dahl (OJD) 的 The Birth of Object Orientation: the Simula Languages 一文,有提到許多有趣的事情:
  • 其實 Simula 的另一位創造者  Kristen Nygaard (KN) 當年在 Simula Project 時負責的事情比較偏向 operation research,且他也是蒙地卡羅演算法的發明人,這很有「simulation」的味道對吧!這也是他創造新語言的動機
  • 語言的設計跟實作主要是 OJD 負責的
  • 他們發表了兩版 Simula:Simula I 與 Simula 67。前者為 simulation 與教學用途,後者其實已經希望是 general purpose 的 language
  • Simula I 就已經有類似 co-routine 的概念以協助做模擬

從現在的角度來看,SImula 67 已經非常的物件導向了。它具有的特性我也無須贅述,我比較在意的是 Simula I 作為一個模擬器語言的完成度,以及他能夠如何優雅地完成任務。我認為 OOP Before OOP with Simula 這篇文章作者給的 例子 很好,就簡單定義了這些物件,然後建立後就讓他們自己去跑。這似乎解釋了為什麼我會對 OO 有印象是「一個一個的 micro computers」😼

近年工作下來,我發現我對 OO 設計的關注度下降非常多,因為怎麼弄好 dependency、怎麼分離關注點、怎麼測試、怎麼封裝抽象概念、如何設計演算法、如何決定服務架構、如何維運系統 ...,依據外部商業需求及內部產品技術發展需求,把一些基本 concerns 處理好並且配合願意改進的心態,其實程式寫起來就往往夠好了。

就這樣,如果近年有 OO 方面必讀的好書,或是值得 follow 的觀念,也歡迎大家推薦給我 ✋

難道下一篇是再訪 Haskell 嗎 XDDDD



2014年9月27日 星期六

活動:Tainan.py x MOSUT x FP 2014 9 月聚會

會眾正在專心聽 wen 分享!


淺談 Debian 套件打包

講者為好久不見的  wen
wen 透過分享自己嘗試打包的經驗,想要吊出 hychen 過來蒞臨指導 XD
不過很可惜 hychen 有事情沒有到場 Orz






C & CPU

講者為現居台北特地過來分享的 fea
這場分享的強度 ... 呃 ... 非常非常的強大(本魯已陣亡)
硬派男子漢請自取(誠如 fea 所言,其實某些角度來講這算軟)





OO x Python

標題詐欺!講者是我!
內容其實是講一點點你很有可能沒聽過的 OO 的故事,以及工商服務 Python





另外由於此次聚會是第一次  x FP
所以演講過程我有提到一些有趣的資料(但是我講得不有趣 Orz)

On the criteria to be used in decomposing systems into modules
重量級歷史名作,不單對 OO ,對 FP 也有重大影響

Why Functional Programming Matters (中文翻譯)
從未真正學習過 FP 的我,看完這篇才覺得有入門的感覺

The Early History of Smalltalk
對 OO 歷史有興趣可以一讀,讀完請至 MOSUT 社群分享
以下為摘錄的一小段話:

For the first time I thought of the whole as the entire computer and wondered why anyone would want to divide it up into weaker things called data structures and procedures.Why not divide it up into little computers, as time sharing was starting to? But not in dozens. Why not thousands of them, each simulating a useful structure?

我本來很想對 FP 能有摘要性的介紹,無奈對其道行實在太淺
後來仔細想想,本次聚會我連對 OO 摘要性的介紹都做不到
只能挖出一點歷史,看能不能讓大家想想 OO 在幹嘛 ....
等等,我認識台南有在寫 FP 的 hychen / sam 怎麼都沒有來 XD?

SICP Metacircular Evaluator

- 用 scheme 來寫出一個 scheme


講者為超久不見的 descent
近期他正在研究 SICP,寫了一系列的文章放在他的 部落格
由於時間有限,本次聚會他只有講完 part1...


對 SICP 課程有興趣可到此 MIT OCW 的 網頁 瞧瞧


工商服務

- 自由軟體開發與社群發展

本次聚會成大資工的楊老師亦到場參加
並且宣傳了他在系上開設的課程


成大有這個課真好啊~



事實上,這次聚會前一天
我心甘情願地到該課程去介紹 MOSUT 與 Tainan.py 的聚會
呃 ... 如果您是在學學生,不妨可以瞧瞧這份投影片