關(guān)于JAVA學(xué)習(xí)的幾點(diǎn)看法(轉(zhuǎn))
要成為JAVA程序員,用三個(gè)月的時(shí)間.要成為J2EE高手,用一年的時(shí)間.
要成為JAVA技術(shù)應(yīng)用專家,用三年的時(shí)間,其中兩年去學(xué)習(xí)C/C++
現(xiàn)在我再次想說這樣的話,如果你從來沒有學(xué)過C/C++,那么我說一個(gè)JAVA技術(shù),你可能永遠(yuǎn)也不可能真正的理解它的真正的意義:
方法參數(shù)中JAVA的對(duì)象是如何傳遞的?
真實(shí)的情況是傳遞"引用的值",如果你不了解C/C++,你是無法理解這句話的.你只能看別人的書上說什么你就記得什么,而實(shí)際如何,你根本不懂.
這就是為什么要理解底層架構(gòu),協(xié)議.不了解你可能在一個(gè)公司混得很好,一個(gè)學(xué)習(xí)三個(gè)月JSP的人混一個(gè)工作是完全可以的,整天做一些ctrl+c,ctrl+v的工作,可以滿足一般的"開發(fā)",但你永遠(yuǎn)不會(huì)成為了一軟件架構(gòu)師,你無法知道100萬用戶和30用戶的應(yīng)用之間如何設(shè)計(jì)不同的架構(gòu),你會(huì)以為在你的PC機(jī)上寫出一個(gè)BBS DEMO就可以拿去支持100萬用戶的應(yīng)用.
記得有一句話叫"把一件事做到極致",從一個(gè)JAVA程序員,到現(xiàn)在寫作業(yè)系統(tǒng)引導(dǎo)程序和驅(qū)動(dòng)程序,我并不會(huì)做和個(gè)方面的開發(fā)工作,但我覺得這是必須的.只有了解每個(gè)bit的產(chǎn)生源泉,你才能對(duì)你的應(yīng)用有100%的把握.
一個(gè)真正的軟件人,不在于你掌握了什么技術(shù),而在于你對(duì)軟件的認(rèn)識(shí),和認(rèn)識(shí)過程.
我把認(rèn)識(shí)過程作為軟件認(rèn)識(shí)或者叫軟件知識(shí)的一部份.是以我的經(jīng)驗(yàn)來說,認(rèn)識(shí)過程是一個(gè)非常重要的部分,或許它比軟件知識(shí)更重要.一個(gè)軟件人對(duì)軟件認(rèn)識(shí)的過程,主要反映在兩個(gè)方面:
認(rèn)識(shí)軟件知識(shí)體系的方法.
認(rèn)識(shí)軟件知識(shí)體系的態(tài)度.
方法因人而異,合適你的方法就是最好的方法.而我有我自己的學(xué)習(xí)方法.書(15%)+狗哥(35%)+運(yùn)行(50%),以我現(xiàn)在的水平,看一本專業(yè)的技術(shù)書,我仍然會(huì)把書中的內(nèi)容在機(jī)器上運(yùn)行以得到驗(yàn)證.并以此加深記憶,而不是象很多高手那樣一周或十幾天就能看完<<thinking in java>>那樣厚的書(這里只是用它來比較厚度,不是為了推薦它).說實(shí)話我沒有這種能力.而且,任何技術(shù)方面的書中如果有光盤,我首先會(huì)扔了它(當(dāng)然以后可能會(huì)從某一地方找到),因?yàn)槲倚枰獜逆I盤上輸入我想要驗(yàn)證的內(nèi)容.
而"運(yùn)行"并不是把書籍提供給你的例程運(yùn)行一次,那需要對(duì)所能考慮到的所以情況反復(fù)測試,比如一個(gè)API,不同參數(shù),不同環(huán)境,以及不同運(yùn)行次數(shù)的性能,在多線程中的安全性和可并發(fā)性等等.
我的學(xué)習(xí)方法很笨,就是大量的上機(jī)實(shí)踐.
對(duì)于學(xué)習(xí)的態(tài)度,這一點(diǎn)猶其重要.好學(xué)不叫學(xué)習(xí)態(tài)度,為了很多理由,我們都需要學(xué)習(xí),誰都能做到.但是如何學(xué)習(xí),學(xué)什么,真正能反映一個(gè)人的學(xué)習(xí)態(tài)度.
按你的計(jì)劃,根據(jù)你的需要而學(xué)習(xí),而不是流行什么就學(xué)習(xí)什么.這一點(diǎn)說起來輕松,可很少人做到.
我是完全從面象對(duì)象開始接觸程序的.當(dāng)我還不知道什么叫程序的時(shí)候,我聽到有一種東西叫JAVA,然后我認(rèn)識(shí)了它.當(dāng)我用它寫出一個(gè)還算可以的應(yīng)用時(shí),我認(rèn)識(shí)到我需要深入到它的底層,我要了解JVM,然后我知道我的知識(shí)需要向底層遞歸,然后我從最最基礎(chǔ)開始,數(shù)邏,作業(yè)系統(tǒng),數(shù)據(jù)結(jié)構(gòu),編譯原理,匯編,C/C++等這些看似無關(guān)的知識(shí)把我對(duì)JAVA的理解推向了一個(gè)超越的層次.今天,我仍然說我是一個(gè)JAVA程序員,我以它入門,又以它最擅長.但我更要說,沒有匯編,C/C++這些基礎(chǔ),我不會(huì)成為一個(gè)真正的JAVA程序員.也不會(huì)讓我輕松地成為一個(gè)C#程序員.所以基礎(chǔ)的東西還是很重要的。
學(xué)習(xí)態(tài)度的另一個(gè)方面是敢于求真的勇氣,在意別人不屑的東西.這一點(diǎn)以后再詳說.
我相信你有興趣看這個(gè)欄目,就應(yīng)該有能力判斷,什么是永恒的,什么是瞬夕的.當(dāng)然你也不會(huì)因?yàn)槲业膸拙湓挾淖兡?我甚至不愿意對(duì)你有什么影響,即使我的觀點(diǎn)是唯一正確的,我也無法證明它是正確的,何況它并不一定就是正確的!因?yàn)槲业乃枷胍苍诎l(fā)展.
posted on 2007-05-08 21:13 feng 閱讀(226) 評(píng)論(1) 編輯 收藏