重讀《由C#風潮想起的-給初學編程者的忠告》有感

來源:互聯網
上載者:User

 

 我大約剛開始學編程時就看到這篇文章了(下面簡稱《C#風潮》),這是一篇被轉載了上萬次的名文,可參見這裡 文章搜尋。今天無意間又看到它,《C#風潮》顯然是很不錯的文章,作者列舉學習中的執行個體包括自己的經曆,將自己對技術學習的深刻理解,清晰地展示給我們,並指出了學習的方向。又一年就要過去了,現在重讀,聯想這幾年的經曆和認識的發展,我覺得有一些新的體會。

 

  文章的第一句話是:“我始終認為,對一個初學者來說,IT界的技術風潮是不可以追趕的,而且也沒有能力去追趕。”

 

  作者沒有直接解釋原因。為什麼呢,現在我有點明白了。很顯然,如果你能比別人更早地認識到一項新技術的潛力,你就比別人有更好的發展機會,獲得更大的收穫。作者的想法是,作為初學者,他不太可能具備判斷技術前景的能力。其實這種能力其實在真正的技術人員中,也只有少數人具備。

 

  接著,作者對大學的師弟師妹們忽視基礎課程,學習C#等“先進”語言感到痛心。可是,為什麼同學們會把課本扔了呢?我來解釋吧,乏味的課程、過時的教材、水平低下的師資、脫離實踐的教學讓大學生們失去了方向。作者是非常有才華的,他在大學的成功是個別案例。說實話,中國的大學教育讓每個有識之士都痛心。

 

  最近常在看李開複等大家的部落格,開始體會到一點學習的本質,就是忘掉你學到的知識和技能後剩下來的東西。不管是大學生也好,初學編程者也好,如果沒有面臨眼前的生活壓力,就請追隨自己的激情和興趣,選你最喜歡的技術吧,不用管那些科班的教授專家怎麼說。你可能走得不是他們指定的陽關大道,但關鍵是,要去學,有目的地學,不管是C#也好還是彙編也好,都可以找到共通的學習方法。

 

  如果你對新技術感興趣,完全可以勇敢地去追。當然也不能為了趕流行風潮,看到別人追我也追,而是為了它的學習價值。確實有絕大多數新技術是曇花一現,但有旺盛生命力的技術也在不斷紮根發芽。現在早已證明了,當年湧現C#語言及其所在的.Net平台不是一陣風,而是一場革命。即使某項技術失敗了,也未必就是技術本身的問題,比如可能是過於超前了,但其中蘊含的思想卻可能非常可貴。將思想和方法學到手,會讓人終身受用。

 

  接下來作者講了幾個初學者的誤區。第一個是“認為電腦技術等於編程技術”,這個說不上什麼誤區,人的認識是隨著對事物瞭解的逐漸深入而提升的,這是一個持續無止境的過程。很多人開始連網路和伺服器都搞不清,自然不會對電腦技術有多全面的認識。不過我認為,對於初學者來說,只要能像作者後面說的“日三省乎己”,時常想想自己學了些什麼,還有些什麼相關的東西需要掌握,自己對什麼最感興趣之類問題,對電腦技術認識自然會豐富並立體起來。

 

  第二個誤區是“咬文嚼字的孔已己作風”,雙手贊成,這顯然是應試教育的惡果。有個作者的師弟跟他說:“C++ 太難了,學了這裡忘了那裡,學了繼承忘了模板。”作者的回答道:“你不去學就容易了”。作者說,“死摳C++的文法就和孔已己炫耀茴字有幾種寫法一樣毫無意義。你根本不需要對的C++文法太關心,動手編程就是了,有不記得的地方一查MSDN就立馬搞定。”編程是創造性思維的結晶,不像馬哲那樣可以靠死記硬背,而要結合實踐加以理解貫通。而如果你對這個技術點的應用有相當的心得,讓你再描述一下這個知識點,你說得會比國內絕大多數技術書籍上那些專家寫得還要好。

 

  聯想到前幾個月,園子上有個熱門文章關於最近面試的一點感想,講面試時詢問對方“delegate在.net framework1.1,2.0,3.5各可以怎麼寫”的問題。老趙為此連作三篇文章(從.NET中委託寫法的演變談開去)詳述了對delegate這個技術點的心得,事實充分,論證嚴密,證明這確實是一個能夠檢驗面試技術人員水平的好問題。這才是真正地學懂了、學會了!不過好問題也是有條件的,這個問題將來會在網上廣泛傳播,要是再有面試官出這樣的題目,就值得商榷了,有可能會真的招到像孔已己一般的牛人。不過時下的環境各種浮躁,從那篇文章的評論中,可以看到山間竹筍和牆上蘆葦盛行,連孔已己都不多見了。

  

   第三個誤區點到《C#風潮》文的核心,“不顧基礎,盲目追趕時髦技術”。作者舉了自己的親身經曆,並與同學對比,看上去很有說服力。綜合看這篇文章,作者不經意泄露了他的潛意識,即從彙編到C++到VC的道路才是編程的武學正宗,其他都是“歪門邪道”。作者下面對各個編程相關課程的描述也證明了這一點。

 

  首先,程式設計語言沒有高低之分,編程開發人員的水平,當然也包括他的報酬,和他用語言沒有關係。C++程式員能拿到的薪水,C#或VB程式員一樣能達到,並且未必就得比C++程式員付出的努力多。只是由於C#是更容易入門的語言,所以菜鳥程式員要多得多,顯得好像不如C++“高貴”,其實這反倒是它先進的體現。

 

  至於說資料結構和作業系統原理是學習編程的基礎,前者還算可以,可以使你更好地理解效能、儲存、演算法的概念。至於作業系統原理,如果你有志於參加個Windows 8開發(微軟總部已經在招聘了),當然是必須學好的。但對於一般地C/S、B/S以及嵌入式開發,我實在是想不明白瞭解作業系統原理有什麼必要性。當然瞭解了更好,但是可能還不如花半小時研究一個效能測試工具的使用更有意義。

 

  其實,並不是先學HTML和VB導致作者的同學在畢業時輸給了作者,而是那位同學不夠努力和專註。他沒有在Web開發上,達到與作者相同的高度。我認為初學者真正的第三個誤區是(如果第一個算的話),不明白成功源自努力和專註。開始作者說,師弟師妹們把課本扔了花錢買C#、ASP的書看,但據我所知,絕大多數人花錢買了書,看不幾頁也丟到一邊了。大學新生,只要去將畢業的師兄師姐物品處理攤拉,肯定能淘到好多新書。同樣,很多人買了電腦,開始是想練編程,過不多久就成了網遊用機。

 

  這也不能怪這些初學者。國內出版的技術書籍水平實在不敢恭維,近兩三年還好了些,翻譯的書多了,也有個別不錯的國內作者,但對初學者一開始就看出某本書的價值還是困難了點。再就是應試教育環境下長大,大家自學能力和意識普遍很差,大學裡又沒有人指引,實踐機會也少,遇到一些困難和困惑,結果自然就是放棄了。

  

  作者還以課程描述的形式,設計了他理想中的Windows程式員技術學習路線。我想他認為這條路線適應於所有想成為程式員的人,但還是保留了一下。我覺得《作業系統原理》、《電腦體繫結構》大致瞭解一下就行,不瞭解也沒太大關係。《資料結構》還是比較重要的,尤其是其中的思路和方法。英語的重要性就不用說了,至於《大學英語》就算了,那不是我們需要的,多看原版技術書籍和文章吧。軟體工程也非常重要,作者的學習方法非常值得稱道:“不要花太多的時間 去記條條框框,看不懂就跳過去。在每次自己完成了一個軟體設計任務(不管是練習還是工作)以後再來回顧回顧,每次都會有收穫”。許多開發人員甚至技術管理員,都完全沒有軟體工程的概念和意識,你如果有,哪怕是一點,也是將對未來你的發展彌足珍貴。

 

  這些課程中,作者相當推崇《Windows 程式設計》,現在情況也不一樣了。作普通windows程式設計,.Net平台下開發效率要遠超過C++平台。就是在C++平台中,VC++也屬於較難上手的,C++ Builder則容易得多。我們有很多的選擇,每個人的情況都不一樣,適合自己的才是最好的。

 

  最後,作者諄諄提出了對初學者的忠告:為你的將來著想,把最多的時間花在學習上。只要去學,只要不是學害人的東西,學什麼都要比把時間荒廢要好得多。環境也許無法改變,但你可以改變自己。

 

  縱觀全文,不可否認,《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.