《Java編程思想》是一本好書,但同時也是晦澀難懂,其一是知識本身的難度,其二這本書是翻譯過來的,而且是直譯。我也是嘗試了好多次才又拿起了這本書啃,沒想到今天突然感覺發現了寶藏。 接下來我就羅列一下今晚的收穫吧: Sun對Java的設計目標:為程式員減少複雜性。(雖然Sun被收購了,還是謝謝Sun, ...
《Java編程思想》是一本好書,但同時也是晦澀難懂,其一是知識本身的難度,其二這本書是翻譯過來的,而且是直譯。我也是嘗試了好多次才又拿起了這本書啃,沒想到今天突然感覺發現了寶藏。
接下來我就羅列一下今晚的收穫吧:
Sun對Java的設計目標:為程式員減少複雜性。(雖然Sun被收購了,還是謝謝Sun,註意,這裡說的不是減少程式的複雜性,而是減少程式員寫代碼的複雜性,Java面向對象的思想毫無疑問解放了編程的生產力,打個比方,Sun負責留守大本營,程式員們利用Java大殺四方)
”人們所能解決問題的複雜性取決於抽象的類型和質量“,這是結論,接下來就聊到抽象機制的問題了。
舉起了一個慄子:
- 彙編語言是對底層機器的抽象
- Basic,C是對彙編語言的抽象
接下來,重點來了:
但它們的抽象都是基於電腦的結構去解決問題,而不是基於所要解決的問題去考慮。
面向過程的特點的本質是啥?是基於電腦的結構解決問題!!!
在面向過程的情況下,程式員需要在機器模型和待解決問題模型之間建立關聯。(當然,這種方式是非常困難的)
在面向過程到面向對象的路上,前人們做了哪些努力呢?
- LISP:所有問題都是列表
- APL:所有問題都是演算法
- Prolog:所有問題都是決策鏈
問題:針對特定領域都是不錯的解決方案,但其通用性太弱,無法脫離領域限制。
面向對象來了,核心思想:所有問題都是對象!!!(對象具有狀態和操作,也就是特性和行為,更專業,更熟悉的說法:屬性和方法)
一句話說明面向過程和麵向對象的區別???
面向過程基於電腦的結構解決問題,面向對象基於問題本身(基於問題本身:將問題抽象為對象)解決問題。