關(guān)于Java
因?yàn)樽约簩W(xué)習(xí)也沒(méi)有到可以指導(dǎo)大家學(xué)習(xí)的地步,但是卻可以發(fā)一點(diǎn)他人有用的學(xué)習(xí)經(jīng)驗(yàn)
下面的東西可能有幾個(gè)月了,不過(guò)應(yīng)該還可以看看的,有點(diǎn)指導(dǎo)意義的,大家都努力一起學(xué)習(xí)吧!Java現(xiàn)在熱的不得了,似乎是個(gè)人都在學(xué)。網(wǎng)站也動(dòng)不動(dòng)就說(shuō)jsp,servlet,
ejb。
我也見(jiàn)過(guò)不少需要java的公司的小頭目(項(xiàng)目經(jīng)理一級(jí)吧),他們卻抱怨缺
乏java的人才。以前我以為只是懂perl的少,畢竟摸過(guò)perl的不多,所以不太理解。
現(xiàn)在我算是明白了,很多人學(xué)java不是把他當(dāng)作一門(mén)語(yǔ)言來(lái)學(xué)的。寫(xiě)applet的就只
知道如何畫(huà)圖,寫(xiě)jsp的把jsp當(dāng)asp用,在程序中用過(guò)數(shù)據(jù)庫(kù)就算是懂?dāng)?shù)據(jù)庫(kù)。
Java是一種計(jì)算機(jī)語(yǔ)言。我覺(jué)得不懂計(jì)算機(jī)就去掌握一種計(jì)算機(jī)語(yǔ)言是不可思議的。
你首先得了解世界,才能用語(yǔ)言去描述這個(gè)世界。對(duì)于盲人來(lái)說(shuō),顏色永遠(yuǎn)只是個(gè)
抽象概念。我很理解那些搞不清tcp和http的jsp程序員,因?yàn)樗麄兛赡苡肋h(yuǎn)不會(huì)遇到
“裸露”的tcp連接。他們也不需要了解垃圾回收和互斥,因?yàn)閔ttp基本都是短連接。
或許他們活得很實(shí)在,但是我絕對(duì)不會(huì)認(rèn)為這些人“懂”Java。
當(dāng)初剛學(xué)Java的時(shí)候,我覺(jué)得它的語(yǔ)法和C++別無(wú)二致。那時(shí)候我精通C++的
語(yǔ)法規(guī)則,繼承規(guī)則,重載、超載、虛函數(shù)、內(nèi)存管理的語(yǔ)法,然而我完全不明白
OO,完全不懂TCP/IP,完全不明白操作系統(tǒng)。那時(shí)候我覺(jué)得自己是個(gè)天才,自以為
在半年內(nèi)學(xué)會(huì)了C++。很可惜,懂語(yǔ)法規(guī)則并不等于懂計(jì)算機(jī)語(yǔ)言。我現(xiàn)在對(duì)tcp/ip,
sql,操作系統(tǒng)和面相對(duì)象有一些膚淺的認(rèn)識(shí),回過(guò)頭去看過(guò)去,發(fā)現(xiàn)自己整一個(gè)傻冒。
算法雖然不是語(yǔ)言的一部分,但是不懂算法的人,怎么可能寫(xiě)程序呢?算法在很
大程度上與語(yǔ)言無(wú)關(guān),然而卻是一個(gè)程序員的基本素養(yǎng)。很難想象,只知道窮舉的人
能寫(xiě)出什么高效率的東西,雖然在很多情況下窮舉是最優(yōu)算法。我的說(shuō)法并不嚴(yán)謹(jǐn),
并不是說(shuō)一個(gè)程序員非得能憑空想出快速排序才叫程序員。我只是想強(qiáng)調(diào)對(duì)算法的
知識(shí)是很有必要的。
面向?qū)ο蟮木幊谭椒ㄔ诤艽蟪潭壬鲜且环N革命,與面向過(guò)程的編程相比,面相對(duì)象
的編程與語(yǔ)言的有很大關(guān)系。拿C++或者SmallTalk寫(xiě)出來(lái)的東西區(qū)別很大。但是面向
對(duì)象的精髓卻是一致的。Java就是一種專(zhuān)門(mén)為面相對(duì)象編程而設(shè)計(jì)的語(yǔ)言,所以,我認(rèn)
為不懂OO的人根本不可能懂java(等他懂Java的時(shí)候,自然明白什么是OO :-D)。
雖然很多人說(shuō)學(xué)習(xí)Java不需要任何C++/C的經(jīng)驗(yàn),甚至可以把它作為第一門(mén)
語(yǔ)言來(lái)學(xué)習(xí)。我也很同意,但是不要以為找?guī)妆綣ava書(shū)就可以從一個(gè)菜鳥(niǎo)變成
大蝦。Java只是一種語(yǔ)言,只是一種工具,你不可能指望從Java的教材中精通
數(shù)據(jù)庫(kù),了解TCP/IP細(xì)節(jié)。當(dāng)然,你肯定可以通過(guò)Java學(xué)會(huì)OOP。Java是跨平臺(tái)的,
但是不等于你可以完全不了解平臺(tái),否則你可能連簡(jiǎn)單的rpm -i都不懂(不懂
沒(méi)關(guān)系,因?yàn)椴灰欢ǚ堑糜肔inux),你至少得學(xué)會(huì)安裝它。
如果你希望我開(kāi)一個(gè)與Java無(wú)關(guān)的單子,我會(huì)列出:計(jì)算機(jī)體系結(jié)構(gòu)、
匯編語(yǔ)言、SQL和數(shù)據(jù)庫(kù)知識(shí)(不是Oracle的手冊(cè)!我說(shuō)的是基礎(chǔ))、計(jì)算機(jī)
網(wǎng)絡(luò)(比如同名教材)。如果有時(shí)間,可以看看操作系統(tǒng),只是簡(jiǎn)單的了解,
至少你應(yīng)該看看五個(gè)哲學(xué)家的問(wèn)題。如果窮極無(wú)聊,我推薦你看看應(yīng)用密碼學(xué)。
事實(shí)上,計(jì)算機(jī)科學(xué)在很大程度上是數(shù)學(xué),離散數(shù)學(xué)、形式邏輯、拓?fù)鋵W(xué),
相關(guān)的知識(shí)很有幫助。
不要被我的清單嚇跑,羅馬從來(lái)就不是一天以?xún)?nèi)建好的。如果你是計(jì)算機(jī)
或者電子系的學(xué)生,上面的大部分東西都是必修課或選修課,你只需要理解教材,
成績(jī)根本不重要。如果你完全沒(méi)有計(jì)算機(jī)基礎(chǔ)(我是說(shuō)系統(tǒng)的學(xué)習(xí)),你得學(xué)習(xí)
很多枯燥的理論知識(shí),但是那絕對(duì)值得。我個(gè)人比較羨慕計(jì)算機(jī)系的學(xué)生,呵呵。
事實(shí)上語(yǔ)言是觸類(lèi)旁通的,只要你精通任何一門(mén)語(yǔ)言,你可以很快地
掌握另外一門(mén)語(yǔ)言。所以沒(méi)必要猶豫不絕,學(xué)習(xí)C++并不妨害你精通Java。
我只是覺(jué)得語(yǔ)言只是一種工具,不要被工具所羈絆——雖然這正是sun的險(xiǎn)
惡用心。我只想說(shuō)明,只有大量的實(shí)際編程才能真正使你掌握一門(mén)語(yǔ)言。
所以,如果你的項(xiàng)目是C++,沒(méi)必要花時(shí)間學(xué)習(xí)Java,當(dāng)你精通了C++,你
會(huì)發(fā)現(xiàn)Java很easy。如果你有選擇的余地,我強(qiáng)烈建議Java,用執(zhí)行效率
換開(kāi)發(fā)效率是非常劃算的。
我并不認(rèn)為寫(xiě)程序是一門(mén)藝術(shù),至少寫(xiě)代碼不是。如果你打算一輩子
做代碼生成器,也許只有等到程序機(jī)器人出現(xiàn),你才會(huì)后悔。很多勞動(dòng),
尤其是做網(wǎng)站,都是簡(jiǎn)單重復(fù)腦力勞動(dòng),對(duì)你的學(xué)習(xí)沒(méi)有太大的幫助。如果
你只是為了掙點(diǎn)零花錢(qián),也沒(méi)什么好說(shuō)的。
最后我想說(shuō)明一點(diǎn),我并不是什么大牛,也不精通Java,事實(shí)上我前幾天
才明白wait是做什么的。我學(xué)習(xí)Java的時(shí)間不到半年,我自認(rèn)為了解OOP的時(shí)間
和這一樣。我在上面開(kāi)出的單子我自己也不怎么了解,我甚至沒(méi)有系統(tǒng)地學(xué)習(xí)
離散數(shù)學(xué)。但是我覺(jué)得這并不妨礙我闡述真理。
說(shuō)了半天,基本上沒(méi)有說(shuō)到Java,不好意思。
拜托,我只是個(gè)民工。
--
大部分人的簽名檔都是寫(xiě)給別人看的,不過(guò)這次我卻寫(xiě)給我自己看
● 執(zhí)著有時(shí)是一種美德,但是它通常使人變得盲目
▲ 在注重結(jié)果的時(shí)候很容易忽略過(guò)程,在嘲笑日本
游客的旅游方式時(shí),卻沒(méi)有看到自己也常常這樣
◆ 沒(méi)有必要和時(shí)間賽跑,靜下心來(lái)思考反而省時(shí)間
posted on 2007-05-16 21:22 feng 閱讀(237) 評(píng)論(1) 編輯 收藏