讀《松本行弘的程式世界》啟發頗多
早上不到10點就收到圖靈的贈書《松本行弘的程式世界》,抑制不住的得意就展現在臉上,翻開書當然就是一陣書香,又一次抑制不住笑容。非常的開心。
由於昨天去北醫三院拔牙,就背上了它,地鐵上就開始讀,當然醫院候診、公交回家也一直在看松本,看完了前兩章。用一句話形容看完的感受:激情澎湃。終於發現CSDN蔣濤為什麼推薦把前兩章公佈電子版,因為真的是極具價值。忍不住將我在拜讀時的啟發與不解與大家分享。
我將圍繞下面幾點講述:
- code for fun
- 物件導向的起源
- 物件導向的三大特徵
- 多繼承
- 物件的模板=類
- 動態語言與靜態語言的區別
code for fun
在松本的書出來之前,就總聽說ruby是為開發人員開發的語言,序中範凱也再次確認了這一點。“code for fun”給我的印象頗深,俗話說“工欲善其事必先利其器”,我們是不是正需要這樣一個“利器”呢。不管你們需不需要,反正我是喜歡這個初衷。我們不能再為計算機做“看門狗”,我們要翻身做主人。
物件導向的起源
自認為是物件導向粉絲的人,卻一直使用面嚮物件語言寫著程式導向化程式,更可笑的是都不知道物件導向設計方法何時被提出來的,書中提到物件導向設計方法是20世紀60年代後期,在瑞典的Simula程式語言中最早開始使用的。以前只是對Smalltalk有點點印象,卻不知道它也是在Simula啟發下的早期物件導向程式語言。物件導向博大精深啊,繼續修煉。
物件導向的三大特徵
在此之前也知道物件導向的三大特徵:封裝、繼承、多型。卻不知道抽象與封裝是一回事兒(這句可能是我的誤解,如果是,請指出)。
書中說物件導向的三大特徵是:繼承、多型、資料抽象,所以我將這裡的“資料抽象”就理解成抽象,後文中也解釋其實這裡的“資料抽象”其實就是封裝。最終我就得出結論:資料抽象與封裝是一回事兒。只是叫法不同罷了。
之前有人和我說,物件導向的特徵為:繼承、多型、封裝和抽象。一直沒搞清楚為何要將抽象放到這裡面,如今恍然大悟,很可能是他理解錯了。應該這樣描述:物件導向的特徵為繼承、多型、封裝,有時封裝也叫抽象。
當然,我在李鬆峰老師發關於松本精彩評論裡面也說了是四個。現在我正式收回那個錯誤的言論。
多繼承
多繼承是個讓人又愛又恨的東西,物件導向中比不可少的概念,卻又會帶來令人困擾的東西。
在大學裡面就灌輸了一種多繼承眾多不利的思想,比如:造成父類順序無法確定,同名方法等問題。讀松本中,有一句話將我點醒,大意是這樣:如果使用得當,多繼承不會造成關係混亂。大家不妨仔細回味一下,身邊類似的事情是不是很多!比如好多人說Hibernate的效率很低,那是不是也可以說因為使用方法不得當才造成了它的效率問題。當然這種相對於底層的東西處理、轉化過程頗多,自然會影響效率,要看它本身要解決的是什麼問題。
由於多繼承有其存在的價值,就避免不了的要去通過各種策略去實現多繼承。然後提到Java中的介面的引入就是為了解決多繼承的問題。這個我不否認,介面的確解決了Java中的多繼承問題,但是介面引入的初衷是不是要解決多繼承的問題呢?現在看來介面的作用遠遠超出瞭解決多繼承問題,比如:將宣告與實現解耦等。同樣,我在李鬆峰的關於松本精彩評論中也提到這個問題。至今我都不確定Java中引入介面的初衷到底是什麼,也請權威人士予以解答。
物件的模板=類
對於“物件的模板=類”這個觀點,我非常支援,形容的恰到好處。以前的理解是:Class是型別,物件是型別的一個例項。不是說理解錯誤,而是顯得很生硬。喜歡這個。
類就好像是做果凍的模子,而物件就是不同口味的果凍。
動態語言與靜態語言的區別
大家也總會聽到動態語言和靜態語言吧,動態語言比如:Ruby、Python等,靜態語言比如:Java、C#等。但是你知道他們之間的區別嗎?反正我現在才知道。
動態型別語言:動態型別語言是指在執行期間才去做資料型別檢查的語言。
靜態型別語言:靜態型別語言與動態型別語言剛好相反,它的資料型別是在編譯其間檢查的。
以上就是我讀《松本行弘的程式世界》前2章的一點感悟,如果你也有感悟何不記錄在這裡呢!
相關文章
- 《松本行弘的程式世界》樣章讀後感
- 讀讀《松本行弘的程式世界》,儘管是Ruby語言
- 《松本行弘的程式世界》精彩書摘
- 《松本行弘的程式世界》推薦序
- 徵集與松本行弘訪談話題——走進松本行弘的程式世界
- 《松本行弘的程式世界》 - 不一樣的Ruby程式世界
- Matz的程式世界遊記--評《松本行弘的程式世界》
- 帶您走進松本行弘的程式世界
- 《松本行弘的程式世界》贈書活動通知
- 認識《松本行弘的程式世界》這本書
- Ruby中的設計模式——《松本行弘的程式世界》設計模式
- 《松本行弘的程式世界》中文版原作者序
- 圖靈教育帶您走進松本行弘的程式世界圖靈
- 《松本行弘的程式世界》讀書筆記(上)——物件導向、程式塊、設計模式、ajax筆記物件設計模式
- 松本行弘:程式碼的未來
- 《松本行弘的程式世界》讀書筆記(下)——文字編碼、整數、浮點小數筆記
- 松本行弘為什麼要開發Ruby
- 松本行弘:程式碼的未來(圖靈訪談)圖靈
- 來自松本行弘的技術剖析
- 松本行弘:我為什麼要開發新語言Streem(上)
- Ruby之父松本行弘(Matz)評論《黑客與畫家》黑客
- [視訊]圖靈訪談系列之四:松本行弘談Ruby圖靈
- 未來這五年,軟體工程師如何安身立命? (下) ——Ruby之父松本行弘談《程式碼的未來》軟體工程工程師
- 未來這五年,軟體工程師如何安身立命? (上) ——Ruby之父松本行弘談《程式碼的未來》軟體工程工程師
- 頗具藝術感的程式碼
- Ruby之父松本行弘:自主性、決定權和屬於自己的思考(圖靈訪談)圖靈
- 開啟神秘程式設計世界的大門程式設計
- “敏捷落地”方面的企業內訓舉行,感悟頗多!敏捷
- 谷歌提前展示Android 7.0預覽版 最佳化頗多谷歌Android
- 2015讀書學習之路[蒼松]
- 黑客+馬拉松=? 黑客馬拉松?黑客
- PHP程式碼分享:開啟多程式PHP
- 原來,這才是開發者開啟世界讀書日的正確姿勢!
- 《新美妙世界》開發團隊訪談:「開啟一段全新的《美妙世界》之旅」
- 暴雪正開發多個《魔獸世界》免費手遊
- 程式設計師健身之馬拉松篇程式設計師
- 讀“css世界”筆記CSS筆記
- 一個頗有意思的SQL語句SQL