原來讀過 《Java 程式設計思想(第 4 版)》,但是這個版本還是基於 Java 5 講解。由於 Java 8 做出了非常大的改進(是 Java 變化最大的版本),且截止到 2022-07-22,Java 版本都更新到 18 了……原來那本書確實需要更新了。
原作者 Bruce Eckel
又重新出版了新書:《On Java 中文版 基礎卷》 和 《On Java 中文版 進階卷》。本位是對基礎卷的思維導圖筆記總結,略過了部分較為基礎的章節,並未完全詳盡書中所有知識點。
本文地址釋出在 https://github.com/LjyYano/Thinking_in_Java_MindMapping 上,GitHub 地址:連結,請在轉載時標明原文連結~
有幾個章節過於基礎,沒有放在思維導圖上:
我的語言之侷限,即我的世界之侷限。這句話不僅適用於我們日常讀寫的語言,也適用於程式語言。很微妙的一件事是,一門語言會悄然無息地引導你進入某種思維模式
,同時遠離其他思維模式。Java 尤其如此。
如果你瞭解一門語言的不足之處和侷限性,當你遇到某個語言特性不可用時,就不會被卡住,以致無法繼續。同時,因為你已經知曉其侷限性,所以就可以更好地進行程式設計。
Java 8 包含了許多基礎和重要的改進,而由於 Java 一直嚴格遵守自己的向後相容性承諾,做出這些改進無疑需要花費相當多的精力。
如果一開始就將你的專案「發展」成一個有機的、進化的生命體,而不是像建造玻璃牆的摩天大樓一樣進行一次性施工,你將獲得更大的成功和更直接的反饋。
相關連結:
工具已經越來越不像機器,而是越來越像思維的一部分。
所有程式語言都是一種抽象
。
如果我可以將問題從表象中抽取出來,那麼什麼樣的物件可以馬上解決我的問題呢?
相關連結:
任何抽象都應該由真正的需求來驅動。介面應該是在必要時用來重構的東西,而不是在任何地方都多加一個間接層級,進而帶來額外的複雜性。這種額外的複雜性影響很大,如果你讓某人在克服這種複雜性上花費時間,而他最終卻發現你新增介面只不過是為了「以防萬一」,而非出於什麼令人信服的其他理由,他就會質疑你做過的其他所有設計。
相關連結:
lambda 表示式和方法參照遠非完美,我們要永遠承受 Java 設計者在語言誕生初期的草率決定所導致的代價
。lambda 在 Java 並非一等公民。這並不意味著 Java 8 沒有大的改進,但確實意味著,像許多 Java 語法一樣,最終會有一個讓你感到不爽的臨界點。
相關連結:
相關連結:
例外處理的優點之一,就是它使得你可以在某處集中精力處理你要解決的問題,而在另一處處理你編寫程式碼產生的錯誤。
Java 堅定地強調將所有的錯誤都以異常形式報告的這一事實,正是它遠超過諸如 C++ 這類語言的長處之一。
相關連結:
在非常難用的檔案 I/O 程式設計存在多年之後,Java 終於簡化了讀寫檔案的基本操作。
相關連結:
相關連結:
在 Java 中,泛型是在這門語言釋出了幾乎 10 年後才引入的,所以向泛型的遷移問題是必須要考慮的,也對泛型的設計產生了很大沖擊。結果就是,作為程式設計師的你,將因為 Java 設計者在建立 1.0 版本時缺乏遠見而承受痛苦。
有些語言對引數化型別採用了更簡潔、影響更小的實現方法。不難想象,這樣一種語言有可能成為 Java 的接班人,因為它完全採用了 C++ 對待 C 的方式:站在巨人的肩膀上,並看得更遠。
在不少討論中能聽到這樣的聲音:「C++ 是一門設計拙劣的語言。」我則認為理解 C++ 和 Java 做出的各種決策有助於站在更高的位置看待問題。
如同任何人類語言一樣,Java 提供了一種表達概念的方式
。如果使用得當,隨著問題變得更龐大更復雜,這種表達工具將會比別的可供選擇的語言更為簡單、靈活。
曾幾何時,C++ 是程式語言界的「皇冠」,人們認為會永遠如此。很多人也這麼看 Java,但由於 JVM 的緣故,Java 已經使自己可以被輕而易舉地替換掉了。現在,任何人都可以建立一門新的語言,並在短時間內使其像 Java 一樣高效執行。但在以前,對於一門新的語言來說,大部分開發時間往往花在實現正確、高效的編譯器上。
在我寫作本書時,Java 是世界上首屈一指的程式語言。然而 Java 終將老去
,就像 C++ 那樣,衰退到只會在某些特殊場合用到(甚至只用於支援遺留程式碼,因為 Java 不如 C++ 和硬體結合那麼緊密)。但是 Java 無心插柳卻已蔚然成蔭的真正光輝之處是,它為自己的替代品創造了一條非常平坦的道路,即使 Java 本身已經到了無法再進化的地步。未來的所有語言都應該從中學習:要麼創造一種可以不斷重構的文化(如 Python 和 Ruby 做到的那樣),要麼讓競爭者可以茁壯成長。
由於思維導圖中的連結沒法截圖,按照先後順序貼在下面:
思維導圖是用億圖腦圖 MindMaster
製作的,之前重度使用了 Xmind 和 WPS,感覺還是億圖這個思維導圖軟體比較適合我。
本文 GitHub 地址:連結,後續的《On Java 進階卷》思維導圖也會發布在這裡。如果需要思維導圖原件,請在 GitHub 私信獲取~