1. 程式人生 > >【Paper Reading】Learning while Reading

【Paper Reading】Learning while Reading

協作 每一個 info ++ 平時 arr 向上 移除 否則

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