热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一些Windows下经验

看到论坛上很多新人想从事windows开发,却不知从何学起,本ID是过来人,知道摸索,迷茫的痛苦,趁着周末,也就随便说两句。毫无疑问,windows是太阳系里面最值得学习的操作系统

看到论坛上很多新人想从事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有空再和大家探讨

一些Windows下经验


推荐阅读
  • NX二次开发:UFUN点收集器UF_UI_select_point_collection详解
    本文介绍了如何在NX中使用UFUN库进行点收集器的二次开发,包括必要的头文件包含、初始化和选择点集合的具体实现。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 蒜头君的倒水问题(矩阵快速幂优化)
    蒜头君将两杯热水分别倒入两个杯子中,每杯水的初始量分别为a毫升和b毫升。为了使水冷却,蒜头君采用了一种特殊的方式,即每次将第一杯中的x%的水倒入第二杯,同时将第二杯中的y%的水倒入第一杯。这种操作会重复进行k次,最终求出两杯水中各自的水量。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 如何配置VisualSVN以确保提交时必须填写日志信息
    在软件开发团队中,成员们有时会忘记在提交代码时添加必要的备注信息。为了规范这一流程,可以通过配置VisualSVN来强制要求团队成员在提交文件时填写日志信息。本文将详细介绍如何设置这一功能。 ... [详细]
  • 经过一年的思考,我发现自己对开发的兴趣并不浓厚,而对算法研究则更加热衷。本文将探讨开发与算法之间的本质差异,并分享我的未来学习计划。 ... [详细]
  • 本文介绍了一种支付平台异步风控系统的架构模型,旨在为开发类似系统的工程师提供参考。 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • 【妙】bug称它为数组越界的妙用
    1、聊一聊首先跟大家推荐一首非常温柔的歌曲,跑步的常听。本文主要把自己对C语言中柔性数组、零数组等等的理解分享给大家,并聊聊如何构建一种统一化的学习思想 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
author-avatar
qqq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有