不輟集

軟件設計模式·復用·變化

最近讀了《設計模式: 可復用面向對象軟件的基礎》(Design Patterns: Elements of Reusable Object-Oriented Software)一書,由埃里克·伽瑪(Erich Gamma)等著。此書英文版於 1995 年始發行。中文版我看的是機械工業出版社的版本(該出版社翻譯的書籍向來是詰屈聱牙的,這次也不例外)。該出版社於 2000 發行第一版,2019 年又發行了典藏版。本人借閱的正是這典藏版。

此書討論的主題是如何構建可復用的面向對象軟件,並引出 23 種設計模式。

本人閱讀此書後,結合自己以往設計的經驗作是文,發表自己的一些體悟。

什麼是設計模式

追本溯源,設計模式的概念是源自建築學的,特別是模式語言之父克里斯托弗·亞歷山大(Christopher Alexander)思想。他在1977年出版的 A Pattern Language 這樣說道:每一個模式描述了一個在我們身邊不斷發生的重複的問題以及該問題的解決方案的核心。

接續讀落

軟件架構與康德的哲學理論

最近讀了一篇名爲 Foundations for the Study of Software Architecture 的論文。它是由 AT&T 公司的 Dewayne E. Perry 和卡羅拉大學的 Alexander L. Wolf 於 1992 聯合署名發表。

這篇論文不得了,光看名字就覺得很重要,這可是研究軟件架構的基石啊。文中提出了一個重要的軟件架構模型,即:

Software Architecture = { Elements, Form, Rationale }

翻譯過來就是:

軟件架構 = { 元素, 形式, 理論依據 } 

Perry 和 Wolf 如何得出該模型呢?

接續讀落

觀電影《飛越瘋人院》後的一點思考

電影《飛越瘋人院》(One Flew Over the Cuckoo’s Nest)是基於 1962 年肯·克西(Ken Kesey)的同名小說改編,1975年上映,並獲得當年的第48屆奧斯卡五項大獎。男主角是藍道爾·麥克莫菲(Randle McMurphy),由傑克·尼克爾森(Jack Nicholson)扮演,女主角是護士拉契特(Ratched),由路易斯·弗萊徹(Louise Fletcher)扮演。

麥克莫菲是一個罪犯,很好鬥,還曾經強姦了 15歲的少女,入獄後為了擺脫勞改,申請去了精神病院。在病院裏面,他發現只有少數人是跟他一樣是罪犯,而大多數居然是自願進來的。這令他很不解,明明他們都抱怨病院的不好,為什麼還不離開呢。

接續讀落

《純粹理性批判》閱讀筆記一:導言

《純粹理性批判》是德國哲學家康德(Kant)於1781年寫的(1787年再版),在世界上影響深遠,與他寫的另外兩本《實踐理性批判》和《判斷力批判》合稱三大批判。

《純粹理性批判》出版後,頭幾年根本沒人讀懂,因為這本書實在太枯燥無味了,甚至還被誤讀。即使是現在,要讀懂這本書也不是件容易的事。本人閱讀的是商務印書館2011年出版的《漢譯世界學術名著叢書:純粹理性批判》,藍公武譯著。譯文頗有古意,非常簡練,需要慢慢讀、重複讀,不然很容易陷入迷霧。

本書探討的核心問題是先天綜合命題如何可能,又可分為四個問題:

  1. 純粹數學如何可能?
  2. 純粹自然科學如何可能?
  3. 視為自然傾向的玄學(形而上學)如何可能?
  4. 視為學問的玄學(形而上學)如何可能?

接續讀落

Go內存模型

本文講述在何種情況下,一個協程(goroutine)中寫入的變量值可被另一個協程中觀察到。

先發生(happens before)

讓我們來理清下時間的發生順序。

如果事件 e1在事件 e2 之前發生,那麼事件 e2 在事件 e1 之後發生。同樣,如果 e1 既不在事件 e2 之前也不在 e2 之後發生,那麼事件 e1 和 e2 同時發生。

接續讀落