1. 程式人生 > >讀書筆記第四周《松本行弘的程序世界》

讀書筆記第四周《松本行弘的程序世界》

簡潔 eth 對數 程序 mage blog 相似性 自己的 做出

讀書筆記第四周

《松本行弘的程序世界》

?? 這本書講述了Ruby之父松本行動弘站在一個程序語言的設計者角度,分析了當今各種流行的編程語言的特點,以及他是如何在Ruby語言中權衡取舍的,讀這樣一本書,回過頭來看各種編程語言時候油然而生一種高屋建瓴的感覺。 主要看了面向對象與設計模式兩章。

面向對象

?? 書中為我們展示了隨著計算機行性能的提升,以及人們都快速開發大型軟件的渴望,使得編程語言從面向過程逐漸向面向對象演變。一直以來大家面向對象都有著自己的理解,作者也闡述了他對於面向對象的理解,並對面向對象的語言的特性進行了解讀。
?? 首先是多態特性,松本認為多態是面向對象技術的最重要的一個概念。因為它使得程序員只需要關註我們要處理什麽,而不是怎麽去處理。這樣在引進新的數據時,只需要簡單的追加,而不是修改原有的代碼,使得程序可擴展性大大提升。
?? 為了對抗數據復雜性,數據抽象化應運而生,。因為數據類型的增多,使得分別管理程序處理內容與處理數據對象的復雜性越來越高,因為我們要時刻註意數據與處理方法的一致性。因此便想到將數據與處理方法結合在一起,這樣即使對數據基礎的操作有改動,在外部通過這些操作寫的代碼卻不需要改動。這樣我們處理的就不再是簡單的數據,而是一些具有自身動作的一些現實物體的抽象,面向對象編程由此得名。
?? 隨著我們抽象出的類越來越多,復雜度依舊很大,隨之我們發現這其中其實有很多具有相似性質的類。我們便把相同的特性提取出來,稱為父類,不同的特性便利用繼承重載來體現。文中關於多重繼承與單一繼承的討論讓我受益匪淺,其對各自的利弊做了詳細的講述,主要考慮到多態繼承用的不好容易讓類之間的關系變得錯綜復雜以及可能帶來的內容沖突,但是單一繼承會導致同時具有兩個類特性時必然有一個類的特性無法繼承導致必須復制部分代碼,Ruby提出max—in模塊,將相同的寫到模塊中,在具有此模塊特性的類直接進行繼承,從而實現共通。與此同時,限制max-in模塊不能實例化也不能繼承普通類,使得類的關系依舊保持著樹狀,可以說十分巧妙的實現了多重繼承。

技術分享圖片

   之後講到動態類型與面向對象思想緊密的聯系,可以說面向對象的思想極大的促進了動態類型的發展,雖然靜態類型具有在編譯的時候就能看到類型不匹配,以及可以讓編譯器進行優化的優勢,但是動態類型可以讓代碼變得更加簡潔(因為舍棄了類型定義語句,同時也獲得了強大的適應類型變化的能力,即如果開發過程中發現類型定義不當,不必更改所有關聯的代碼。

設計模式

?? 假如把數據構造抽象化,就出現了抽象數據類型,把抽象數據類型中共同的部分抽象出來,就產生了繼承的工具,那麽將軟件實現抽象化,就產生了設計模式。因為我們在實現一個系統中,如何設計我們需要的類其實是一件十分困難的事情,但是有了設計模式的概念,我們就可以將過去優秀的人的設計模式借鑒一下,就可以做出優秀的設計。
?? 作者為我們介紹了利用Ruby的delegate庫簡潔的實現了Proxy模式,以及如何實現Template Method,Observer模式等,無奈自己實際項目經驗太少,無法完全理解,對Ruby語言不算熟悉,例子也無法體會到妙處,決定留到以後再重看一遍。

  

讀書筆記第四周《松本行弘的程序世界》