【Paper Reading】Learning while Reading
Learning while Reading
不限於具體的書,只限於知識的寬度
這個系列集合了一周所學所看的精華,它們往往來自不只一本書
我們之所以將自然界分類,組織成各種概念,並按其分類,主要是因為我們是整個口語交流社會共同遵守的協定的參與者,這個協定以語言的形式固定下來。除非贊成這個協定中規定的有關語言信息的組織和分類,否則我們根本無法交談。
——Benjamin Lee Whorf
Learning and Asking
為什麽選擇面向對象?
機器語言、匯編語言、面向過程的語言,通過一層層地抽象,計算機語言已經足以與程序員和諧相處,作為各個專業幾乎必修的C語言以足以讓普
通的程序員理解並使用各種各樣的計算,那麽為什麽還需面向對象的語言呢?
遺憾的是,以C語言為代表的“命令式”語言仍對計算機的邏輯計算有較大的依賴,歸根結底,它仍然是為計算機設計的語言,只不過披上了一件更
討人喜歡的外套。而在我們實際用C編程時,仍然需要建立起機器模型和實際待解決問題的模型之間的關聯。
而面向對象的語言不同,它更像是為程序員量身打造的語言,通過把各個不同的事物當做對象,通過抽象的接口,大大減少了開發的工作量,所以
這是為程序員量身打造的語言。
為什麽選擇Java?
對於許多懵逼的初學者而言,與Java語言最像的恐怕就是C++了。究竟在Java與C++中如何選擇?在眾多面向對象的語言中如何選擇?
C++:C++的創立者認為效率是最重要的議題。因為對象都會占用一定的內存空間,那麽每一個對象的生命期(存在周期)如何把握?C++認為每
一位程序編寫者都清楚這一點,所以把及時釋放空間的重任放在了編程者的肩上。
Java:Java虛擬機認為這樣程序員的任務也太大了,代碼也將顯得冗長、繁雜,幹脆我幫他們幹完了事。就這樣,Java虛擬機根據每一個對象的
作用區域創立了垃圾回收制度。
C++的優勢:
1、在理想的情況下,緊湊的創立、回收會讓內存的使用達到最完美的境地。
2、C++在堆棧中創建的對象比Java在堆中創建的對象,銷毀更快。
Java的優勢:
1、當然C++的優勢也就是它的劣勢,每一位稍有經驗的程序員都知道因之而帶來的內存泄漏(即為一塊塊被遺忘釋放的內存)讓許多大型項目折戟沈沙。
2、當然程序員自己也能進行主動地垃圾回收。
3、虛擬機的幫助讓代碼顯得更加流暢、整潔,也很大地減小了程序員的負擔。
為什麽選擇容器?
由來:當你解決某個問題的時候,比如Web編程,你並不知道需要創建多少個對象(多少個用戶進行訪問),或者它們將存活多久(每個用戶的訪
問時間抑或是每個訪問動作的持續時間),這些信息只有在運行時才能獲得。
方法:定義一種新的數據類型(容器),這個類型可以放置其他數據類型的對象引用。
具體實現:
1、最開始的時候,容器存儲的對象都只具有Object類型,這意味著當將對象引用置入容器時,對象引用都會向上轉型為Obejct。
優:這樣的方法可以讓容器放置各種類型。
劣:這也失去了引用本身的身份,除非時刻保持謹慎,向下轉型將很容易導致錯誤。
2、引入參數化模型,也即範型,如:
ArrayList<Shape> shapes = new ArrayList<Shape>();
優:規避了向下轉型所耗費的資源和可能帶來的危險。
劣:可能相較於Python等語言的容器,顯得更加具體化。
為什麽選擇控制反轉(IoC)?
1、問題的產生與解決:
在我們平時編寫程序的時候,進入一個場景時,常常直接在場景中初始化一個實例,然後直接通過這個實例調用方法。
然而從以上的描述中可以發現,這個實例和場景文件耦合在了一起。但就像導演拍戲一樣,實例就像是一個具體的演員,而場景就像一個劇本,實際上
我們並不希望一個劇本和一個具體的演員有過多的聯系,因為演員之後還可以更改,而劇本一旦確定就最好不要動了,如何將實例從場景中分離出來,
像遙控板指揮電視一樣,通過僅僅在別處改變需要出演的人物,而讓劇本獨立開來,就是控制反轉思想的核心。
2、“控制反轉”反轉的是什麽?
從上面的例子我們可以看出,原先劇本控制著具體的實例地調用,而我們想抽出身來,把實例的調用權牢牢握在自己的手裏。用一個更直接明了的名詞
來說明IoC就是依賴註入(DI),即調用類對某一接口實現類的依賴關系由第三方(容器或協作類)註入,以移除調用類對某一接口實現類的依賴。
3、形象而具體的講解說明
科幻經典《黑客帝國》家喻戶曉,而最後一幕尼奧獻身保護錫安更是讓人難忘。我們雖知道最終扮演尼奧的人是李維斯,但我們仍希望在必要時作為導
演的身份進行替換,而這與具體的劇本無關。
如果在以前是這樣:
既然要掌握主動權,可以迂回達到目的:
本周就到此為止,博主最近在學習Spring框架,之後將對資料進行整理,以惠及更多的初學者。
【Paper Reading】Learning while Reading