高博老師的信1

來源:互聯網
上載者:User

 

  見信好,來信收到,勿念為盼。

  信中提及的問題很好,很有普遍性,在此盡綿薄之力作答,不當之處還請指正。

 

一、語言和平台的優劣之分?

答:語言和平台本無優劣之分,“能夠解決當前問題的”就是最好的,誰能說出Java、C++和C#這幾種根本設計出發點就完全不同的語言/平台誰“更好”呢?Java更適用於快速架構,因為它主要地是依靠Beans庫工作的,它非常工程化。C++則對程式員的要求非常高,它基本上和C一樣,有更多的彙編背景,物件導向的語義是建構在比較明確的低層語義之上的。因此比較好的C++教材會向你講明白,那些看起來比較“進階”的操作,有哪些C的甚至是彙編的背景。這是一種重要的去蔽,帶著比較清楚而明白的低層的思考方式來認識C++,非常有助於學習它的一些看似複雜的文法,如RTTI和traits等。而C#則基本上是為Microsoft的.NET平台設計實現的,其它的C#編譯器除了Borland的C# Builder以外,是比較少的(但它仍不失為一門語言,而Java則本身已經成為了一個平台,Stroustrup語),而且它的控制權基本上在Microsoft Visual Studio開發組的語言規範組(當然提交給ISO以後會成立另外的專門委員會,這就不一樣了)。如果你選擇從C#開始學習,這當然是可以的,不過你會發現,在基本層面上,它和C++的區別並不大,85%是完全一樣的,在細節上(如指標的語義、Boxing/Unboxing和字串字面常量的處理等,C# 2.0中還增加了諸多的新特性,如Nullable Type)略有不同而已。我們如何能說這幾種語言/平台哪一種更“好”呢?它們在各自的領域中有特別的長處,誠然它們的領域是交叉的,而且C++在這三者中間,適用的領域卻是最廣的(見D&E,Stroustrup著)。

 

二、C++過時了嗎?

答:不,我不這麼認為。任何說C++的使用者數不及Java的人,都並沒有官方的調查證據,而只是因為自己活動的圈子裡使用Java的人比較多。事實上,Java平台的發展速度是非常快的,但這和C++使用者數的增長並不矛盾。作為通用型的語言/平台,Java替使用者完成了非常多的基本操作,甚至諸如大整數之類的類型都已經封裝完畢,使用者只需要將相應的包匯入並調用即可。但C++則秉承了C語言“信任程式員”的風格,將儘可能多的選擇權交給使用者(當然,託管的C++也根據多年的模式對資源進行了諸多的保護措施),使用者必須在許多場合下自己作諸如儲存管理、異常條件下的安全、類繼承體系中的類型推導等決定。這兩者是完全不同的,Java安全,但C++的效率非常高,這一條就決定了C++將在相當長的時間內仍然是主流語言,而且將扮演語言革新的領頭角色。STL的標準化和廣泛應用,以及範型(Generic)觀念的深入人心,已經奠定了C++的不可動搖的第三代語言的主流地位。

 

三、我怎樣學習C++?

答:C++的學習和一切其它知識的學習一樣,是因人而異的,如果你以前有C語言的基礎,或你以前有組合語言的基礎,那末看C++的視角會完全不同。但大凡是學習,我認為無非是端正態度(不為亂七八糟的考試而學習,而要切實地為擷取一些基本觀念而學習)、夯實基礎(不浮不躁,不為新名詞新概念而眼花瞭亂,願意反覆地思考最基礎、看起來最微不足道的問題)、選擇好的教材(中國人寫的書一律不看,Scott Meyers、Stanley Lippman、Bjarne Stroustrup、Bruce Eckel的書要一看再看,多多益善)、多做實驗(只有一種語言,卻有1000種編譯器,選一兩種常用的,它們的錯誤資訊是比什麼書都好的老師)、多和人交流(閉門造車那是高人才做的事,我們還是集臭皮匠之智以為諸葛亮之事比較明智一點)、把C++作為日常用語(並沒有在開玩笑,機械語言都有工程和事實背景,有些簡直就是概念的直接寫照,試著用C++去描述你看到的、你想到的事)。

 

四、有關理論學習和今後發展。

答:因為你才大一,職業選擇是你現在急也急不來的事。更何況,電腦科學理論與技術實踐是科學和技術分類中少見的有如此大的關聯性的學科。最怕的無非是浮躁二字,你現在覺得自己“想成為資訊安全專家”,可你對“資訊安全”包括哪些學問到底瞭解多少?我看,你多半是覺得成為一名“駭客”會“比較酷”,抱著這樣的態度去學習,只好成為一塊廢料(請原諒我的說話方式)。不要對別人掌握了C++感到奇怪,他們無一不是付出極大的代價,包括時間、金錢,甚至變得和人很難相處(當然也不是普遍規律)。有一點是可以肯定的,那就是你肯投入地(用別人用來消磨的時間!)去學習所有的相關的理論(如硬體和體繫結構、編譯理論、低級語言、離散數學)的話,你當然會變得很優秀,這是非常自然的。當然,在現在的大學生中,能肯在學業中投入任何一份附加精力(不為考試而為自己的理論研究興趣!)的人,是太少了。在你的信中,我也感到了一絲危機。但我可以保證,如果你可以堅持不懈,在真正的職業選擇來臨的時候,你會非常清楚地知道自己適合做什麼,也會自信滿滿地去應聘任何你夢中的理想企業。你的人生將是明白的而不是迷糊的,將是充實的而不是空虛的,將是快樂的而不是自責的,將是成功的而不是失敗的。

 

  希望我的這封信能夠對你有些協助!

 

高博

於微軟中國

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.