給大家潑點涼水:對于Java的一些看法
發表時間:2024-02-23 來源:明輝站整理相關軟件相關文章人氣:
[摘要]發信人: Nullgate (民工空門·道·自由), 信區: Java標 題: 關于Java的一些牢騷 發信站: BBS 水木清華站 (Sat Feb 17 01:06:11 2001) Java現在熱的不得了,似乎是個人都在學。網站也動不動就說jsp,servlet, ej...
發信人: Nullgate (民工空門·道·自由), 信區: Java
標 題: 關于Java的一些牢騷
發信站: BBS 水木清華站 (Sat Feb 17 01:06:11 2001)
Java現在熱的不得了,似乎是個人都在學。網站也動不動就說jsp,servlet,
ejb。
我也見過不少需要java的公司的小頭目(項目經理一級吧),他們卻抱怨缺
乏java的人才。以前我以為只是懂perl的少,畢竟摸過perl的不多,所以不太理解。
現在我算是明白了,很多人學java不是把他當作一門語言來學的。寫applet的就只
知道如何畫圖,寫jsp的把jsp當asp用,在程序中用過數據庫就算是懂數據庫。
Java是一種計算機語言。我覺得不懂計算機就去掌握一種計算機語言是不可思議的。
你首先得了解世界,才能用語言去描述這個世界。對于盲人來說,顏色永遠只是個
抽象概念。我很理解那些搞不清tcp和http的jsp程序員,因為他們可能永遠不會遇到
“裸露”的tcp連接。他們也不需要了解垃圾回收和互斥,因為http基本都是短連接。
或許他們活得很實在,但是我絕對不會認為這些人“懂”Java。
當初剛學Java的時候,我覺得它的語法和C++別無二致。那時候我精通C++的
語法規則,繼承規則,重載、超載、虛函數、內存管理的語法,然而我完全不明白
OO,完全不懂TCP/IP,完全不明白操作系統。那時候我覺得自己是個天才,自以為
在半年內學會了C++。很可惜,懂語法規則并不等于懂計算機語言。我現在對tcp/ip,
sql,操作系統和面相對象有一些膚淺的認識,回過頭去看過去,發現自己整一個傻冒。
算法雖然不是語言的一部分,但是不懂算法的人,怎么可能寫程序呢?算法在很
大程度上與語言無關,然而卻是一個程序員的基本素養。很難想象,只知道窮舉的人
能寫出什么高效率的東西,雖然在很多情況下窮舉是最優算法。我的說法并不嚴謹,
并不是說一個程序員非得能憑空想出快速排序才叫程序員。我只是想強調對算法的
知識是很有必要的。
面向對象的編程方法在很大程度上是一種革命,與面向過程的編程相比,面相對象
的編程與語言的有很大關系。拿C++或者SmallTalk寫出來的東西區別很大。但是面向
對象的精髓卻是一致的。Java就是一種專門為面相對象編程而設計的語言,所以,我認
為不懂OO的人根本不可能懂java(等他懂Java的時候,自然明白什么是OO :-D)。
雖然很多人說學習Java不需要任何C++/C的經驗,甚至可以把它作為第一門
語言來學習。我也很同意,但是不要以為找幾本Java書就可以從一個菜鳥變成
大蝦。Java只是一種語言,只是一種工具,你不可能指望從Java的教材中精通
數據庫,了解TCP/IP細節。當然,你肯定可以通過Java學會OOP。Java是跨平臺的,
但是不等于你可以完全不了解平臺,否則你可能連簡單的rpm -i都不懂(不懂
沒關系,因為不一定非得用Linux),你至少得學會安裝它。
如果你希望我開一個與Java無關的單子,我會列出:計算機體系結構、
匯編語言、SQL和數據庫知識(不是Oracle的手冊!我說的是基礎)、計算機
網絡(比如同名教材)。如果有時間,可以看看操作系統,只是簡單的了解,
至少你應該看看五個哲學家的問題。如果窮極無聊,我推薦你看看應用密碼學。
事實上,計算機科學在很大程度上是數學,離散數學、形式邏輯、拓撲學,
相關的知識很有幫助。
不要被我的清單嚇跑,羅馬從來就不是一天以內建好的。如果你是計算機
或者電子系的學生,上面的大部分東西都是必修課或選修課,你只需要理解教材,
成績根本不重要。如果你完全沒有計算機基礎(我是說系統的學習),你得學習
很多枯燥的理論知識,但是那絕對值得。我個人比較羨慕計算機系的學生,呵呵。
事實上語言是觸類旁通的,只要你精通任何一門語言,你可以很快地
掌握另外一門語言。所以沒必要猶豫不絕,學習C++并不妨害你精通Java。
我只是覺得語言只是一種工具,不要被工具所羈絆——雖然這正是sun的險
惡用心。我只想說明,只有大量的實際編程才能真正使你掌握一門語言。
所以,如果你的項目是C++,沒必要花時間學習Java,當你精通了C++,你
會發現Java很easy。如果你有選擇的余地,我強烈建議Java,用執行效率
換開發效率是非常劃算的。
我并不認為寫程序是一門藝術,至少寫代碼不是。如果你打算一輩子
做代碼生成器,也許只有等到程序機器人出現,你才會后悔。很多勞動,
尤其是做網站,都是簡單重復腦力勞動,對你的學習沒有太大的幫助。如果
你只是為了掙點零花錢,也沒什么好說的。
最后我想說明一點,我并不是什么大牛,也不精通Java,事實上我前幾天
才明白wait是做什么的。我學習Java的時間不到半年,我自認為了解OOP的時間
和這一樣。我在上面開出的單子我自己也不怎么了解,我甚至沒有系統地學習
離散數學。但是我覺得這并不妨礙我闡述真理。
說了半天,基本上沒有說到Java,不好意思。
拜托,我只是個民工。
--
大部分人的簽名檔都是寫給別人看的,不過這次我卻寫給我自己看
●執著有時是一種美德,但是它通常使人變得盲目
▲在注重結果的時候很容易忽略過程,在嘲笑日本
游客的旅游方式時,卻沒有看到自己也常常這樣
◆沒有必要和時間賽跑,靜下心來思考反而省時間