梁肇新《编程高手箴言》读书笔记(一)

  将近期末,一直都比较忙,没时间更新blog

  之前在图书馆找到这本梁肇新的《编程高手箴言》,很兴奋,因为第一次看到这本书的时候是初中。当然,那时根本看不懂。现在重新拿起这本书有了一种全新的感觉。
  当然,这本书已经有点时日了,很多理念只能代表梁肇新的那个年代。之前看过云风的《我的编程感悟》,那本要新一些,相比之下会发现梁肇新这本书确实有他的不足。但无论如何,里头值得看的经典部分还是很多的。特别是我们这个年头学编程的,外界的趋势是逐渐从解决编程转向解决业务,但是事实上程序员要成长,底层的东西是不可避免要去了解的。正本书正好带来了很多这方面的知识。
  我记得《程序员》采访梁肇新的时候问过:如果只用一个问题来考面试者,会是什么问题。梁肇新说:“你会写病毒吗?”可以看得出梁肇新个人很重视底层开发。
  我下面会节录一些我自己觉得比较有价值的内容,或者说条款(有点effective XXX的感觉……)

第一章 程序点滴
1-1高手成长六个阶段:熟悉某种语言——精通平台接口或者库函数的使用——深入了解系统底层——直接在平台上做深层开发——全局把握体系结构——超越语言的限制,问题就是思路,而不是代码
//照这么说,我顶多也就2级的样子……甚至还没到……最后一个阶段有点现在SOA的感觉,确实,应对复杂多变的业务,要高效开发,已经不是语言不语言的事情了。

1-2“我就是程序,程序就是我”
//这句话在封底也印上了,看来挺重要的。梁肇新认为最高境界是以机器的思路考虑问题,即以程序的思考方式考虑程序,而不是设计程序的方式去思考程序。
//梁肇新个人比较重视底层开发,或者这句话就是一个体现。也可能是我的理解偏差。毕竟在设计程序时,架构师起码要看到一些用户看不到的东西。

1-3程序员不一定吃青春饭,微软的几个核心开发人士都有四五十岁
//这个说法应该会给一些人鼓舞

1-4程序员不等于要挨夜
//这个说话给我巨大的鼓舞~~~我就是不挨夜的人……确实,身体才是本钱。我看到周围很多牛人,有些挨夜,但是不挨夜的也能干得很好,关键是效率

1-5规范的代码格式是入门的基础
//非常好的想法。只是书里头很多代码的格式实在别扭……不知是不是排版问题。不过他的一些建议似乎并不太适用,例如tab=8格似乎有点夸张,何况当年屏幕这么小

1-6所有程序是调试出来的,不是写出来的
//同样很重要,但是书里头的调试办法有些落后。

1-7开放性思维
//粗略举个例:写win32程序只会用mfc,想实现一点超越mfc的东西就不会,那就是缺乏开放性思维的一种。
 
1-8没有不存在bug的编译器
//我本人已经见识过vs2005的编译bug了,打了sp1之后暂时还没看出什么问题。不过要真是遇到这么猥琐的事情,除非精通汇编,要不真是很难看得出来

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
肇新开发技术总结,值得借鉴 这是我在网上能够找到的最清晰的版本,分享给大家 目录: 第1章 程序点滴 1 1.1 程序≠软件 1 1.1.1 商业软件门槛的形成 2 1.1.2 认清自己的发展 4 1.2 高手是怎样练成的 5 1.2.1 高手成长的六个阶段 5 1.2.2 初级程序员和高级程序员的区别 7 1.2.3 程序员是吃青春饭的吗 9 1.3 正确的入门方法 11 1.3.1 规范的格式是入门的基础 13 1.3.2 调试的重要性 17 1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计流程 20 1.4.3 保证程序可预测性 21 第2章 认识CPU 23 2.1 8位微处理器回顾 23 2.2 16位微处理器 24 2.2.1 组成结构 24 2.2.2 8086寄存器组成 25 2.2.3 内存的寻址 26 2.2.4 中断处理 27 2.3 32位微处理器 29 2.3.1 寄存器组成 29 2.3.2 保护模式 32 2.3.3 80386的寻址方式 32 2.4 【实例】:在DOS实模式下读取4GB内存代码分析 36 2.4.1 程序的意义 37 2.4.2 程序代码 37 2.4.3 程序原理 41 2.4.4 程序中的一些解释 42 第3章 Windows运行机理 44 3.1 内核分析 44 3.1.1 运行机理 44 3.1.2 LE文件的格式 53 3.1.3 VxD的设计实现 59 3.1.4 【实例】:CPU降温程序代码分析 65 3.2 消息的运行方式 82 3.2.1 认识消息 82 3.2.2 Windows系统中消息的运作方式 84 3.2.3 消息处理过程实例 87 3.3 GDI的结构和组成 89 3.3.1 GDI的组成 89 3.3.2 GDI和DirectDraw的关系 91 3.4 线程的机制 93 3.4.1 线程的工作方式 93 3.4.2 线程与GDI的冲突:死机的主要原因 94 3.4.3 线程的内存泄漏的主要原因 96 3.4.4 进程管理 98 3.4.5 同步机制 100 3.5 PE结构分析 103 3.5.1 PE头标 103 3.5.2 表节 113 3.5.3 PE文件引入 119 3.5.4 PE文件引出 125 3.5.5 PE文件资源 129 第4章 编程语言的运行机理 133 4.1 汇编的原理 133 4.1.1 指令系统 133 4.1.2 汇编与Win API的接口方法 141 4.1.3 【实例】:自定义程序的入口点 145 4.2 高级语言的原理 151 4.2.1 C/C++的原理 151 4.2.2 解释语言的原理 165 4.2.3 【实例】:用C实现简单的BASIC语言环境 165 4.3 C、C++的学习方式 187 4.3.1 从BASIC到C 187 4.3.2 C、汇编、API的关系 187 4.3.3 接口的建立方法 190 4.4 挂钩技术 201 4.4.1 Windows上C的挂钩 201 4.4.2 C++的挂钩技术 213 第5章 代码的规范和风格 220 5.1 环境的设置 220 5.1.1 集成环境的设置 220 5.1.2 TAB值的设置 221 5.1.3 编译环境的设置 222 5.1.4 设置herosoft.dsm宏 224 5.2 变量定义的规范 227 5.2.1 变量的命名规则 227 5.2.2 变量定义的地方规定 228 5.2.3 变量的对齐规定 229 5.3 代码对齐方式、分块、换行的规范 230 5.4 快速的代码整理方法 232 5.5 注释的规范 233 5.6 头文件的规范 236 5.7 建议采用的一些规则 236 5.8 可灵活运用的一些规则 238 5.9 标准化代码示例 239 5.10 成对编码规则 243 5.10.1 成对编码的实现方法 243 5.10.2 成对编码中的几点问题 248 5.11 正确的成对编码的工程编程方法 251 5.11.1 编码前的工作 252 5.11.2 成对编码的工程方法 255 5.11.3 两个问题的解释 260 第6章 分析方法 266 6.1 分析概要 266 6.1.1 分析案例一:软件硬盘阵列 268 6.1.2 分析案例之二:游戏内存修改工具 274 6.2 接口的提炼 286 6.2.1 分离接口 286 6.2.2 参数分析 287 6.3 主干和分支 290 6.3.1 主干和分支分析举例 291 6.3.2 程序检?? 300 6.4 是否对象化 301 6.5 是否DLL化 307 6.5.1 DLL的建立和调用 307 6.5.2 DLL动态与静态加载的比较
讲述一个程序员成长的六个阶段: 1、能熟练地使用某种语言,这相当于练武中的套路和架式这些表面的东西。 2、精通基于某种平台的接口(如win的API),以及所对应语言的自身的库函数。这也就相当于可以进行真实的散打对练了,可以真实地在实践中做一些应用了。 3、此阶段能深入了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有剑,心中无剑” 4、此阶段能够直接在平台上进行比较深层次的开发。基本上能达到这个层次可以说是进入了高层次。这时进入了高级内功的修炼。比如能进行VxD或操作系统的内核的修改。这时已经不再有语言的束缚,此时语言只是一种工具,即使要用自己不会的语言进行开发,也只是简单地熟悉下,就手到擒来,完全不像是第一阶段的时候学习语言的那种情况。 5、此阶段已经不再局限于简单的技术上面的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面。可以说是“手中无剑,心中有剑”。到了这个阶段就能对市面上的任何软件进行剖析,并能按自己的要求进行设计,就算是MS Word这样的大型软件,只要有充足的时间,也一定能够设计出来。 6、最高境界,达到“无招胜有招”。这时候,任何问题都纯粹变成了一个思路问题,不是用什么代码就能表示的。此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁边看别人对战,就能把这拳来用。这个就是大师级别的人物。这时,Win32或Linux在眼里是没有什么区别的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值