﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-漫步者-文章分类-读书</title><link>http://www.cppblog.com/Walker/category/16310.html</link><description>先学会转文章，在仔细读文章，最后自己写点东西........</description><language>zh-cn</language><lastBuildDate>Tue, 20 Sep 2011 23:06:09 GMT</lastBuildDate><pubDate>Tue, 20 Sep 2011 23:06:09 GMT</pubDate><ttl>60</ttl><item><title>谷歌用户体验设计准则</title><link>http://www.cppblog.com/Walker/articles/144238.html</link><dc:creator>漫步者×&amp;……%￥</dc:creator><author>漫步者×&amp;……%￥</author><pubDate>Thu, 14 Apr 2011 12:27:00 GMT</pubDate><guid>http://www.cppblog.com/Walker/articles/144238.html</guid><wfw:comment>http://www.cppblog.com/Walker/comments/144238.html</wfw:comment><comments>http://www.cppblog.com/Walker/articles/144238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Walker/comments/commentRss/144238.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Walker/services/trackbacks/144238.html</trackback:ping><description><![CDATA[<div class=blkCont>
<p><strong>谷歌的愿景</strong></p>
<p>Googl用户体验团队致力于创建有用的（useful）、快速的（fast）、简单的（simple）、有吸引力的（engaging）、创新的（&nbsp;innovative）、适合大众的（universal）、有用的（profitable）、漂亮的（beautiful）、值得信赖的（trustworthy）、个性化的（personable）的应用。</p>
<p><strong>Google用户体验的十大准则</strong></p>
<p><strong>1.将焦点集中在用户的生活，工作，和他们的梦想上</strong></p>
<p>Google用户体验小组努力发现用户的真正需求，包括那些他们自己都无法阐明的需求。有了这些信息，Google就可以创建解决现实问题的产品并激发所有人的创造力。Google的目标不仅仅是按部就班的工作，而是改善人们的生活。总之，一个精心设计的Google产品在日常生活中是非常有用的。他并不是靠花哨的视觉效果和技术打动用户的，虽然也有具备这些特性。他不会强迫用户去使用他们不想要的特性，但是他会引导有兴趣的用户自发的去使用他们。他不会入侵别人的生活，但是回想那些想要探索世界信息、工作的更加快速和便捷、分享想法的用户敞开大门。</p>
<p><strong>2.每一毫秒的价值</strong></p>
<p>没有什么比用户的时间更加宝贵。Google页面的快速加载得力于精简的代码和精心挑选的图片。为了让用户更加容易的找到想要的内容，Google将最重要的功能和文本放在最显眼的位置。一些不必要的点击、输入、步骤和其他操作都被Google去除了。Google的产品只会请求一次信息并且包含了智能的默认选项。所有任务都是高效的。速度为用户带来便利。如果没有充足的理由，Google绝对不会牺牲速度。</p>
<p><strong>3.简单就是力量</strong></p>
<p>简单造就了良好设计中的许多元素，包括易用性、速度、视觉效果和可访问性。一个产品从设计之初就应该保持简单。Google不打算创建功能繁复的产品，我们最好的设计只包含那些用户完成目标过程中所必需的功能。即使产品需要大量的特性和复杂的视觉设计，也要看起来简单而强大。在以牺牲简单为代价去追求一个不太重要的功能之前，Google会三思而后行。Google希望将产品推向新的发展方向，而不仅仅是增加更多功能。</p>
<p><strong>4.引导新手和吸引专家</strong></p>
<p>为多数人设计并不意味着为降低标准设计。最好的Google设计表面上看起来很简单，但是却包含了强大的功能，可以让需要的用户很容易地访问到。Google的目标是为新用户提供美妙的初始体验，同时也吸引那些经验丰富的用户，他们会让其他人也来使用这个产品。一个精心设计的Google产品会让新用户很快熟悉，在必要的时候提供帮助，并且保证用户可以通过简单符合直觉的操作使用产品的大多数有价值的功能。逐步披露高级功能会鼓励用户去扩展他们对产品的使用。在适当情况下，Google会适时地提供一些智能功能来吸引那些资深网络用户——那些在多个设备和电脑之间共享数据的人、在线上和线下工作的人、以及需要存储空间的人。</p>
<p><strong>5.敢于创新</strong></p>
<p>设计上的一致性为Google产品获得信任的基石，它令用户舒适并提高他们的工作效率。但是要想把设计从沉闷乏味变得令人愉快就要依靠想象力。Google鼓励那些创新、冒险的设计，只要它们符合用户需求。团队鼓励新的想法并发展它们。不是为了去适应现有的产品功能，Google更着眼于改变整个游戏规则。</p>
<p><strong>6.为全世界设计</strong></p>
<p>万维网已经向世界各地的人们开放了互联网上的所有资源。例如，很多用户通过移动设备来使用Google的产品，而不是坐在桌子前面通过电脑。我们设计出的产品应该在用户随意选择的任何一种媒介上都可以适时调整和使用。在可能的情况下，Google会适时地支持较慢的连接速度和旧版的浏览器，而且Google会允许用户选择如何浏览信息（屏幕大小，字体大小）和如何输入信息（智能查询分析）。用户体验团队会研究世界上用户体验的根本差异，为每一个用户、每一个设备和每一种文化设计出合适的产品。简单的翻译，或者功能上的&#8220;优雅降级&#8221;，都不足以满足人们的需要。Google还致力于改善产品的可访问性。Google对简单和具有包容性产品的渴望，以及Google让全世界的信息普遍可访问的使命，都要求产品支持辅助技术，向包括有身体和认知缺陷在内的所有用户提供愉悦的体验。</p>
<p><strong>7.安排今天和明天的业务</strong></p>
<p>那些盈利的Google产品竭力做到以有助于用户的方式赚钱。为了实现这一崇高目标，设计师将和产品团队一起确保商业计划能够和用户的目标无缝集成。他们会确保广告具有相关性、有用并可以明确地识别出是广告。Google也会注意保护那些广告客户和其它靠Google谋生的人的利益。如果靠某个产品增加收入会减少Google未来的用户数量，那么Google绝对不会做这种尝试。如果一个有利可图的设计没有让用户满意，它就会被打回重做。不是每个产品都需要盈利，但是不能有产品对业务不利。</p>
<p><strong>8.愉悦用户的眼睛，但不分散注意力</strong></p>
<p>如果人们看到一个Google的产品时说&#8220;哇，真漂亮！&#8221;，用户体验团队就可以欢呼了。一个积极的第一印象会让用户觉得舒服，使他们确信这个产品是可靠和专业的，并且会鼓励用户做出自己的产品。简约美学对于大部分的Google产品都是适用的，因为一个干净、清爽、加载迅速，而且不会分散用户的注意力的设计一定符合用户需求的。吸引人的图像、颜色和字体需要与速度、可扫描文本和简易导航取得平衡。尽管如此，考虑到用户和文化背景的因素，&#8220;简单优雅&#8221;并不是对所有产品来说都是最合适的。Google产品的视觉设计会让用户感到满意并且有助于使用。</p>
<p><strong>9.值得信任</strong></p>
<p>好的设计可以深深赢得使用Google产品的用户的信任。Google可靠性的建立是从基础就开始的，例如，界面确保高效和专业、动作容易撤销、广告被明确识别、术语的一致性以及令用户惊喜而非惊诧。此外，Google的产品是向全世界开放的，它包含指向竞争对手的链接并且鼓励用户做出贡献，如社区地图或者iGoogle小工具。一个更大的挑战是确保Google对用户控制自己数据的权利表示了尊重。在如何使用信息和信息如何共享给他人（如果有的话）方面，Google是透明的，所以用户可以做出知情的选择。我们的产品在有危险的时候会警告用户，比如不安全的链接，使用户容易受到垃圾邮件骚扰的行为，或者将数据分享在Google之外的其它地方而被存储的可能性。Google越大，遵循&#8220;不作恶&#8221;的座右铭就越重要。</p>
<p><strong>10.有人情味</strong></p>
<p>Google包括了各种各样的人格特质，而Google的设计也是有人性的。文本和设计元素都是友好、机灵并且智能的，而不是枯燥、古板或傲慢的。Google的文本直接和用户对话，并提供实际、非正式的协助，就像任何一个人回答邻居所提出的问题一样。而且Google不会让有趣或个性干扰到设计的其它元素，尤其是当人们被生活或找到重要信息的能力严重困扰的时候。</p>
<p>Google并不是什么都懂，而且没有设计是完美的。Google的产品希望得到反馈，Google会根据这些反馈采取行动。当实践这些设计准则的时候，Google用户体验团队会在每个产品的可用时间里寻找最佳的平衡。然后，迭代、创新和改善会循环往复。</p>
</div>
<img src ="http://www.cppblog.com/Walker/aggbug/144238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Walker/" target="_blank">漫步者×&……%￥</a> 2011-04-14 20:27 <a href="http://www.cppblog.com/Walker/articles/144238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>COM本质论 读书笔记</title><link>http://www.cppblog.com/Walker/articles/142190.html</link><dc:creator>漫步者×&amp;……%￥</dc:creator><author>漫步者×&amp;……%￥</author><pubDate>Sat, 19 Mar 2011 02:17:00 GMT</pubDate><guid>http://www.cppblog.com/Walker/articles/142190.html</guid><wfw:comment>http://www.cppblog.com/Walker/comments/142190.html</wfw:comment><comments>http://www.cppblog.com/Walker/articles/142190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Walker/comments/commentRss/142190.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Walker/services/trackbacks/142190.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="LAYOUT-GRID:  15.6pt none" class=Section0>
<h1 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 22pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">COM</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 22pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></h1>
<h2 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-FAMILY: '黑体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">第一章&nbsp;<font face=Arial>COM&nbsp;</font><font face=黑体>是一个更好的</font><font face=Arial>C++</font></span><span style="FONT-FAMILY: '黑体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></h2>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">动态链接与</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">C++</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-25049.png" width=505 height=185><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-21427.png" width=507 height=403><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-30281.png" width=510 height=217><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-22539.png" width=508 height=356><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-102.png" width=554 height=208><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-24545.png" width=522 height=92><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-13180.png" width=497 height=359><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-12144.png" width=554 height=244><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-12407.png" width=202 height=31><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-811.png" width=401 height=95><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-11366.png" width=480 height=218><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-9381.png" width=506 height=137><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-6213.png" width=523 height=200><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-16314.png" width=554 height=193><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-15379.png" width=513 height=306><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-16848.png" width=504 height=215><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-1905.png" width=247 height=32><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-7285.png" width=513 height=382><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-11361.png" width=524 height=389><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-19880.png" width=554 height=167><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-31968.png" width=539 height=241><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-25473.png" width=209 height=24><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-2671.png" width=501 height=172><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-7713.png" width=504 height=111><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-16073.png" width=554 height=194><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-10760.png" width=518 height=130><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-8019.png" width=485 height=249><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-32331.png" width=499 height=119><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-14604.png" width=554 height=176><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-1338.png" width=554 height=321><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-24843.png" width=554 height=375><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-11127.png" width=523 height=288><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-5574.png" width=398 height=86><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-4242.png" width=554 height=188><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-28598.png" width=554 height=293><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-11677.png" width=554 height=312><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-17442.png" width=482 height=375><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<h2 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-FAMILY: '黑体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">第二章&nbsp;接口</span><span style="FONT-FAMILY: '黑体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></h2>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">IDL&nbsp;</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-10587.png" width=554 height=400><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-29445.png" width=554 height=119><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-3834.png" width=554 height=134><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">接口和</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">IDL</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">接口定义有<font face="Times New Roman">4</font><font face=宋体>各部分：接口名字，基接口名字，接口体和接口属性。</font></span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">接口体只是一组方法定义的简单结合，并且支持简单类型定义语句，接口定义如下：</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-24946.png" width=438 height=86><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-882.png" width=134 height=87><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-27628.png" width=554 height=56><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-14077.png" width=554 height=39><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-14462.png" width=533 height=142><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<h3 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">IUnknow<font face=宋体>接口</font></span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></h3>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-31565.png" width=554 height=26><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-20125.png" width=554 height=141><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">下面是</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">IUnknow<font face=宋体>接口的</font><font face="Times New Roman">C++</font><font face=宋体>定义：</font></span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-27748.png" width=549 height=161><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-19227.png" width=554 height=299><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-18748.png" width=241 height=76><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-30902.png" width=554 height=126><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-17059.png" width=538 height=195><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-6656.png" width=536 height=153><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-31215.png" width=548 height=48><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-22457.png" width=516 height=98><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<h3 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></h3>
<h3 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">强制类型转换和</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">IUnknow</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></h3>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">下面是</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">QueryInterface<font face=宋体>的</font><font face="Times New Roman">idl</font><font face=宋体>描述：</font></span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-30341.png" width=436 height=60><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-7894.png" width=554 height=39><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-20537.png" width=554 height=51><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-21438.png" width=527 height=63><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-32277.png" width=554 height=434><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-11406.png" width=467 height=25><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-29715.png" width=406 height=111><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-21092.png" width=554 height=228><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-20415.png" width=554 height=50><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<h3 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'">异常</span><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 16pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"><o:p></o:p></span></h3>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-10743.png" width=395 height=30><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-4836.png" width=554 height=264><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class=p0><span style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
</div>
<!--endfragment-->
<img src ="http://www.cppblog.com/Walker/aggbug/142190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Walker/" target="_blank">漫步者×&……%￥</a> 2011-03-19 10:17 <a href="http://www.cppblog.com/Walker/articles/142190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>程序员网站</title><link>http://www.cppblog.com/Walker/articles/132328.html</link><dc:creator>漫步者×&amp;……%￥</dc:creator><author>漫步者×&amp;……%￥</author><pubDate>Wed, 03 Nov 2010 12:49:00 GMT</pubDate><guid>http://www.cppblog.com/Walker/articles/132328.html</guid><wfw:comment>http://www.cppblog.com/Walker/comments/132328.html</wfw:comment><comments>http://www.cppblog.com/Walker/articles/132328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Walker/comments/commentRss/132328.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Walker/services/trackbacks/132328.html</trackback:ping><description><![CDATA[<p>[序言] <br>其实大家都可以成为一个厉害的软件开发人员，希望大家通过了解我提供的这些网站找到自己的兴趣爱好，以增强自己的信心。</p>
<p>[建议] <br>为了能让更多的朋友看到此链接,如果大家是csdn用户,那么请选择[收藏]来收录本文章,以获得csdn的收藏排名.那么就会有更多的朋友看到了.知识是分享的......</p>
<p>[宣传] <br>80x86汇编小站站长:猪头三(Code_GodFather)<br>独立开发磁盘性能优化工具: Real-depth Defragmenter(磁盘深度整理者)<br>软件下载:http://www.x86asm.com/RDD/Index.html </p>
<p>[常用搜索引擎] <br><a href="http://www.google.com/">http://www.google.com/</a> <br><a href="http://www.bing.com/">http://www.bing.com/</a> <br><a href="http://www.kngine.com/">http://www.kngine.com/</a> </p>
<p>[汇编语言] <br><a href="http://www.asmcommunity.net/">http://www.asmcommunity.net/</a> <br><a href="http://www.masm32.com/">http://www.masm32.com/</a> [Win32 Asm]<br><a href="http://www.cs.cmu.edu/~ralf/files.html">http://www.cs.cmu.edu/~ralf/files.html</a> [x86中断列表]<br><a href="http://www.nasm.us/">http://www.nasm.us/</a> [NASM]<br><a href="http://www.winasm.net/">http://www.winasm.net/</a> [Winasm汇编编辑器]<br><a href="http://x86asm.net/index.html">http://x86asm.net/index.html</a> <br><a href="http://flatassembler.net/">http://flatassembler.net/</a> [FASM]<br><a href="http://www.wasm.ru/">http://www.wasm.ru/</a> </p>
<p>[Windows驱动开发] <br><a href="http://www.osronline.com/">http://www.osronline.com</a> [Windows驱动开发新闻组]<br><a href="http://www.driverdevelop.com/">http://www.driverdevelop.com</a> [Windows驱动开发论坛]<br><a href="http://www.microsoft.com/whdc/default.mspx">http://www.microsoft.com/whdc/default.mspx</a> [Windows硬件开发中心]<br><a href="http://www.hollistech.com/">http://www.hollistech.com/</a> [提供DDK WDK编译脚本 重要]<br><a href="http://kernelmustard.com/">http://kernelmustard.com/</a> <br><a href="http://blogs.msdn.com/peterwie/default.aspx">http://blogs.msdn.com/peterwie/default.aspx</a> <br><a href="http://blogs.msdn.com/doronh/default.aspx">http://blogs.msdn.com/doronh/default.aspx</a> </p>
<p>[Windows内核资料] <br><a href="http://www.virtualbox.org/">http://www.virtualbox.org/</a> <br><a href="http://www.winehq.org/">http://www.winehq.org/</a> <br><a href="http://www.reactos.org/">http://www.reactos.org/</a> <br><a href="http://undocumented.ntinternals.net/">http://undocumented.ntinternals.net/</a> <br><a href="http://blogs.technet.com/b/markrussinovich/">http://blogs.technet.com/b/markrussinovich/</a> [微软技术专家Mrak Blog] <br><a href="http://forum.sysinternals.com/default.asp">http://forum.sysinternals.com/default.asp</a> <br><a href="http://www.sysprogs.org/">http://www.sysprogs.org/</a> [基于WinDBG内核的调试器,包含多种小工具源码] </p>
<p>[病毒/木马技术研究] <br><a href="http://vx.netlux.org/">http://vx.netlux.org/</a> <br><a href="http://www.f13-labs.net/">http://www.f13-labs.net/</a> <br><a href="http://www.invisiblethings.org/">http://www.invisiblethings.org/</a> <br><a href="http://www.rootkit.com/">http://www.rootkit.com</a> </p>
<p>[病毒信息跟踪] <br><a href="http://www.malwaredomainlist.com/">http://www.malwaredomainlist.com/</a> <br><a href="http://www.virscan.org/">http://www.virscan.org/</a> </p>
<p>[Delphi]语言] <br><a href="http://www.cnblogs.com/del/">http://www.cnblogs.com/del/</a> 万一的Delphi博客<br><a href="http://www.ccrun.com/">http://www.ccrun.com/</a> C++ Bulider研究<br><a href="http://delphi.about.com/">http://delphi.about.com/</a> <br><a href="http://www.regular-expressions.info/delphi.html">http://www.regular-expressions.info/delphi.html</a> 正则表达式Delphi版<br><a href="http://www.delphifr.com/Delphi">http://www.delphifr.com/Delphi</a> 源码综合网站<br><a href="http://www.bilsen.com/Delphi">http://www.bilsen.com/Delphi</a> GDI+封装库<br><a href="http://blog.csdn.net/maozefa">http://blog.csdn.net/maozefa</a> Delphi GDI+国人高手<br><a href="http://www.torry.net/">http://www.torry.net/</a> Delphi组件大全<br><a href="http://www.mustangpeak.net/">http://www.mustangpeak.net/</a> EasyListView控件<br><a href="http://http//www.soft-gems.net/">http://http://www.soft-gems.net/</a> Virtual Treeview<br><a href="http://graphics32.org/">http://graphics32.org/</a> GDI32封装库<br><a href="http://sourceforge.net/projects/fastmm/">http://sourceforge.net/projects/fastmm/</a> FastMM4<br><a href="http://fastcode.sourceforge.net/">http://fastcode.sourceforge.net/</a> FastCode</p>
<p>[C/C++ VC] <br><a href="http://www.vchelp.net/">http://www.vchelp.net/</a> <br><a href="http://mindhacks.cn/">http://mindhacks.cn/</a> <br><a href="http://www.vckbase.com/">http://www.vckbase.com/</a> <br><a href="http://www.boost.org/">http://www.boost.org/</a> C++ Boost STL标准库<br><a href="http://msdn.microsoft.com/zh-cn/visualc/default.aspx">http://msdn.microsoft.com/zh-cn/visualc/default.aspx</a> 微软MSDN VC++知识库<br><a href="http://www.stlchina.org/">http://www.stlchina.org/</a> STL标准库 中文网站<br><a href="http://www2.research.att.com/~bs/homepage.html">http://www2.research.att.com/~bs/homepage.html</a> C++之父的老巢 </p>
<p>[逆向/破解] <br><a href="http://www.pediy.com/">http://www.pediy.com</a> <br><a href="http://www.unpack.cn/">http://www.unpack.cn/</a> <br><a href="http://www.zerorev.net/">http://www.zerorev.net/</a> 相关破解工具及资料的收藏网站 <br><a href="http://www.openrce.org/">http://www.openrce.org/</a> <br><a href="http://www.woodmann.com/">http://www.woodmann.com/</a> </p>
<p>[软件安全/漏洞] <br><a href="http://www.safemode.org/">http://www.safemode.org/</a> <br><a href="http://www.milw0rm.com/">http://www.milw0rm.com/</a> <br><a href="http://projectshellcode.com/">http://projectshellcode.com/</a> <br><a href="http://www.metasploit.com/">http://www.metasploit.com/</a> </p>
<p>[代码资源网站] <br><a href="http://www.codes-sources.com/">http://www.codes-sources.com/</a> <br><a href="http://sourceforge.net/">http://sourceforge.net/</a> <br><a href="http://www.google.com/codesearch">http://www.google.com/codesearch</a> <br><a href="http://www.koders.com/">http://www.koders.com/</a> <br><a href="http://www.krugle.com/">http://www.krugle.com/</a> <br><a href="http://msdn.krugle.com/">http://msdn.krugle.com/</a> krugle跟微软合作 <br><a href="http://www.codeproject.com/">http://www.codeproject.com/</a> </p>
<p>[编程综合资讯网站] <br><a href="http://www.csdn.net/">http://www.csdn.net/</a> <br><a href="http://www.itpub.net/">http://www.itpub.net/</a> <br><a href="http://blog.joycode.com/">http://blog.joycode.com/</a> </p>
<p>[音视频开发] <br><a href="http://www.doom9.net/">http://www.doom9.net/</a> <br><a href="http://ffmpeg.org/">http://ffmpeg.org/</a> <br><a href="http://avisynth.org/">http://avisynth.org/</a> <br><a href="http://mediainfo.sourceforge.net/">http://mediainfo.sourceforge.net/</a> <br><a href="http://cdrecord.berlios.de/private/cdrecord.html">http://cdrecord.berlios.de/private/cdrecord.html</a> </p>
<p>[浏览器网页跨平台测试] <br><a href="http://browsershots.org/">http://browsershots.org/</a> <br><a href="http://ipinfo.info/netrenderer/">http://ipinfo.info/netrenderer/</a> <br><a href="http://www.browsrcamp.com/">http://www.browsrcamp.com/</a> <br><a href="https://browserlab.adobe.com/en-us/index.html">https://browserlab.adobe.com/en-us/index.html</a> 更多请查看: 跨浏览器测试资源大全 </p>
<p>[网页开发] <br><a href="http://www.w3school.com.cn/">http://www.w3school.com.cn/</a> w3school在线教程<br><a href="http://www.apachefriends.org/">http://www.apachefriends.org/</a> PHP XAMPP一键配置<br><a href="http://speckyboy.com/">http://speckyboy.com/</a> 网页UI设计理念<br>20个CSS入门网站 [备注英文站点]</p>
<p>[英语学习] <br><a href="http://dict.cn/">http://dict.cn/</a> 海词<br><a href="http://www.iciba.com/">http://www.iciba.com/</a> 金山词霸<br><a href="http://usyaohongen.blog.163.com/">http://usyaohongen.blog.163.com/</a> 海外华人BLOG<br><a href="http://www.yeeyan.org/">http://www.yeeyan.org/</a> 译言</p>
<p>[电脑系统技术] <br><a href="http://technet.microsoft.com/">http://technet.microsoft.com/</a> 微软技术网站[非编程类]<br><a href="http://techcrunch.com/">http://techcrunch.com/</a> 美国科技博客</p>
<p>[Code_GodFather站长精华] <br>1&gt;如何正确的入门Windows系统下C/C++学习领域<br><a href="http://blog.csdn.net/Code_GodFather/archive/2010/04/27/5537033.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/04/27/5537033.aspx</a> <br>2&gt;如何正确地进入基于x86-64Bit Windows系统的商业软件破解领域<br><a href="http://blog.csdn.net/Code_GodFather/archive/2010/03/31/5438858.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/03/31/5438858.aspx</a> <br>3&gt;32bit 程序在64bit操作系统下处理重定向细节[1]<br><a href="http://blog.csdn.net/Code_GodFather/archive/2010/07/04/5711933.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/07/04/5711933.aspx</a> <br>4&gt;32bit 程序在64bit操作系统下处理重定向细节_注册表操作[2]<br><a href="http://blog.csdn.net/Code_GodFather/archive/2010/07/04/5711936.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/07/04/5711936.aspx</a> <br>5&gt;FAQ7:如何正确的对待汇编学习和反汇编学习?<br><a href="http://blog.csdn.net/Code_GodFather/archive/2010/02/16/5309753.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/02/16/5309753.aspx</a> <br>6&gt;掌握C/C++之后,如何在Windows系统下开发有界面的程序?<br><a href="http://blog.csdn.net/Code_GodFather/archive/2010/08/08/5796690.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/08/08/5796690.aspx</a> <br>7&gt;如何正确入门Windows系统下驱动开发领域?<br><a href="http://blog.csdn.net/Code_GodFather/archive/2010/10/30/5975901.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/10/30/5975901.aspx</a> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/Code_GodFather/archive/2010/01/16/5200913.aspx">http://blog.csdn.net/Code_GodFather/archive/2010/01/16/5200913.aspx</a></p>
<img src ="http://www.cppblog.com/Walker/aggbug/132328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Walker/" target="_blank">漫步者×&……%￥</a> 2010-11-03 20:49 <a href="http://www.cppblog.com/Walker/articles/132328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】一个游戏程序员的学习资料 </title><link>http://www.cppblog.com/Walker/articles/81443.html</link><dc:creator>漫步者×&amp;……%￥</dc:creator><author>漫步者×&amp;……%￥</author><pubDate>Wed, 29 Apr 2009 07:07:00 GMT</pubDate><guid>http://www.cppblog.com/Walker/articles/81443.html</guid><wfw:comment>http://www.cppblog.com/Walker/comments/81443.html</wfw:comment><comments>http://www.cppblog.com/Walker/articles/81443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Walker/comments/commentRss/81443.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Walker/services/trackbacks/81443.html</trackback:ping><description><![CDATA[<p align=center><span>一个游戏程序员的学习资料</span></p>
<p>&nbsp;</p>
<p><span>想起写这篇文章是在看<st1:personname w:st="on" productid="侯杰">侯杰</st1:personname>先生的《深入浅出<span>MFC</span>》时<span>,</span>突然觉得自己在大学这几年关于游戏编程方面还算是有些心得，因此写出这篇小文<span>,</span>介绍我眼中的游戏程序员的书单与源代码参考。一则是作为自己今后两年学习目标的备忘录<span>,</span>二来没准对别人也有点参考价值。我的原则是只写自己研究过或准备研究的资料，所以内容无疑会带上强烈的个人喜好色彩<span>,</span>比如对网络<span>,</span>数据库等重要方面完全没有涉及。因为自己主要对三维图形引擎<span>,</span>人工智能算法<span>,</span>脚本系统<span>,</span>反外挂<span>(</span>反反外挂<span>? ^</span>－<span>^)</span>等方面感兴趣。这学期电脑都没联网了<span>,</span>在岳麓山闭关修炼中<span>(^</span>－<span>^),</span>连这篇文章都得在学校图书馆电子阅览室（电影放映室？）上传<span>,</span>内容很多凭记忆写出<span>,</span>如有误差敬请订正。程序员应该在理论学习与实践编程中反复迭代，所以学习资料是一回事，须知尽信书不如无书。</span></p>
<p>&nbsp;</p>
<p><span>一、书籍：</span></p>
<p><span>算法与数据结构：</span></p>
<p><span>《数据结构（<span>C</span>语言版）》——严蔚敏、吴伟民 清华出版社</span></p>
<p><span>我觉得其配套习题集甚至比原书更有价值，每个较难的题都值得做一下。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Introduction to Algorithms</span>》第二版 中文名《算法导论》</span></p>
<p><span>关于算法的标准学习教材与工程参考手册，在去年<span>CSDN</span>网站上其翻译版竟然评为年度二十大技术畅销书，同时《程序员》杂志上开设了&#8220;算法擂台&#8221;栏目，这些溯源固本的举动，不由得使人对中国现今浮躁不堪的所谓&#8220;<span>IT</span>&#8221;业又产生了一线希望。这本厚厚的书，幸亏打折我才买得起。虽然厚达千页，但其英文通俗晓畅，内容深入浅出，可见经典之作往往比一般水准的书还耐读。还能找到<span>MIT</span>的视频教程，第一节课<st1:personname w:st="on" productid="那个老">那个老</st1:personname>教授嘻皮笑脸的，后面就是一长发助教上课了。</span></p>
<p>&nbsp;</p>
<p><span>《<span>C</span>语言名题精选百则 技巧篇》——冼镜光 机械工业出版社</span></p>
<p><span>作者花费一年时间搜集了各种常见<span>C</span>程序段的极具技巧性的编程法，其内容都是大有来头的，而且给出了详细的参考资料。如一个普通的<span>Fibonacci</span>数就给出了非递归解、快速算法、扩充算法等，步步深入，直至几无油水可榨。对于视速度如生命，连一个普通的浮点数转化为整数都另辟蹊径以减少<span>CPU cycle</span>的游戏程序员，怎可不看？</span></p>
<p>&nbsp;</p>
<p><span>《计算机算法基础（第二版）》—— 佘祥宣等 华中科大出版社</span></p>
<p><span>我看到几个学校的研究生拿它作教材（研究生才开算法，太开玩笑了吧）。这本书薄是薄了点，用作者的话来说，倒也&#8220;精辟&#8221;。其实此书是《<span>Fundamentals of Computer Algorithms</span>》的缩写版，不过原书出版太久了，反正我是没找到。</span></p>
<p>&nbsp;</p>
<p><span>《<span>The Art of Computer Programming</span>》<span>Volume 1-3</span></span></p>
<p><span>作者<span>Donald E. Knuth</span>是我心目中与冯<span>.</span>诺依曼、<span>Dijkstra</span>、<span>Shannon</span>并列的四位大师。这本书作者从读大学本科时开始写，一直写到博士时，十年磨一剑，足见其下足了功夫。可作为计算机技术的核心——算法与数据结构的终极参考手册。创新处也颇多，譬如常见的<span>Shell</span>排序他在书中提出可用<span>(3i-1)/2</span>的间隔，这使其稍快于<span>O(n1. 5)</span>。当然这套书描述高度数学化，为此恐怕一般的人（我？）最好还得先看一本数学预备书《<span>Concrete Mathematics</span>》（直译为混凝土数学？<span>^</span>－<span>^</span>）再说。可惜的是这套书才出到第三卷，并没有覆盖全部常见的算法内容。不过好在对于游戏程序员来说，越常见的算法用得越多，这也不算是什么要命的损失。</span></p>
<p>&nbsp;</p>
<p><span>《<span>STL</span>源码剖析》—— 侯捷 华中科大出版社</span></p>
<p><span>侯捷不用介绍了，华人技术作家中的旗舰，说其有世界级水准也不为过。这本书我以为是<span>C++</span>与数据结构的葵花宝典（欲练此功，必先自宫）。也就是说，不下几层地狱很难看懂，因为它要求的预备知识太多了，如<span>STL</span>、数据结构、泛型编程、内存管理都要很扎实（为此是不是还要看看有内存管理设计模式之称的《<span>Small Memory Software</span>》这本书呢？），但是一旦看懂，真会是所向披靡。</span></p>
<p><span>&nbsp;</span></p>
<p><span>《<span>Data Structures for Game Programmers</span>》</span></p>
<p><span>每个数据结构的例程都是一个小游戏，还用<span>SDL</span>库实现了一个算法演示系统。虽然内容失之于浅，但起码让人了解了数据结构在游戏中的作用。</span></p>
<p>&nbsp;</p>
<p><span>其实游戏程序并不比其它程序特殊，甚至要求基本功更加扎实，所以花时间做一些看似与实际应用不甚相干的习题，对今后的工作是大有裨益的。而且有些应用很广的算法，如常被人津津乐道的<span>A*</span>算法及其变种，牵涉到图的检索周游与分枝<span>-</span>限界法，恐怕还得读一些艰深的论文才能充分明白运用，如<span>Donald E. Knuth</span>的《<span>An analysis of alpha-beta cutoffs</span>》。其实还有不少此类的好书，如《<span>Data Structures and Algorithms in C++</span>》、《<span>Programming Pearls</span>》、《<span>More Programming Pearls</span>》（算法珠玑）等，我却以为要先看严谨一点的著作，再看内容随笔一点的书。</span></p>
<p>&nbsp;</p>
<p><span>汇编：</span></p>
<p><span>《<span>IBM-PC </span>汇编语言程序设计》第二版　</span></p>
<p><span>国内经典教材。</span></p>
<p><span>《<span>The Art of Assembly Language</span>》</span></p>
<p><span>这本书足有<span>1600</span>页，噢！</span></p>
<p>&nbsp;</p>
<p><span>C</span><span>语言：</span></p>
<p><span>《<span>The C Programming Language</span>》第二版</span></p>
<p><span>虽然篇幅短小，但每个例程都很经典。（我们老师开始拿它作教材，后面换为谭小强的<span>C</span>语言书，理由为：例子尽是些文本处理。我就纳了闷了，难道现代的计算机程序不是将大量时间消耗在字符串与文本的处理上吗？）</span></p>
<p>&nbsp;</p>
<p><span>C++</span><span>：</span></p>
<p><span>学过<span>C</span>语言，再学<span>C++</span>，先看这本《<span>C++ Primer</span>》的缩写版：</span></p>
<p><span>《<span>Essential C++</span>》</span></p>
<p><span>对<span>C++</span>有个入门了解，再看</span></p>
<p><span>《<span>C++ Common Knowledge: Essential Intermediate Programming</span>》</span></p>
<p><span>就不会有什么重要的知识点完全不知所措了，接下来是</span></p>
<p><span>《<span>The C++ Standard Library : A Tutorial and Reference</span>》</span></p>
<p><span>标准库，当然主要是标准模板库的标准学习参考手册，然后最好平时边写程序边参悟。</span></p>
<p><span>《<span>Effective C++</span>》等</span></p>
<p><span>我是说书名以形容词<span> + C++</span>的那些书，计有七八本，慢慢看吧，罗马不是一日建成的。</span></p>
<p><span>(</span><span>《<span>Essential C++</span>》、《<span>Effective C++</span>》、《<span>More Effective C++</span>》、《<span>Accelerated C++</span>》、《<span>Effective STL</span>》、《<span>Exceptional C++</span>》、《<span>More Exceptional C++</span>》、《<span>Imperfect C++</span>》，虽然书名格式相似，但每一本都绝非马虎之作。<span>)</span></span></p>
<p>&nbsp;</p>
<p><span>谁说<span>C++</span>程序比<span>C</span>程序要慢？那就请看下面：</span></p>
<p><span>《<span>The Design and Evolution of C++</span>》</span></p>
<p><span>知其过去才能知其未来，才能应用。</span></p>
<p><span>《<span>Inside the C++ Object Model</span>》</span></p>
<p><span>揭露<span>C++</span>的编译器模型。</span></p>
<p><span>《<span>Efficient C++ Performance Programming Techniques</span>》</span></p>
<p><span>当算法优化已到极致，在运用汇编之前，最后还可看看此书，有时高级和低阶都能做成相同的事情。</span></p>
<p>&nbsp;</p>
<p><span>还有两本特别的书：</span></p>
<p><span>《<span>Modern C++ Design : Generic Programming and Design Patterns Applied</span>》</span></p>
<p><span>作者想把设计模式和泛型编程结合起来，并写了个尝试提供一切的<span>Loki</span>库来实作<span>,</span>不过其观点并未得到<span>C++</span>社区的普遍响应。尽管如此，本书仍称得上思想前沿性与技术实用性结合的典范。</span></p>
<p>&nbsp;</p>
<p><span>《<span>C++ Template Metaprogramming</span>》</span></p>
<p><span>把编译器当作计算器？本书介绍了<span>Boost</span>库的<span>MPL</span>模板元编程库。当然提到<span>Boost</span>库，对于游戏程序员不能不提到其中的<span>Graph</span>库，有《<span>The Boost Graph Library</span>》一书可看。还有其中<span>Python</span>库，号称国内首款商业三维图形引擎的起点引擎就用了<span>Boost</span>－<span>Python</span>库。说实话我觉得起点引擎还是蛮不错的，那个自制的三维编辑器虽然界面简陋，但功能还算蛮完善，给游戏学院用作教学内容也不错。另有一个号称中国首款自主研发的全套网游解决方案。我看到它那个三维编辑器，心想这不就是国外一个叫<span>freeworld3D</span>的编辑器吗？虽然有点偏门，但我以前还较劲尝试破解过呢。还把英文界面汉化了，大概用<span>exescope</span>这样的资源修改软件就能搞定吧。我又心想为什么要找<span>freeworld3D</span>这个功能并不太强大的编辑器呢？仅仅是因为它便宜到几十美金？它唯一特别一点的地方就是支持导出<span>OGRE</span>图形引擎的场景格式，这样一想不由得使人对它图形引擎的&#8220;自主&#8221;性也产生怀疑了。这样的&#8220;自主&#8221;研发真让人汗颜，只要中国还没封<span>sourceforge</span>这个网站（据说以前和<span>freeBSD</span>网站一起被封过？），国人就能&#8220;自主&#8221;研发。</span></p>
<p>&nbsp;</p>
<p><span>有人还会推荐《<span>C++ Primer</span>》《<span>Thinking in C++</span>》《<span>The C++ Programming Language</span>》等书吧，诚然这些书也很好，但我总觉得它们太大部头了。还不如多花点时间看看国外好的源代码。</span></p>
<p>&nbsp;</p>
<p><span>Windows</span><span>编程</span></p>
<p><span>Operating System Concepts</span><span>第五版</span></p>
<p><span>国内有些操作系统的教程其实就是它的缩写版。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Windows 95 System Programming Secrets</span>》</span></p>
<p><span>深入剖析了<span>Windows</span>操作系统的种种种种，有人爱看《<span>Linux</span>内核完全注释》，有人爱看《自己动手写操作系统》这样煽情的书，但我想作为商业的操作系统，把<span>Windows</span>内核剖析到这地步也高山仰止了。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Programming Applications for Microsoft Windows</span>》第四版</span></p>
<p><span>先进程线程，再虚存管理，再动态链接库，最多讲到消息机制。作者在序言中说：&#8220;我不讲什么<span>ActiveX, COM</span>等等，因为当你了解了这些基础后，那些东西很快就会明白！&#8221;可以作为《<span>Programming Windows</span>》的先修课。</span></p>
<p>&nbsp;</p>
<p><span>计算机体系：</span></p>
<p><span>《<span>Computer Systems : A Programmer</span>&#8217;<span>s Perspective</span>》</span></p>
<p><span>和《<span>The Art of Computer Programming</span>》在我心中是计算机史上两本称得上伟大的书，计算机组成原理，操作系统，汇编，编译原理，计算机网络等等课程汇成这本千页的大书，因为计算机在作者眼中就是一个整体。</span></p>
<p>&nbsp;</p>
<p><span>开源阅读：</span></p>
<p><span>《<span>Code Reading : The Open Source Perspective</span>》</span></p>
<p><span>张大千临摹了几百张明代石涛的山水，画出的画以假乱真，后来他去敦煌潜心临摹几年，回来画风大变，终成大家。程序员其实有<span>40%</span>的时间是在读别人的源代码，<st1:personname w:st="on" productid="侯捷">侯捷</st1:personname>先生说：&#8220;源码面前，了无秘密&#8221;，又说&#8220;天下大事，必作于细&#8221;，可以与他的《上穷碧落下黄泉，源码追踪经验谈》参看。</span></p>
<p>&nbsp;</p>
<p><span>MFC:</span></p>
<p><span>《深入浅出<span>MFC</span>》</span></p>
<p><span>我实在以为没有看过<st1:personname w:st="on" productid="侯捷">侯捷</st1:personname>先生的《深入浅出<span>MFC</span>》的人多半不会懂得<span>MFC</span>编程。其实我是打算用一年多的时间写一个给游戏美工用的三维编辑器，顺便作为毕业设计。图形库就用<span>MFC</span>吧，反正也没得选择。如果要用<span>wxWidgets</span>无非是猎奇而已，还不是<span>MFC</span>的翻版，当然它跨平台了。就象阻击手对自己枪械的零件了如指掌一样，要想用<span>MFC</span>写出非玩具程序的人一定要了解其内部构造。还有一本书叫《<span>MFC</span>深入浅出》，并不是同一本。</span></p>
<p>&nbsp;</p>
<p><span>IDE:</span></p>
<p><span>《<span>Microsoft Visual Studio 2005 Unleashed</span>》</span></p>
<p><span>工欲善其事，必先利其器。当然我认为与其用形如<span>Source Insight</span>、<span>Slick Edit</span>、<span>Code Visualizer</span>之类的代码阅读器、图形化工具，还不如用自己的大脑。但如果你嫌打源代码慢的话，可以用<span>Visual AssistX</span>。如果嫌老是写重复相似的代码的话，可以用<span>Code Smith</span>。单元测试可以用<span>CppUnit</span>，<span>Boost</span>库中的测试框架也不错。有心情可以吧<span>Visual Studio</span>外接<span>Intel</span>的<span>Compiler</span>，内嵌<span>STLport</span>，但不是大工程，性能分析没必要动不动就用下<span>VTune</span>吧。</span></p>
<p>&nbsp;</p>
<p><span>程序员之路：</span></p>
<p><span>《游戏之旅——我的编程感悟》</span></p>
<p><span>云风大哥。在我心目中游戏程序员国外首推卡马克，国内首推云风。也许过两年我会到网易当云风大哥的助理程序员吧。<span>It</span>&#8217;<span>s my dream.</span>（<span>^-^</span>）他写这本书的时候本着只有透彻理解的东西才写出来，因此内容不会很酷新，但是相信我，每读一遍都有新的收获，主要还不是知识上的，因为知识是学无止境的，授人以鱼不如授人以渔，精神上的启迪才是长久的。诚如经典游戏《仙剑奇侠传》的主力程序员兼美术指导姚壮宪（人称姚仙）在序言中所说的&#8220;云风得到的只是一些稿费，而整个中国民族游戏产业得到的将是一次知识的推动&#8221;，此言不虚矣。</span></p>
<p>&nbsp;</p>
<p><span>《编程高手箴言》</span></p>
<p><span>梁肇新是豪杰超级解霸的作者，本来每个合格的程序员（<span>Programmer , </span>而非<span>Coder</span>）都应该掌握的东西，现在变成了编程高手的独家箴言。不知是作者的幸运还是中国<span>IT</span>业的悲哀。知识点还是讲得蛮多的，不过对<span>MFC</span>的地位颇有微词。我实在认为<span>MFC</span>的名声就是那些不懂得用它的人搞臭的。不过作者的牢骚也情有可原，每个具有创造力的程序员都应该不太喜欢<span>framework</span>。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Masters of DOOM: How Two Guys Created an Empire and Transformed Pop Culture</span>》中文名《<span>DOOM</span>启世录》</span></p>
<p><span>卡马克，罗洛斯，这些游戏史上如雷贯耳的名字。（现在卡马克已专注于火箭制造上，罗洛斯则携妻回乡隐居）要不是没上过大学的卡马克和图形学大师亚伯拉罕的功勋，可能到现在游戏中还不知三维为何物。勿庸置疑，在计算机界历史是英雄们所推动的。这本书真实的记录了这些尘世英雄的所为所思。</span></p>
<p>&nbsp;</p>
<p><span>作为程序员的我对这几本策划与美工的书也产生了浓厚兴趣，以前搞过一两年的<span>3DS MAX</span>插件编程，觉得用<span>maxscript</span>还是好过<span>MaxSDK</span>，毕竟游戏开发中所多的是模型场景数据的导入导出，大可不必大动干戈。</span></p>
<p>&nbsp;</p>
<p><span>策划：</span></p>
<p><span>《<span>Creating Emotion in Games : The Craft and Art of Emotioneering</span>》</span></p>
<p><span>在壮丽煊目的宏伟三维世界背后，在残酷的杀戮，动人心魄的情节背后，我们还需要什么来抓住玩家的心？答对了，就是<span>emotion.</span>真正打动人心的，才是深入骨髓的。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Ultimate Game Design : Building Game Worlds</span>》</span></p>
<p><span>从名字可以看出，写给关卡设计师的，特别是讲室外自然场景的构建颇有可取之处。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Developing Online Games : An Insider</span>&#8217;<span>s Guide</span>》</span></p>
<p><span>就象名为反模式的书讲软件团队运营一样，这本书讲商业运作多过技术。一个历经艰难，现在盛大的游戏程序员，翻译了这本书。</span></p>
<p>&nbsp;</p>
<p><span>美工：</span></p>
<p><span>《<span>Digital Cinematography &amp; Directing</span>》</span></p>
<p><span>数字摄影导演术，每当你在<span>3DS MAX</span>或者<span>Maya</span>等三维创作软件中摆放摄影机，设计其运动轨迹时，你可曾想过你也站在导演的位置上了？</span></p>
<p>&nbsp;</p>
<p><span>《<span>The Animator</span>&#8217;<span>s Survival Kit</span>》</span></p>
<p><span>看着这本讲卡通角色运动规律的书，一边产生温习《猫和老鼠》的念头，一边继续对前不久新闻联播中关于中国产生了某计算机自动卡通动画生成软件报道的蔑视，这条报道称此举可大大加快中国卡通动画的产量。我且不从技术上探讨其是否是在放卫星（其实我知道得很清楚，前文已表，本人搞过一两年的卡通动画辅助软件编程），但计算机机械生成的动画怎可代替人类充满灵性的创作？</span></p>
<p>&nbsp;</p>
<p><span>《<span>The Dark Side of Game Texturing</span>》</span></p>
<p><span>用<span>Photoshop</span>制作材质贴图，还真有些学问。</span></p>
<p>&nbsp;</p>
<p><span>三维图形学：</span></p>
<p><span>搞三维图形学首先还是要扎扎实实的先看解析几何、线性代数、计算几何的教材，后面的习题一个都不能少。国内数学书还是蛮好的。苏步青大师的《计算几何》称得上具有世界级水准，可惜中国<span>CAD</span>的宏图被盗版给击垮了。现在是我们接过接力棒的时候了。<span>It</span>&#8217;<span>s time!</span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>《<span>Computer Graphics Geometrical Tools</span>》<span> </span></span></p>
<p><span>《计算机图形学几何工具算法详解》算法很多，纰漏处也不少。</span></p>
<p>&nbsp;</p>
<p><span>《<span>3D Math Primer for Graphics and Game Development</span>》</span></p>
<p><span>浅易，可作为三维数学的&#8220;速食&#8220;。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Mathematics for 3D Game Programming &amp; Computer Graphics</span>》第二版</span></p>
<p><span>比上面那本深入一些，证明推理的数学气也浓一些，可作为专业的数学书与编程实践一个过渡的桥梁吧。内容涉猎也广，射线追踪，光照计算，可视裁剪，碰撞检测，多边形技术，阴影算法，刚体物理，流体水波，数值方法，曲线曲面，还真够丰富。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Vector Game Math Processors</span>》</span></p>
<p><span>想学<span>MMX,SSE</span>吗，那就看它吧，不过从基础讲起的，要耐心哦。</span></p>
<p>&nbsp;</p>
<p><span>&nbsp;DirectX:</span></p>
<p><span>《<span>Introduction to 3D Game Programming with DirectX 9.0</span>》</span></p>
<p><span>DirectX</span><span>入门的龙书，作者自己写的简单示例框架，后面我干脆用<span>State</span>模式，把所有例子绑到一块儿去了。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Beginning Direct3D Game Programming</span>》</span></p>
<p><span>作者取得律师学位后变成了游戏程序员，真是怪也哉。本书虽定位为入门级书，内容颇有独特可取之处。它用到的示例框架是<span>DXSDK Sample Framework</span>，而不是现在通行的<span>DXUT</span>。要想编译有两种办法吧，一是自己改写成用<span>DXUT</span>的。二是找旧的<span>Sample Framework</span>。我又懒得为了一个示例框架下载整个早期版本的<span>DirectX</span>，后面在<span>Nvidia SDK 9.5</span>中发现了。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Advanced Animation with DirectX</span>》</span></p>
<p><span>DirectX</span><span>高级动画技术。骨骼系统，渐变关键帧动画，偶人技术，表情变形，粒子系统，布料柔体，动态材质，不一而足。我常常在想，从三维创作软件导出的种种效果，变成一堆<span>text</span>或<span>binary</span>，先加密压缩打包再解包解压解密，再用游戏程序重建一个<span>Lite</span>动画系统，游戏程序员也真是辛苦。</span></p>
<p>&nbsp;</p>
<p><span>OpenGL:</span></p>
<p><span>《<span>NeHe OpenGL Tutorials</span>》</span></p>
<p><span>虽是网络教程，不比正式的书逊，本来学<span>OpenGL</span>就不过是看百来条<span>C</span>函数文档的工夫吧<span>,</span>如果图形学基础知识扎实的话。</span></p>
<p>&nbsp;</p>
<p><span>《<span>OpenGL Shading Language</span>》</span></p>
<p><span>OpenGL</span><span>支持最新显卡技术要靠修修补补的插件扩展，所以还要配合</span></p>
<p><span>《<span>Nvidia OpenGL Extension Specifications</span>》</span></p>
<p><span>来看为上。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Focus on 3D Models</span>》</span></p>
<p><span>《<span>Focus on 3D Terrain Programming</span>》</span></p>
<p><span>《<span>Focus on Curves and Surfaces</span>》<span> </span></span></p>
<p><span>顾名思义，三本专论，虽然都很不深，但要对未知三维模型格式作反向工程前，研读<span>Geomipmapping</span>地形算法论文前，<span>CAD</span>前，还是要看看它们为上，如果没从别处得过到基础的话。</span></p>
<p>&nbsp;</p>
<p><span>脚本：</span></p>
<p><span>先看</span></p>
<p><span>《<span>Game Scripting Mastery</span>》<span> </span></span></p>
<p><span>等自己了解了虚拟机的构造，可以设计出简单的脚本解释执行系统了。</span></p>
<p><span>再去查<span>Python , Lua </span>，<span>Ruby</span>的手册吧，会事半半功倍倍的。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Programming Role Playing Games with DirectX 8.0</span>》</span></p>
<p><span>一边教学一边用<span>DirectX</span>写出了一个<span>GameCore</span>库，初具引擎稚形。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Isometric Game Programming with DirectX 7.0</span>》</span></p>
<p><span>三维也是建立在二维的基础上，这就是这本书现在还值得看的原因。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Visual C++</span>网络游戏建模与实现》</span></p>
<p><span>联众的程序员写的，功力很扎实，讲棋牌类游戏编程，特别讲了<span>UML</span>建模和<span>Rotional Rose</span>。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Object-Oriented Game Development</span>》</span></p>
<p><span>套用某人的话：&#8220;<span>I like this book.</span>&#8221;</span></p>
<p>&nbsp;</p>
<p><span>Shader:</span></p>
<p><span>要入门可先看</span></p>
<p><span>《<span>Shaders for Game Programmers and Artists</span>》</span></p>
<p><span>讲在<span>RenderMonkey</span>中用<span>HLSL</span>高级着色语言写<span>Shader.</span></span></p>
<p>&nbsp;</p>
<p><span>再看</span></p>
<p><span>《<span>Direct3D ShaderX : Vertex and Pixel Shander Tips and Tricks</span>》</span></p>
<p><span>用汇编着色语言，纯银赤金。</span></p>
<p>&nbsp;</p>
<p><span>三大宝库：</span></p>
<p><span>《<span>Game Programming Gems</span>》</span></p>
<p><span>我只见到<span>1-6</span>本，据说第<span>7</span>、<span>8</span>本也出来了？附带的源代码常有<span>bug</span>，不过瑕不掩瑜，这套世界顶级游戏程序员每年一度的技术文集，涉及游戏开发的各个方面，我觉得富有开发经验的人更能在其中找到共鸣。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Graphics Gems</span>》全五本</span></p>
<p><span>图形学编程<span>Bible</span>，看了这套书你会明白计算机领域的科学家和工程师区别之所在。科学家总是说，这个东西在理论上可行。工程师会说，要使问题在<span>logN</span>的时限内解决我只能忍痛割爱，舍繁趋简。</span></p>
<p>&nbsp;</p>
<p><span>《<span>GPU Gems</span>》出了二本</span></p>
<p><span>Nvidia</span><span>公司召集图形学<span>Gurus</span>写的，等到看懂的那一天，我也有心情跑去<span>Siggraph</span>国际图形学大会上投文章碰运气。</span></p>
<p>&nbsp;</p>
<p><span>游戏引擎编程：</span></p>
<p><span>《<span>3D Game Engine Programming</span>》</span></p>
<p><span>是<span>ZFXEngine</span>引擎的设计思路阐释，很平实，冇太多惊喜。</span></p>
<p>&nbsp;</p>
<p><span>《<span>3D Game Engine Design</span>》</span></p>
<p><span>数学物理的理论知识讲解较多，本来这样就够了，还能期待更多吗？</span></p>
<p>&nbsp;</p>
<p><span>人工智能：</span></p>
<p><span>《<span>AI Techniques for Game Programming</span>》</span></p>
<p><span>讲遗传算法，人工神经网络，主要用到位数组，图算法。书的原型是根据作者发表到<span>GameDev.net</span>论坛上的内容整理出来的，还比较切中实际。</span></p>
<p>&nbsp;</p>
<p><span>《<span>AI Game Programming Wisdom</span>》</span></p>
<p><span>相当于<span>AI</span>编程的<span>Gems</span>。</span></p>
<p>&nbsp;</p>
<p><span>《<span>PC</span>游戏编程<span>(</span>人机博弈<span>)</span>》</span></p>
<p><span>以象棋程序为蓝本，介绍了很多种搜索算法，除了常见的极大极小值算法及其改进<span>--</span>负极大值算法，还有深度优先搜索以外。更提供了多种改进算法，如：<span>Alpha-Beta,Fail-soft alpha-beta,Aspiration Search, Minimal Window Search,Zobrist Hash,Iterative Deepening,History Heuristic,Killer Heuristic,SSS*,DUAL*,MFD and more.</span>琳琅满目，实属难得。</span></p>
<p>&nbsp;</p>
<p><span>反外挂：</span></p>
<p><span>《加密与解密<span>(</span>第二版<span>)</span>》 看雪论坛站长 段钢</span></p>
<p><span>破解序列号与反外挂有关系么？不过，世上哪两件事情之间又没有关系呢？</span></p>
<p>&nbsp;</p>
<p><span>《<span>UML Distilled</span>》 <span>Martin Fowler</span></span></p>
<p><span>很多人直到看了这本书才真正学懂<span>UML</span>。</span></p>
<p><span>Martin Fowler</span><span>是真正的大师<span>,</span>从早期的分析模式<span>,</span>到这本<span>UML</span>精粹<span>,</span>革命性的重构都是他提出的<span>,</span>后来又写了企业模式一书。现在领导一个软件开发咨询公司，去年<span>JavaOne</span>中国大会他作为专家来华了吧。个人网站：<span>MartinFowler.com</span></span></p>
<p>&nbsp;</p>
<p><span>设计模式三剑客：</span></p>
<p><span>《<span>Design Patterns Elements of Reusable Object-Oriented Software</span>》</span></p>
<p><span>《<span>Design Patterns Explained</span>》</span></p>
<p><span>《<span>Head First Design Patterns</span>》<span>&nbsp;</span></span></p>
<p>&nbsp;</p>
<p><span>重构三板斧：</span></p>
<p><span>《<span>Refactoring : Improving the Design of Existing Code</span>》</span></p>
<p><span>《<span>Refactoring to Patterns</span>》</span></p>
<p><span>《<span>Refactoring Workbook</span>》</span></p>
<p>&nbsp;</p>
<p><span>软件工程<span>:</span></span></p>
<p><span>《<span>Extreme Programming Explained : Embrace Change</span>》第二版</span></p>
<p><span>其中<span>Simplicity</span>的<span>Value</span>真是振聋发聩，这就是我什么都喜欢轻量级的原因。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Agile Software Development Principles,Patterns,and Practices</span>》</span></p>
<p><span>敏捷真是炒得够火的，连企业都有敏捷一说，不过大师是不会这么<span>advertising</span>的。</span></p>
<p>&nbsp;</p>
<p><span>《<span>Code Complete</span>》第二版</span></p>
<p><span>名著。</span></p>
<p>&nbsp;</p>
<p><span>数学：</span></p>
<p><span>《数学，确定性的丧失》<span>M.</span>克莱因</span></p>
<p><span>原来数学也只不过是人类的发明与臆造，用不着供入神殿，想起历史上那么多不食人间烟火的科学家（多半是数学家），自以为发现了宇宙运作的奥秘，是时候走下神坛了。</span></p>
<p>&nbsp;</p>
<p><span>物理：</span></p>
<p><span>《普通物理学》第一册<span> += </span>《<span>Physics for Game Developers</span>》</span></p>
<p><span>物理我想就到此为此吧，再复杂我可要用<span>Newton Engine,ODE</span>了，等待物理卡<span>PPU</span>普及的那天，就可充分发挥<span>PhysX</span>的功效了，看过最新的《细胞分裂》游戏<span>Demo</span>演示，成千上万个<span>Box</span>疯狂<span>Collide</span>，骨灰级玩家该一边摸钱包一边流口水了。</span></p>
<p>&nbsp;</p>
<p><span>二、开源代码：</span></p>
<p><span>Irrlicht</span></p>
<p><span>著名的鬼火引擎，从两年前第一眼看到它，这个轻量级的三维图形引擎，就喜欢上了它。源代码优雅，高效，且不故弄玄虚。值得每个<span>C++</span>程序员一读，并不限于图形编程者。它的周边中也有不少轻量级的东西。如<span>Lightfeather</span>扩展引擎，<span>ICE</span>、<span>IrrlichtRPG</span>、<span>IrrWizard.</span>还有<span>IrrEdit</span>、<span>IrrKlang</span>、<span>IrrXML</span>可用。（可能是为了效率原因，很多开源作者往往喜欢自己写<span>XML</span>解析库，如以上的<span>IrrXML</span>库<span>,</span>即使有现成的<span>tinyXML</span>库可用。这真会让<span>tomcat</span>里面塞<span>Axis</span>，<span>Axis</span>里面塞<span>JUDDI</span>，弄得像俄罗斯套娃玩具的<span>Java Web Service Coder</span>们汗颜。）</span></p>
<p>&nbsp;</p>
<p><span>OGRE</span></p>
<p><span>排名第一的开源图形引擎，当然规模是很大的，周边也很多。除了以<span>C#</span>写就的<span>OgreStudio </span>，<span>ofusion</span>嵌入<span>3DS MAX</span>作为<span>WYSWYG</span>式的三维编辑器也是棒棒的，特别是其几个场景、地形插件值得研究。以至于《<span>Pro OGRE 3D Programming</span>》一书专论其用法。搜狐的《天龙八部》游戏就是以其作为图形引擎，当然还另外开发了引擎插块啦。我早知道<span>OGRE</span>开发组中有一个中国人谢程序员，他以前做了很多年的传统软件编程。有一次天龙八部游戏的图形模块的出错信息中包含了一串某程序员的工作目录，有一个文件夹名即是谢程序员的英文名，我据此推断谢程序员即是搜狐北京的主程。看来中国对开源事业还是有所贡献的嘛，王开源哥哥的努力看来不会白费！（<span>^-^</span>）不过我侦测的手法也有些像网站数据库爆库了，非君子之所为作。</span></p>
<p>&nbsp;</p>
<p><span>RakNet</span></p>
<p><span>基于<span>UDI</span>的网络库，竟还支持声音传输，以后和<span>OpenVision</span>结合起来做个视聊程序试试。</span></p>
<p><span>&nbsp;</span></p>
<p><span>Blender</span></p>
<p><span>声誉最盛的开源三维动画软件，竟还带一个游戏引擎。虽然操作以快捷键驱动，也就是说要背上百来个快捷键才能熟练使用。但是作为从商业代码变为开源之作，威胁三维商业巨头的轻骑兵，历经十年锤炼，代码达百万行，此代码只应天上有，人间哪得几回看，怎可不作为长期的源码参考？</span></p>
<p>&nbsp;</p>
<p><span>风魂</span></p>
<p><span>二维图形库。云风大哥的成名之作。虽然不代表其最高水平（最高水平作为商业代码保存在广州网易互动的<span>SVN</span>里呢），但是也可以一仰风采了。</span></p>
<p>&nbsp;</p>
<p><span>圣剑英雄传</span></p>
<p><span>二维<span>RPG</span>。几个作者已成为成都锦天的主力程序员。锦天的老总从一百万发家，三年时间身价过亿，也是一代枭雄了。这份代码作为几年前的学生作品也算可以了，因为一个工程讲究的是四平八稳，并不一定要哪个模块多么出彩。反正我是没有时间写这么一个东东，连个美工都找不到，只能整天想着破解别人的资源（<span>^-^</span>）。</span></p>
<p>&nbsp;</p>
<p><span>Boost</span></p>
<p><span>C++</span><span>准标准库，我想更多的时候可以参考学习其源代码。</span></p>
<p>&nbsp;</p>
<p><span>Yake</span></p>
<p><span>我遇到的最好的轻量级游戏框架了。在以前把一个工程中的图形引擎从<span>Irrlicht</span>换成<span>OGRE</span>的尝试中，遇到了它。<span>OGRE</span>的周边工程在我看来都很庸肿，没有完善文档的情况下看起来和<span>Linux</span>内核差不多。不过这个<span>Yake</span>引擎倒是很喜欢。它以一个<span>FSM</span>有限状态机作为实时程序的调度核心，然后每个模块：物理、图形、网络、脚本、<span>GUI</span>、输入等等都提供一个接口，接口之下再提供到每种具体开源引擎的接口，然后再接具体引擎。通过这样层层抽象，此时你是接<span>Newton Engine,ODE</span>还是<span>PysX</span>都可以；是接<span>OGRE,Crystal Space</span>还是<span>Irrlicht</span>都可以；是接<span>RakNet</span>还是<span>LibCurl</span>都可以；是接<span>Python</span>，<span>Lua</span>还是<span>Ruby</span>都可以，是接<span>CEGUI</span>还是<span>others</span>，是接<span>OIS</span>还是<span>others</span>（呵呵<span>,</span>记不起来<span>others</span>）都可以。所以<span>Yake</span>本质上不是<span>OGRE</span>的周边。虽然用<span>Neoengine</span>的人都倒向了它，但是现在版本还很早。特别是我认为，学习研究时一定要有这种抽象之抽象，接口之接口的东西把思维从具体的绑定打开，而开发时抽象要有限度的，就像蔡学镛在《<span>Java</span>夜未眠》中讲的，面向对象用得过滥也会得<span>OOOO</span>症<span>(</span>面向对象过敏强迫症<span>)</span>。</span></p>
<p>&nbsp;</p>
<p><span>Quake Doom</span><span>系列</span></p>
<p><span>据说很经典，卡马克这种开源的黑客精神就值得赞许。把商业源代码放出来，走自己的创新之路，让别人追去吧。不过<span>Quake</span>与<span>Unreal</span>引擎的三维编辑器是现在所有编辑器的鼻祖，看来要好好看看了。</span></p>
<p>&nbsp;</p>
<p><span>Nvidia SDK 9.X</span></p>
<p><span>三维图形编程的大宝库，这些<span>Diret3D</span>与<span>OpenGL</span>的示例程序都是用来展示其最新的显卡技术的。硬件厂商往往对软件产品不甚在意，源代码给你看<span>,</span>东西给你用去吧，学完了还得买我的硬件。<span>Intel</span>的编译器，<span>PhysX</span>物理引擎大概也都是这样。<span>Havok</span>会把它的<span>Havok</span>物理引擎免费给别人用吗？别说试用版，连个<span>Demo</span>都看不到。所以这套<span>SDK</span>的内容可比<span>MS DirectX SDK</span>里面那些入门级的示例酷多了，反正我是如获至宝，三月不知愁滋味。不过显卡要<span>so-so</span>哦。我的<span>GeForce 6600</span>有两三个跑不过去<span>,</span>差强人意。</span></p>
<p>&nbsp;</p>
<p><span>三、网站：</span></p>
<p><span>www.CSDN.net</span></p>
<p><span>程序员大本营吧，软文与&#8220;新技术秀&#8221;讨厌了点，<span>blog</span>和社区是精华之所在。</span></p>
<p>&nbsp;</p>
<p><span>www.GameRes.com</span></p>
<p><span>游戏程序员基地，文档库中还有点东西。投稿的接收者<span>Seabug</span>与圣剑英雄传的主程<span>Seabug</span>会是同一个人吗？一个在成都锦天担当技术重担的高手还有时间维护网站吗？我不得而知。</span></p>
<p>&nbsp;</p>
<p><span>&#8220;何苦做游戏&#8221;网站</span></p>
<p><span>名字很个性，站长也是历尽几年前产业发展初期的艰难才出此名字。</span></p>
<p>&nbsp;</p>
<p><span>www.66rpg.com</span></p>
<p><span>二维游戏图片资源很多，站长柳柳主推的<span>RPGMaker </span>软件也可以玩一玩吧，但对于专业开发者来说不可当真。</span></p>
<p>&nbsp;</p>
<p><span>www.GameDev.net</span></p>
<p><span>论坛中有不少热心的国外高手在活动。</span></p>
<p>&nbsp;</p>
<p><span>www.SourceForge.net</span></p>
<p><span>不用说了，世界最大的开源代码库，入金山怎可空手而返？看到国外那些学生项目动不动就像模像样的。（<span>DirectX</span>的稚形就是英国的学生项目，在学校还被判为不合格。）</span></p>
<p>&nbsp;</p>
<p><span>www.koders.com</span></p>
<p><span>源代码搜索引擎<span>,</span>支持正则表达式<span>,google Lab</span>中也有。当你某种功能写不出来时<span>,</span>可以看一下开源代码怎么写的<span>,</span>当然不过是仅供参考<span>,</span>开源代码未必都有产品级的强度。说到<span>google,</span>可看《<span>Google Power Tools Bible</span>》一书，你会发现，<span>google</span>的众多产品原来也有这么多使用门道。</span></p>
<p>&nbsp;</p>
<p><span>这篇小文足足写了一天半的时间，不由得使我对侯捷一样的技术作家长期伏案辛勤劳作深深敬佩了。看来对于书籍或者软件，都应该尊重作者或者<span>programmer</span>的才智劳动</span></p>
<img src ="http://www.cppblog.com/Walker/aggbug/81443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Walker/" target="_blank">漫步者×&……%￥</a> 2009-04-29 15:07 <a href="http://www.cppblog.com/Walker/articles/81443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>程序员应该读的论文</title><link>http://www.cppblog.com/Walker/articles/81018.html</link><dc:creator>漫步者×&amp;……%￥</dc:creator><author>漫步者×&amp;……%￥</author><pubDate>Sat, 25 Apr 2009 02:41:00 GMT</pubDate><guid>http://www.cppblog.com/Walker/articles/81018.html</guid><wfw:comment>http://www.cppblog.com/Walker/comments/81018.html</wfw:comment><comments>http://www.cppblog.com/Walker/articles/81018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Walker/comments/commentRss/81018.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Walker/services/trackbacks/81018.html</trackback:ping><description><![CDATA[<p>言归正传，看看是哪10篇论文入了Feathers大师的法眼吧：</p>
<ol>
    <li><a href="http://sunnyday.mit.edu/16.355/parnas-criteria.html"><font color=#336699>On the criteria to be used in decomposing systems into modules</font></a> &#8211; David Parnas
    <li><a href="http://research.sun.com/techrep/1994/abstract-29.html"><font color=#336699>A Note On Distributed Computing</font></a> &#8211; Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall
    <li><a href="http://portal.acm.org/citation.cfm?id=365257"><font color=#336699>The Next 700 Programming Languages</font></a> &#8211; P. J. Landin
    <li><a href="http://portal.acm.org/citation.cfm?id=359579"><font color=#336699>Can Programming Be Liberated from the von Neumann Style?</font></a> &#8211; John Backus
    <li><a href="http://cm.bell-labs.com/who/ken/trust.html"><font color=#336699>Reflections on Trusting Trust</font></a> &#8211; Ken Thompson
    <li><a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.6083"><font color=#336699>Lisp: Good News, Bad News, How to Win Big</font></a> &#8211; Richard Gabriel
    <li><a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.363"><font color=#336699>An experimental evaluation of the assumption of independence in multiversion programming</font></a> &#8211; John Knight and Nancy Leveson
    <li><a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.7565"><font color=#336699>Arguments and Results</font></a> &#8211; James Noble
    <li><a href="http://c2.com/doc/oopsla89/paper.html"><font color=#336699>A Laboratory For Teaching Object-Oriented Thinking</font></a> &#8211; Kent Beck, Ward Cunningham
    <li><a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.562"><font color=#336699>Programming as an Experience: the inspiration for Self</font></a> &#8211; David Ungar, Randall B. Smith </li>
</ol>
<p>Feathers的文章显然成了这几天网上的热门话题，我们另外一本已经获得版权的书《SOA Patterns》（Manning，2009）的作者Arnon Rotem-Gal-Oz受他启发，写了<a href="http://www.rgoarchitects.com/nblog/2009/02/27/10PapersEverySoftwareArchitectShouldReadAtLeastTwice.aspx"><font color=#336699>&#8220;所有架构师都应该至少读上两遍的十篇论文&#8221;</font></a>：</p>
<p>1. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fresearch.microsoft.com%2fen-us%2fum%2fpeople%2flamport%2fpubs%2fbyz.pdf"><font color=#336699>The Byzantine Generals Problem</font></a> (1982) by Leslie Lamport, Robert Shostak and Marshall Pease<br>2. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fwww.u.arizona.edu%2f%257Erubinson%2fcopyright_violations%2fGo_To_Considered_Harmful.html"><font color=#336699>Go To statements considered harmfull</font></a> (1968) - by Edsger W. Dijkstra <br>3.<a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fresearch.sun.com%2ftechrep%2f1994%2fabstract-29.html"><font color=#336699> A Note on Distributed Computing</font></a> (1994) - by Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant <br>4. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fwww.laputan.org%2fmud%2f"><font color=#336699>Big Ball of Mud</font></a> (1999) - Brian Foote and Joseph Yoder <a href="http://www.rgoarchitects.com/nblog/2007/11/28/BigBallOfMudAndOtherArchitecturalDisastersNot.aspx"><br></a>5. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fwww.lips.utexas.edu%2fee382c-15005%2fReadings%2fReadings1%2f05-Broo87.pdf"><font color=#336699>No Silver Bullet Essence and Accidents of Software Engineering</font></a> (1987) - Frederick P. Brooks <br>6. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fwww.objectmentor.com%2fresources%2farticles%2focp.pdf"><font color=#336699>The Open Closed Principle</font></a> (1996) - Robert C. Martin (Uncle Bob) <br>7. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fstandards.ieee.org%2freading%2fieee%2fstd_public%2fdescription%2fse%2f1471-2000_desc.html"><font color=#336699>IEEE1471-2000 A recommended practice for architectural description of software intensive systems</font></a> (2000) <br>8. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fciteseerx.ist.psu.edu%2fviewdoc%2fsummary%3fdoi%3d10.1.1.33.411"><font color=#336699>Harvest, Yield, and Scalable Tolerant Systems</font></a> (1999) Armando Fox, Eric A. Brewer <br>9. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fwww.cs.cmu.edu%2fafs%2fcs%2fproject%2fvit%2fftp%2fpdf%2fintro_softarch.pdf"><font color=#336699>An Introduction to Software Architecture</font></a> (1993) - David Garlan and Mary Shaw <br>10. <a href="http://www.rgoarchitects.com/nblog/ct.ashx?id=ee9b28a4-7f61-4d7b-8796-b82420097c96&amp;url=http%3a%2f%2fmartinfowler.com%2fieeeSoftware%2fwhoNeedsArchitect.pdf"><font color=#336699>Who Needs an Architect?</font></a> (2003) Martin Fowler </p>
<img src ="http://www.cppblog.com/Walker/aggbug/81018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Walker/" target="_blank">漫步者×&……%￥</a> 2009-04-25 10:41 <a href="http://www.cppblog.com/Walker/articles/81018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>