Windows程序员应该要学什么

经常发现有人在网上提出这样的问题,现实中也确实有不少人在经历了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;
等等主题也是值得大家研究的。
最后借鲁迅的话收尾:其实地上本没有路,走的人多了也便成了路,希望大家不要把时间都浪费了,原来还有好多东西可以去钻研。
不当之处望大家批评、指正、拍砖, 并提出您的宝贵的意见和补充。

加密技术及加密哈希值算法是怎样服务于区块链的?
富士达2018上半年营收1.83亿元 净利453.82万元
2018手机通讯零售,将会呈现什么趋势、何种状态?
随着中国新能源汽车蓬勃发展 国内电池行业也正在加速扩张中
农业小型气象站性能有哪些?
Windows程序员应该要学什么
芯片技术是我国现阶段最需要突破的关键核心技术
简化LTE的复杂性:第一个可重构的射频前端
推动半导体产业高质量发展,耐科装备上市IPO深耕先进封装技术
AVR下载电路的设计
单相和三相电源之间的区别是什么?什么情况需要三相电源?
一文解析自组网透传、LoRaNET和LoRaWAN三种协议
开关电源常见的使用问题以及如何排除故障
【技能秒get】这才是纹波的正确测试方法
安捷伦科技和Altair半导体公司携手合作,帮助制造商加快开
中建和旷视如何共同打造人工智能平台
博世和阿里巴巴正式宣布签署了战略合作谅解备忘录
Freescale的汽油发动机管理解决方案
KT面向5G用户将推出8款应用程序定向流量免费的活动
2021世界传感器大会将于2021年11月1日-3日在河南郑州举办