孙鑫vc深入详解
《孙鑫VC深入详解》这本书,孙鑫深入放在今天看,详解有一种奇特的孙鑫深入错位感。它讲的详解是Visual C++,一个现在很多年轻程序员只在历史书里见过的孙鑫深入工具链。但如果你真翻开它,详解会发现书里那种拆解问题的孙鑫深入思路,比很多现代框架的详解教程更扎实。
我手头这本是孙鑫深入2007年出的,封面已经有点发黄。详解书里第一章不讲语法,孙鑫深入直接拿一个Windows窗口程序开刀。详解孙鑫的孙鑫深入做法是:先用MFC向导生成一个空壳,然后一行一行删掉自动生成的详解代码,看程序还能不能跑。孙鑫深入这种“逆向拆解”的教学方式,在当时很另类。大多数教材喜欢从变量、循环讲起,他偏不。他让你先看到一个能运行的窗口,再告诉你这个窗口背后发生了什么——消息循环、窗口过程、注册窗口类。
书里有个细节我印象很深。讲消息映射的时候,他画了一张图,把MFC的宏展开成原始Win32 API调用。那张图占了整整一页,箭头密密麻麻。他写了一句:“MFC不是魔法,它只是把Win32 API包装了一层。”这句话放在今天同样成立。很多人用Qt、用Electron,觉得框架能解决一切,但底层还是消息泵、事件循环。孙鑫在十几年前就把这层窗户纸捅破了。
书的后半部分讲COM,这是VC++里最硬的一块骨头。孙鑫没有一上来就讲接口定义、GUID,而是先写了一个最简单的DLL,让你用LoadLibrary和GetProcAddress手动加载。等你能跑通这个,他才说:“COM就是把这个过程标准化了。”这种从手动到自动的过渡,比直接讲IDL文件要舒服得多。我后来带新人,也常用这个办法——先让他们用最笨的方式实现一遍,再引入框架。
当然,这本书有它的时代局限。它假设你用的是VC6.0,很多代码在VS2019上编译不过。书里的MFC版本也旧,有些类已经废弃。但这不是重点。重点在于,孙鑫讲的是“为什么这么设计”,而不是“怎么点下一步”。比如讲文档/视图结构,他会解释为什么MFC要把数据和显示分开,而不是直接告诉你“照这个模板写”。
我见过一些读者抱怨这本书太厚、太细。确实,它不适合速成。但如果你愿意跟着它把每个例子敲一遍,你会对Windows程序的运行机制有一种“手感”。这种手感,看再多现代教程也换不来。现在的框架把太多东西藏起来了,你写app.run(),但不知道背后在跑什么。孙鑫的书恰恰相反,他把每一层都剥开给你看。
书里最后一章讲网络编程,用的是阻塞式socket。现在没人这么写了,但那个例子能让你理解TCP连接的本质。孙鑫在结尾处写了一句:“技术会过时,但原理不会。”这话听起来像老生常谈,可放在VC++这个语境里,特别真实。因为VC++本身已经过时了,可它承载的那些概念——消息、句柄、COM——还在各种地方活着。
如果你现在还在用C++写Windows程序,或者想理解那些老代码是怎么跑起来的,这本书值得翻一翻。不用从头到尾读,挑消息映射和COM那两章看就行。看完你会觉得,现在很多“新”东西,不过是旧瓶装新酒。
(责任编辑:休闲)














