.net編程新手,就要去系統的學習了,如何能在課餘時間更好的學習?

就要去學習了,以後是準備把編程和網路當成自己的職業,這是自己的愛好,也是自己的未來了,請問如何更好的學習net,想要成為一個好的程序員在學習此課程之餘該看哪些相關書籍,個人精力畢竟有限,以少量經典為主,謝謝大家。第一次在知乎提問,不知道這樣問妥否?


首要的,不光 .NET,其他諸如 Java、Python 或是 JavaScript 這類語言/平台一樣都需要時刻提醒自己:學習它,只為了了解它的使用方法,而不是要讓自己愛上它、沉迷於它,自己的將來(生活)也與它沒有必然關係。

有必要先從一個全局的視角來看待這樣一個平台。

作為一個普通開發人員,我的理解是,.NET 指定的是使用一系列受支持的編程語言(如 C#、VB.NET),基於已存在的程序集庫(如 Windows GAC、Nuget Gallery)去面向可能的平台(如 Windows Phone、Web)完成新應用的開發工作。這意味著,.NET 並非特指其中的某一項開發語言,或是面向一種特定平台的開發,而是一種解決問題的方法。.NET 最初是微軟發起的,這沒錯;不過顯然現在 .NET 社區已經形成了自有獨特的文化,也有了完善的生態鏈。

當然,要學習 .NET 開發,掌握其中至少一門開發語言是必要的,推薦使用 C#。如大家所見,它是一種幾近完美的編程語言:它表達力強、簡潔優美,可讀性高。MSDN 中大量的文檔的首選語言也已經由 VB.NET 改為 C#,相關的資料和開發者最豐富。

了解完基本語法特性之後,就可以找一個具體的開發方向來嘗試一下了,順便也可以鞏固開發語言的掌握程度。

推薦一開始編寫控制台應用程序,學習常用內置類型的使用,比如 System 命名空間中的 int、String、Array 與異常處理;嘗試聲明類型來描述實體、聲明多個類型/抽象類型/封閉類型、介面等,體會 .NET 開發中常用的方式;嘗試使用集合編程、使用數據(Enumerable Data );使用並體會 LINQ 與 Lambda。

別忘了練習一些 Windows 窗體應用程序,體會多線程在其中的必要性;使用多線程處理幾個綜合案例(如典型的 Web 採集、文件搜索、數學函數繪圖)。

接下來,嘗試 一下 http://ASP.NET WebForm 的 Web 應用程序吧,用它自己編寫一個博客網站,並實現其中的文章發布,按順序、時間列表,登錄與註冊(MemberShip),Session 管理,訪問統計等基本功能。如果有空,試著開發一個網上商店網站吧,賣書、CD 或者衣服,什麼都行;這次,試著完善供管理員使用的「管理視圖」。

在上面的學習過程之後,你將熟悉 .NET 開發的常見工作方式,IDE 的使用(編輯器、快捷鍵、調試)等基礎技能。

此時,對於一些自己做過的項目,請你挑其中一個中意的項目(比如在線博客,或者商店)作為基準,去開源網站上找一個有名的類似項目(如 BlogEngine、DNN)的源代碼,並比較別人的代碼與自己的異同,體會設計模式和最佳實踐給開發帶來的改變。剛開始可能有點沒有頭緒的感覺,這時不要退縮,請根據你的經驗,從應用程序載入入口開始跟蹤代碼的執行,並弄清開源項目的執行路線。

利用在開源項目中學習的知識,對你自己的代碼進行完善(重構),這次可以試添加一些新的功能,比如在博客網站上添加一個上傳附件的功能等。

如果你願意,你這輩子都可以一直持續完善它。是的,這也可以成為你的事業。

你可以繼續嘗試不同的開發平台(如 WCF、Windows Phone),不過如果你嘗試了 ASP.NET,你就知道,不論哪種平台,在開始之前,你肯定要了解這個平台的一些特有機制,還有特有類庫的使用方法。永遠都是這樣:比如,Windows 應用程序里需要了解控制項與窗體;ASP.NET 里需要了解 Web 請求過程;WCF 里需要了解遠程調用機制。最近我在使用 SuperSocket, an extensible socket server framework 以及 ASP.NET SignalR,我也需要學習它們的使用方法。

一個熟練的開發者,當然應該是了解各種開發技術的,所以在你熟悉了 .NET 風格之後,除了從一而終去完成項目,你還應該多了解相關的其他項目。那些項目讓你知道面對特定問題時怎樣解決,讓你知道你可以做的還有更多。

最後說幾句廢話。

由於越來越多的人看到 .NET 的魅力所在(清晰的模塊化、優美的 API 風格、令人放心的封裝,以及由這種開發風格發展來的更工業化的軟體工程能力),熱心的社區開發者將這種技術和方法廣泛應用於更多平台(如 Linux、iOS 等)的開發中。這是一項值得擁有的技術。

時值今日,仍然很遺憾地看到,狹隘的國人還是那麼仇視 .NET 這個平台,並隱約將這種仇視投射到 .NET 開發者身上。.NET 首先是一種技術,然後才是它由微軟主導;現在,它已經成為一種獨立而極富生命力的開發風格並擁有大量的應用方向。


推薦閱讀:

學習腦科學、認知科學的相關知識對於普通人有哪些幫助?
去東京大學讀計算機研究生是個好選擇嗎?學界口碑如何?
Windows 7 為什麼不自動顯示文件夾大小?
如何評價神舟最近發布的售價19999元的神舟戰神GX8?

TAG:學習 | 編程 | 計算機 | NET | NET入門 |