[閉月羞花貓]C++ OR JAVA ? 暫別CSDN前,給各位初學者的一點建議。(大家不要悲傷,過兩天我還會回來的)

最近發現在論壇上總看到很多初學者一直在困惑一個問題。

sample 1:

學過C++,從事C# 好還是Java好呢 ?

三者的語言方面都學習過,做過C++的東西,主要是.net下VC

後面兩者也實踐過一些,但很皮毛,

如果現在選擇C#和Java,哪一個更合適呢 ?

感覺從事Java和C# 各有利弊,請大家提提意見。

sample2:
我是非常喜歡C++的,但畢業後的單位只用C#和Java,分別在兩個部門,很想找個C++的單位,但和這個單位毀約不一定能找到一個好的、用C++的單位,

也知道Java和C#這兩個陣營都很大,內容都很多,但問題是現在這個單位要在培訓之後定是參加C# 的部門還是Java的,因爲不想一直做底層的程序員,希望最終能搞架構,所以就問問大家了,目的就是想知道,爲達到最終目的,Java和C#哪一個更合適。

sample3:
我們這學期開始學JAVA了
在第一節課上,老師說JAVA的優勢在於網絡??
還有JAVA的速度比C/c++要慢3-4倍……
我挺不理解的……那JAVA好在哪裏
我們已經學過c++了,有一些人說JAVA如何如何的好,我挺困惑的,在性能上比C/c++慢這麼多,而且.Net對網絡的支持也很好啊
請各位給解釋一下

=========================================
篇幅有限,我就不一一列舉了。

首先,我要說的就是語言本身沒有高低貴賤之分,所有的語言存在都有他存在的意義。

java,跨平臺,由於虛擬機的存在,java的速度肯定無法和C/C++相比,但是也不像某些人說的那麼誇張。
java,Java有一個特別的“垃圾收集器,它會自動釋放由那些閒置對象佔據的內存,以便能由新對象使用,這樣可以有效防止由於程序員忘記釋放內存造成的“內存溢出”,但是肯定也是犧牲性能爲代價
java,數組。由於系統自動進行範圍檢查,所以必然要付出一些代價:針對每個數組,以及在運行期間對索引的校驗,都會造成少量的內存開銷。但由此換回的是更高的安全性,以及更高的工作效率。爲此付出少許代價是值得的。
。。。。。。
在這裏也就不仔細比較java與c/c++的性能優劣了。
java是一種靜態語言,它的開發缺少靈活性。
ruby on rails的開發web的效率號稱是java的10倍,但是在企業級應用上來說,java本身還是首選語言。強大的API,豐富的第三方軟件支持,framework也在激烈的競爭中不斷的優化,source容易讓初進入項目的人讀懂,門檻也比較低。

記得在《程序員2006年合訂本》有個“華山論劍”的記錄了各種語言的優點的優勢,有興趣的可以看看。

我說這麼多的意思就是,希望初學者不要盲目的去趕時髦,一味的追求新技術。
今天學java,然後c++,然後.net,還雄心勃勃的說:我要在短時間內精通“struts,hibinate,jsf,spring,applet”......
過了幾天,發現現在公司或者論壇上看到現在流行JSF,又去研究JSF。
過了幾天,又是ruby,python......

簡直看花眼了。
所以要認定一門語言,認真打好基礎。語言本身並不重要,重要的是設計思想。
無論是c++還是java還是其他的動態語言,就程序控制來說,無非就是順序結構,循環結構,遞歸。
相比在上學的時候,我們學過c語言對這些基本的東西應該有所瞭解吧

我們所要學習的正是 繼承,重載,多態,封裝等這些面向對象的精髓,需要具備的是把具體的事物抽象成具體的類的能力。
何時應該使用繼承,何時因該使用抽象類,何時應該使用接口,各個類之間通過什麼來聯繫,等等。


基礎學好了,然後可以開始學習一些API之類的東西,這些東西不要去研究它,只要達到能用就可以了。要用的時候再去查找它的具體用法。
實際項目中,需要用到的framework,apserver,xml之類東西的時候,再去學習他。
比如,項目中用 java + struts + jsp ,那我就學習struts。
項目中用到JSF,我就學JSF,用道Applet,我就學Applet。

有人會說,這樣的話,不是又變成什麼都學,什麼都不精通麼?
最簡單的說句,公司請你來,是請你來做事情的,還是請你來學習的呢?

剛開始的時候,你們不能決定公司到底用什麼技術架構,你所能做的就是適應公司,這個時候,你要做一個有心人,主動地去看看項目是如何利用這些framework,如何利用這些中間件的。
現在的主流無非就是個MVC思想,幾個項目下來,你肯定不具備這些架構的能力,但是隻要你做個有心人,腳踏實地,你一定能有所收穫的。

技術始終在變,惟有思想永恆(有點唯心主義了)。

=========================================================

有人問:
因爲不想一直做底層的程序員,希望最終能搞架構,所以就問問大家了,目的就是想知道,爲達到最終目的,Java和C#哪一個更合適。

既然語言本身沒有高低貴賤之分,那麼想要成爲架構師,和你使用哪個語言似乎關係不大。
我覺得要成爲一個合格的架構師,應該有這樣的過程:
1.有足夠的計算機基礎,包括數據結構,數據庫,C語言,彙編語言,軟件工程思想
2.選擇一門語言,通過這麼語言學習一種思想,學習這種思想的精髓,無論是“面向對象”,還是現在的“SOA”。
3.參加實際的項目,這個時候不要過分的關注語言的本身,不要再在一些算法問題上鑽牛角尖了,算法是你在1和2中應該去重點掌握的內容。
  我們要做的是結合項目實際,多想想爲什麼項目要用這樣的架構,這種架構如何將db,中間件,開發語言有機的結合起來的,這樣做有什麼好處,這些中間件到底做了些什麼事情。
  這樣,通過不斷的遇到問題,不斷地思考,不斷地解決,你的能力自然就提高了。
4 不想做底層的程序員,3這個步驟是漫長的而且是痛苦的。3經歷的過程中,你可以開始看看“設計模式”,“UML”,“DB優化”這些高級的書籍了。
   有了面向對象的思想,和足夠的項目經歷,再加上你的努力,這些東西應該不難讀懂。這個時候,你可以想想,我以前做的一些項目,如果讓我來設計,我會如何去做。
5 如何把4學習的東西用到項目中去了。這個你不用擔心,中國不缺民工,缺乏的就是具備一定能力的設計人才。只要你具備這樣的能力,領導會看見,會給你機會的。
   只要你做的還可以的,你會得到更多的機會去設計。做的不好,那你就還需要鍛鍊,應爲架構這東西很重要,搞得好,可以提高整個團隊的效率,減少項目風險。搞不好,呵呵,自己考慮。
6 有了5的水平,相信你把握式樣,跟客戶交流應該沒有什麼問題了吧。

總之就是要腳踏實地,不要好高騖遠,不要抱怨領導不給你機會,而是要時刻提醒自己“領導給我機會的時候,我真的準備好了麼”?

首先很感謝大家對我前面所發的“[閉月羞花貓]C++ OR JAVA ? 暫別CSDN前,給各位初學者的一點建議。(大家不要悲傷,過兩天我還會回來的) ”的
原帖地址: http://community.csdn.net/Expert/topic/5383/5383896.xml?temp=.9952051
支持,今天我又看了一下帖子,其中有部門內容,我似乎沒說清楚,可能會產生一些誤導,在這裏解釋一下。

1.有人會說,這樣的話,不是又變成什麼都學,什麼都不精通麼?
最簡單的說句,公司請你來,是請你來做事情的,還是請你來學習的呢?


這句話,似乎說的太勢利了點,似乎誤導初學者,要犧牲自己的利益,爲公司服務。
其實,我寫這些東西,真正的出發點還是從程序員自身的利益出發的。

主要是爲了讓我們去協調好學習和工作的關係,如何協調好學習的工作的關係,我想大家應該能夠體會。
如果你還是個學生,那你應該是幸運的。你知道csdn上面有多少已經工作的人羨慕你們現在的學習機會啊。
他們大多數人,爲了項目,加班加點,到處趕場,救火,週末一般也有很多事情要做,根本沒有多少時間來學習。
如果你已經工作了,也不用擔心,時間還是能擠出來的。如果實在覺得,自己現在的公司限制了你的發展的話,跳槽也是個不錯的選擇。
===========================

2.基礎學好了,然後可以開始學習一些API之類的東西,這些東西不要去研究它,只要達到能用就可以了。要用的時候再去查找它的具體用法。
這句話,不是絕對的。

我的意思只是說,在你工作之外,閒暇的時候,你感興趣的話,可以去看看他的源代碼。

懂的東西多了,好處在以後的工作中就會慢慢的體現出來了。
比如, 學過編譯原理,瞭解自動機的人,就能更好的掌握正則表達式。
          學過數據結構的人,對於java中,處理List的時候,用LinkedList還是用ArrayList也沒有那麼頭疼了.
         瞭解java的不可變長特性,你就知道爲什麼要用Stringbuffer代替string + string了.
          研究過Windows api的和沒有研究過的.
          讀過UNIX源代碼的,和沒有讀過的
           ......
          腳指頭都想得出來,肯定不一樣.

有人會說,你說的不是自相矛盾麼?
一會兒又說不要研究它,一會兒又說要了解的更深入點.

其實,歸根結底還是"如何處理好學習和工作的關係"的問題.
單純針對工作,對於大部分人來說,還是我以前的帖子說的那些.因爲在工作中,你要學的東西實在太多了.(工作了的朋友肯定深有體會)
如果,工作之外還有精力的話,可以更加深入點.畢竟藝多不壓身,一旦以後涉及到一些深層次的東西的時候,這些知識還是很有必要的.

這也是我一直把"大學基礎課程"提到很重要地位的原因.


工作了,今天就說這麼多.

 

發佈了41 篇原創文章 · 獲贊 29 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章