给windows客户端开发新人的一点建议

wininternal 2012-05-26 10:14:19
[size=12px]
看到论坛上很多新人想从事windows开发,却不知从何学起,本ID是过来人,知道摸索,迷茫的痛苦,趁着周末,也就随便说两句。
毫无疑问,windows是太阳系里面最值得学习的操作系统,windows的影响力,至今没有任何系统可以代替。但是windows也是最复杂的操作系统,找到一条入门之路非常关键。
windows的成功,在于他的易用,易用性是通过UI来体现的,所以UI开发,本ID觉得是比较好的一个入门之路。而UI开发有一本圣经,也就是charles petzold的prograrmming windows。windows要想入门,这本书是必读。这本书最有用的是前半本,是windows的基础,就算是以后不从事windows的UI开发,深入理解前半本也是非常有必要的。这本书是用C语言来讲述,所以没有必要去学C++。至于c++,本ID写了个帖子,叫做 c++,垃圾中的战斗机,有兴趣的可以点本ID的资料进去看。
这本书学完之后,推荐看一下jeffrey richter的windows via c/c++,这也是一本很经典的书,出了N个版本了,充分说明了它的受欢迎程度。这本书会告诉一些windows上你看不到的东西是怎么做的,比如说进程,线程,异常处理,内存映射,线程同步等等等等。
这两本书,可以说是windows开发的必备,只要懂了这两本书,国内大部分公司的客户端初级开发,是绝对可以胜任的。
这两本书看完后,可以去看一下sdk,把这两本书牵涉到的相关东西给全面化一下。因为书只是讲一些作者认为的重点,很多附带的东西不会讲,而SDK里面有最全面的资料。SDK相关的about 和using一定要通读,这样你会知道都可以做什么事情,大概能怎么做,reference里面有空也可以看看,最好能动手自己调调相关的API。本ID当年是一个个API接着看了下来的,并且还发现了一些API是我们总监所不知道的,总监因此对本ID提出了表扬。几年后,本ID组内一新同事,也发现了本ID所不知道的API,本ID虽不是总监,对他也暗中表扬了一番。当然,API知道的多寡并不是很有趣或者有意义的标准,但最起码能说明你的努力程度。
上述三个工作做完后,你应该已经成为一个比较受重视的客户端开发,按照目前的行情,在北京虽然找个地方拿个十多万的不会太难。
进一步,建议学习一下网络相关的开发,可以看看windows网络编程,熟悉之后,再利用SDK把网络相关的知识面给扩充一下。
然后,可以学习下COM。COM这玩意,是很让人崩溃的一个东西,初学者看他就是不停的绕弯,不给你来真的,太复杂,但是它就是真的解决了很多问题。推荐两本书,com本质论 和 com技术内幕。至于潘爱民的com原理与应用,可以作为速查手册,潘先生这本书写的极为简练,本ID严重怀疑除了他是否还有别人能看懂。
下面,可以考虑下去学0层的东西,毕竟玩了这么久,还是在3层混,好多东西都不知道咋回事,怎么都不能算是一个真正专业的程序员。这里,也有一本经典的入门书,mark russinovich的windows internal。这本书已经出到第六版了,目前只出了part1,加上part2估计得有1500多页,并且国内没有翻译。本ID正在慢慢翻一点,但是项目太忙,进度太慢。这本书会让你了解windows的底层。与此同时,可以学习驱动开发,这方面的书自己找吧,本ID就不做推荐了。

到了这步,也不要得意,你学到的全是知识,知识是死的,是陈旧的,需要不断更新。更新的知识来源不能靠书,因为书是非常落后的信息源,在你一无所知的时候,利用书可以快速充实起来,当你把经典的书都学会的时候,必须保持一颗好奇心,去寻找最新的信息源。
最新的信息源,毫无疑问,当然是来自微软的msdn,每次windows有更新,都会出N多技术资料,这些是非常宝贵的技术资料,有时间,有精力,一定要去学一下。另外,国外有很多技术博客,也都很好,本ID收藏了N多,但限于时间,就不在这里分享了。
说到这里,本ID补充一下,技术人员的英语可以不过4,6级,但是一定要达到能熟读msdn资料的地步。很多人总是觉得自己英语不好,不行,看不了,其实是对自己没有信心!不妨想一想,美国人都说英语,咱们比他们智力差吗,怎么就学不来!程序员,不管男人,女人,女博士,对自己都要充满信心!!

最后,请严重注意:本ID这里说的都是知识,知识要和实际结合起来,才能转化成有用的生产力。一名技术人员的成功,不是自己成了一本活字典,什么知识都明白,什么东西都做过,而是利用技术,做出来一个有影响力的产品!!
至于如何灵活运用知识,那是另外一个话题了,本ID有空再和大家探讨。

[/size]
...全文
1507 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员一灯 2013-09-30
  • 打赏
  • 举报
回复
zzz9413 2013-09-26
  • 打赏
  • 举报
回复
引用 27 楼 wininternal 的回复:
[quote=引用 23 楼 zzz9413 的回复:] 楼主完全是误导人 经常看到一些人,说什么MSDN伤去学校。MSDN只不过是字典而已 还经常有人说学什么API\算法\数据结构 从零开始学校实际的,而不是像在校学生那样打基础,学理论。 无论做桌面程序还是WEB程序,一本《C#入门经典就够用》,两周内编出一个数据库系统。 如果感觉这本书不够生动,那再建议一本《深入浅出C#》,这本书让读者有思考和主动性。 入门就学会使用VS来拖下控……
单从技术上来说,你这个入门推荐让本ID笑掉大牙了,大家一起来笑笑吧[/quote] 你只会吹牛而已,网上复制点东西就夸夸其谈。 比技术是吗?本人学习一年多使用C#在一个行业做出了专利。
无聊找乐 2013-02-13
  • 打赏
  • 举报
回复
桌面开发还是delphi好用,傻子才用VC
ForestDB 2013-01-24
  • 打赏
  • 举报
回复
引用 33 楼 wininternal 的回复:
引用 32 楼 ForestDB 的回复:本ID希望能和LZID交流下,主要是请教。 有问题就这里发言吧,大家一起讨论
大神帮忙看看这个问题吧: http://bbs.csdn.net/topics/390324165
Lena-Yang 2013-01-21
  • 打赏
  • 举报
回复
还没学到windows平台的开发 目前认为自己比较喜欢linux平台的东西 但是,windows确实用户量太大,没法子。做CS软件,肯定得windows。
ForestDB 2013-01-20
  • 打赏
  • 举报
回复
本ID希望能和LZID交流下,主要是请教。
序员 2013-01-20
  • 打赏
  • 举报
回复
wininternal 2013-01-20
  • 打赏
  • 举报
回复
引用 32 楼 ForestDB 的回复:
本ID希望能和LZID交流下,主要是请教。
有问题就这里发言吧,大家一起讨论
wininternal 2012-12-31
  • 打赏
  • 举报
回复
引用 29 楼 backspace 的回复:
搞客户端开发,很多时候会碰上各种各样自己的或者他人的程序运行错误,熟悉Windows调试工具windbg很有必要。推荐<<Advanced Windows Debugging>>或<<软件调试>>。
这个很重要,感谢你弥补了本id的遗漏!
8个l 2012-12-31
  • 打赏
  • 举报
回复
每天回复以示存在。
backspace 2012-12-30
  • 打赏
  • 举报
回复
搞客户端开发,很多时候会碰上各种各样自己的或者他人的程序运行错误,熟悉Windows调试工具windbg很有必要。推荐<<Advanced Windows Debugging>>或<<软件调试>>。
wininternal 2012-12-29
  • 打赏
  • 举报
回复
引用 22 楼 ollydbg 的回复:
很少做桌面开发的了吧。。。 基本都搞到BS架构了,搞网络通讯、服务端、嵌入式开发吧
同意
wininternal 2012-12-29
  • 打赏
  • 举报
回复
引用 23 楼 zzz9413 的回复:
楼主完全是误导人 经常看到一些人,说什么MSDN伤去学校。MSDN只不过是字典而已 还经常有人说学什么API\算法\数据结构 从零开始学校实际的,而不是像在校学生那样打基础,学理论。 无论做桌面程序还是WEB程序,一本《C#入门经典就够用》,两周内编出一个数据库系统。 如果感觉这本书不够生动,那再建议一本《深入浅出C#》,这本书让读者有思考和主动性。 入门就学会使用VS来拖下控……
单从技术上来说,你这个入门推荐让本ID笑掉大牙了,大家一起来笑笑吧
wininternal 2012-12-29
  • 打赏
  • 举报
回复
windows客户端确实日薄西山,如果身在此行而不知如何入门或者面对MFC无处下手者,可参考本ID建议。
zzz9413 2012-10-12
  • 打赏
  • 举报
回复
先从码农做起,然后入门了,才知道有多少发展方向,才知道后面的阶段是怎样。
不从码农做起,难道幻想苦修几年出来就是高手?
zzz9413 2012-10-12
  • 打赏
  • 举报
回复
楼主完全是误导人
经常看到一些人,说什么MSDN伤去学校。MSDN只不过是字典而已
还经常有人说学什么API\算法\数据结构

从零开始学校实际的,而不是像在校学生那样打基础,学理论。

无论做桌面程序还是WEB程序,一本《C#入门经典就够用》,两周内编出一个数据库系统。
如果感觉这本书不够生动,那再建议一本《深入浅出C#》,这本书让读者有思考和主动性。
入门就学会使用VS来拖下控件,再绑定数据。其他的网络、多线程、webservice先不用管。
szu_john 2012-10-12
  • 打赏
  • 举报
回复
好吧,本ID给你顶一个!
「已注销」 2012-10-11
  • 打赏
  • 举报
回复
很少做桌面开发的了吧。。。 基本都搞到BS架构了,搞网络通讯、服务端、嵌入式开发吧
zhousitiaoda 2012-09-20
  • 打赏
  • 举报
回复
最近在面试,50%的公司(面的是C++开发的)或多或少都会问到com这块,看来还是有必要学下的
猴头 2012-09-20
  • 打赏
  • 举报
回复
可是现在C/C++开发桌面应用太复杂,很多效果做出来不太容易。

买了一本Windows核心编程一直没有通读,只是偶尔翻翻,但其中很多 不明所以
加载更多回复(19)

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧