經常發現有人在網上提出這樣的問題,現實中也確實有不少人在經歷了3-5年的windows開發之後就開始迷失方向,每天渾渾噩噩混日子,可能是因為這個問題粒度太大,沒人願意花時間回答,希望本文可以拋磚引玉,給大家節省些時間,同時也希望園子裡面的兄弟們能盡力的補充,從而使這篇文章可以幫助更多的後來人。
首先說明的是,本文提到的各種技術不分先後,沒有順序,雖然先學什麼,再學什麼對某些人來說可能更方便,但是這些都不是絕對的,因為每個人的情況不同。
windows開發首先必須學習的就是作業系統的api,因為其他的一切都是構建於os之上,所謂九層之台,起於壘土,如果你對linux的系統呼叫很熟悉就會發現其實他們大同小異,都是應用程式在使用系統提供的功能。
接下來是mfc,有了mfc你才真正的可以幹點開發,因為mfc實在是太全了,幾乎封裝了所有的windows api, 訊息迴圈,com實現…
到了此地,你可以開始學習除錯技術了,熟悉了除錯的各種技巧才可以做到事半功倍,得心應手。
接下來是組建物件模型com,作為windows的基石,不懂com,很難說自己精通windows程式設計,因為即使現在的.net framework也是構建於com之上,很多問題還是需要sos到底層去除錯。
當你懂得了com的精髓,你應該開始學習atl了,這個類庫可以使你的com開發更加得心應手。
說到atl就不能不提到他的前輩stl,這個出自於標準c++的類庫在windows上同樣也得到了很好的支援,有了stl在你有一天想轉linux開發也同樣會用得上。
windows 8中的winrt現在還沒有應用於實際開發,現有的技術中.net 是非常值得學習的,因為.net 的主旨是提高程式設計師的開發效率,在這個浮躁的世界,開發效率有時候能夠代表一切。
從com到.net只有一步之遙,.net 其實是從com+演化而來,具體細節請參看 don box的《.net 本質論》了解了這些會使你對.net的認識上公升到乙個新的層面。
接下來是c# 因為這傢伙是.net的嫡系部隊,除了il,這傢伙可以說和.net 的關係最為親近,大部分的新功能都會最先在其中加以體現。當你熟悉了c#, bcl,《clr via c#》可以說這個時候你已經可以勝任基本的c#開發了,可以很快寫出乙個小工具,完成乙個相關的task。
接下來是wcf和wpf,做分布式開發少不了wcf,同樣華麗的介面少不了xaml,wpf。
大概羅列了一些,其實每個主題仔細**下去都很有韻味,還有需要說的是,其實windows上面好多的東西都和unix很像,比如powershell明顯是為了像unix一樣,給開發者提供乙個更強大的shell, 如果有興趣,觸類旁通一下,也很是有趣。
還有:linq改變了我們的資料操作方式,統一了資料操作模型,經常運算元據的兄弟,你值得擁有。
f#作為一種函式式程式語言也很值得研究,由於本人使用不多,在此不作評價。
另外:作為基礎的演算法;
作為提公升功力的設計模式,uml;
作為改善系統效能的重構;
作為大部分分布式核心的tcp/ip;
等等主題也是值得大家研究的。
不當之處望大家批評、指正、拍磚, 並提出您的寶貴的意見和補充。
Windows程式設計師的學習路線
windows程式設計師的學習路線 1.當然要熟悉下c語言了 入門可以選用潭浩強的 c程式設計 當然最好能讀c programming language 特別要對其中的指標,結構體等東西一定要搞清楚了 要學好的很好至少要花費乙個月時間 為什麼要從c開始呢 1 c好學 2 大多數的作業系統核心部分是用...
程式設計師 高階程式設計師歷年試卷中硬體知識內容
程式設計師 高階程式設計師歷年試卷中硬體知識內容 程式設計師說明 括號內為所佔分數,未註明的均為5分。1987 數制轉換 邏輯式化簡 外設 印表機 計算機組成綜合知識 1988 數制與 邏輯式化簡 計算機組成綜合知識 定址方式 1989 與數制 邏輯式化簡 磁碟機與磁帶機 計算機組成綜合知識 199...
程式設計師高效Windows環境配置
個人比較追求高效 效率。以下是我常用的windows配置希望對大家有幫助。身為程式設計師,我特別喜歡mac pro的retina屏,在那程式設計簡直是一種享受。等我買了mac pro在發一篇mac下的 windows自帶程式的話,alt space就可以調出如下快捷操作,我們自己安裝的程式一般也可以...