經常見罈子裡有人問,學習java該如何入手,或者是該學java還是學XX語言。
我一直覺得,編程跟語言關係不大,重點是要有解決問題的思路。
學習一門語言,其實只是尋求如何將編程的思路落地。
學習軟體開發,可能還是先從原理入手比較好,很多人喜歡例子,
但我覺得例子所能提供的資訊雖然直觀,但也非常有限。
而且通過例子入手學習,由於例子先入為主,可能會帶來一個後果:
限制了對一種技術手段的靈活運用。
這種限制,會導致學習者無法充分發揮某項技術的優勢,
也可能使他無法在技術和要解決的問題之間做出最好的匹配。
所以,我說,用自己會的東西去解決所有問題,還是基於問題去尋找適用的技術,
應該是能力高與低的重要差異。
什麼是原理?
以武俠小說為例,
高手都是內外兼修,而且往往先通過各種方式積累了深厚的內力,
有此基礎,在修鍊精妙招式的時候,才能達到事半功倍的效果。
那麼,內功修為是激發人體潛能的原理,而招式則是一種技能,
招式是容易傳承和模仿的,可以速成,但內功修為則沒有取巧的可能性。
那麼在編程學習過程,什麼可以看作原理?
以很多人曾問過的,將來必定還會有更多人問的“多線程聊天代碼”為例,
我認為其中可以看作原理的知識點有:
線程(進程)的同步與互斥模型,
TCP/IP通訊協定
進程式控制制方面,電腦科班出身的兄弟們應該知道,進程的同步與互斥是在作業系統中學習的,而不是在哪門程式設計語言中學到,
java有自己的線程式控制制機制,c++也有,但他們的原理是相通的。
而TCP/IP協議,可能會引起爭議,有人會覺得學這個沒有實用價值。
的確,現代語言對底層通訊封裝的非常好,但我覺得還是有必要瞭解TCP/IP中的IP/UDP/TCP這三層的工作原理,
平常沒用,可一旦出現問題,這些知識才是解決問題的根本。
再說兩句現在的J2EE,
我覺得學習J2EE,最先要看的就是SUN官方的tutorial,必須理解J2EE的架構,
並至少瞭解jsp、servlet在J2EE架構中的位置、作用和工作方式。
J2EE架構,可以認為是現在所有J2EE相關架構、容器、工具的核心原理。
--------------------
一篇文章難以承載太多內容,我今後要陸續發帖,表達我的看法,
主要是關於軟體開發學習過程、軟體開發過程本身、我對自己所掌握的技術的看法,
以及軟體開發過程中的非技術因素(主要是人的因素)。
這是我從業10年的一份總結,以證明我這10年沒有白混,
也是我未來五年的一個新起點。
無論您有什麼想法、看法,只要是善意的,歡迎您與我討論、辯論。
如果這一系列的文章能夠幫到某些人,我也會非常開心。