《USB应用分析精粹:从设备硬件、固件到主机程序设计》已经定稿
Hello,大家好,随着东京奥运会顺利落下帷幕,《USB应用分析精粹》(以下简称“USB”)也已经定稿,相关例程与插图已经准备妥当,眼下正忙于后续进一步完善中(包括遣词造句的优化,源代码整理,绘图或标记风格的统一化等等),全书共50章,约15万字,敬请期待哈~~(以下内容不涉及图书细节,要保密的哈,么么哒~~)
我始终认为:写作思路是图书撰写过程中最重要的环节。有人可能会嘀咕:你老是说创新的写作思路,那到底什么样的思路才算是好的呢?对此我无法给出标准答案,也许我认为不符合要求的图书却被其它读者奉为经典呢?又或者,我认为是经典的图书在别人看来很烂呢?这肯定是无法避免的,因为每个人对图书的创作要求并不相同,但有一点可以肯定:好的写作思路必然是为了更好地服务于其定位的读者!一本书的读者定位如果不清晰,作者就不知道什么该写什么不该写,就如同新手去啃USB规范一样,TA搞不清楚哪些是重点。
《USB》定位的读者就是新手与有经验的工程师,它仅限于USB设备固件与主机端应用程序开发。也就是说,《USB》并没有涉及USB设备驱动开发,为什么呢?原因很简单,需要进行USB设备固件或应用程序开发的人员并不少(也是咱定位的读者),而且我相信数量还会不断地增加,但从事USB设备驱动开发的人员相对而言现在却已经不多了,未来也应该会不断地减少,而同时需要进行USB设备固件、应用程序、设备驱动开发的人员几乎可以忽略不计。说句实话,大多数时候,我们已经不再需要进行USB设备驱动开发了,操作系统已经集成了大多数USB标准设备类驱动,对于非标准设备则可以使用通用驱动程序,它已经能够满足绝大多数的要求,所以《USB》对设备驱动开发部分仅做了简单介绍,而这仅仅是为了保证本书架构的完整性。虾米?你硬是要学习USB设备驱动开发?唉哟,我的马丫!只能把你放弃了!
咱对图书选题的硬性要求之一就是:潜在的读者要足够多!原则上,太过偏门的图书是不会介入的,原因很简单:读者太少,不好卖!所谓的“高科技含量有多少”从来都不是我的首要选题标准,恰恰相反,咱更注重基础性,“基础”并不意味着“没技术含量”或“很简单”,能够用基础知识解释所谓的高科技才算真正的牛逼(一家之言,仅供参考,么么哒~~)。咱撰写图书的主要目的就是为了扩散到更多的读者:哇噻,这是龙虎写的图书,我要买买买(终极目标,哈哈~~)。
有些读者在想:不就是为了“米”嘛,不要粉饰“太平”了!“米”当然重要,因为饭还是要吃的,充足的“米”也能够激励作者拿出质量更高的作品,这是一种良性循环。一个不考虑口碑与销量的作者不是好作者,我可从来没说过自己写书不为“米”,只不过没有把“米”摆在首位而已。
前不久,有一位看过《三极管应用分析精粹》(以下简称“三极管”)的粉丝特意打赏了50元表示认可,其实50元本身并不算什么,但是这个举动在精神激励方面体现的价值却远不止于此,让我更加坚信自己对图书撰写的高质量要求是正确的,也是值得的(就像蝴蝶效应一样,一个细微的举动可能会改变历史,哈哈)。但是如果有些人存在“龙虎写了这么几本书应该发财了”类似的想法,那我只能呵呵了。一本定价100元的图书,你以为有多少会进入作者的腰包?按照10%的版税来算(这还算是较高的版税),作者实际能够拿到手的不到10元(因为还要扣很重的税),所以不要以为定价这么高的书作者会赚得盆满钵满,除非是那种畅销小说(销售达几十万册以上)。首印3千册的技术类图书,如果能够在一年内全部卖完,已经算是畅销技术类图书了,跟小说不是一个级别。
言归正传,创新的写作思路就意味着与已有的图书都不同。我很早就提过,目前市面上的图书基本上从一开始就开始大篇幅阐述USB规范,但是USB规范涉及的术语非常多(例如,枚举、帧、令牌、事务、描述符、管道、传输、特征、时序位、同步等等),而购买图书的读者通常还是对USB开发还没有多少概念的新手,本来的目的就是为了学习USB设备开发,把这些枯燥的内容一股脑地放在前面对读者很不友好。《USB》则反其道而行,从一开始采用简单的范例帮助读者建立起感性认识,在此过程中逐渐切入到描述符之类偏顶层之类的内容,而令牌、事务、传输等偏底层的概念更是放在后半部分去讨论,因为这个时候,你已经对USB设备开发有了一定的认知与经验,在此基础上深入USB规范更合理一些。
如果非要用一句话来评价《USB》,那就是:以后没有必要再撰写USB设备开发相关的图书了!这看起来有些狂妄,但一个真正有野心的作者必须有这种执着的追求,惟有如此,才会不断地对稿件质量提出更高的要求,我甚至想达到这种程度:仅仅对图片绘制的要求,也要甩其它同类图书几条街。对于图书创作,我是追求完美的,对于撰写任何一类图书都是这种态度,这也就意味着:我想达到前人没有达到的高度!《USB》前半部分对于初学者相对简单,但后半部分异峰突出,从底层电平、令牌、事务、传输逐步往顶层详细剖析,你能够对“USB数据在传输过程的每个层面干了些什么”有清晰的认识,这是以往图书从来没有尝试过的。我的野心其实很简单:把零散的内容按照自己的写作思路有机地结合起来,形成一种全新的知识架构。
有些人可能会想:没必要这样做吧?能用就行!确实有道理,《USB》也的确能让你达到这个目的。但是,《USB》就是借用“USB开发”的壳,让你去深入理解USB规范。USB规范在可预计的将来不容易过时,而开发平台则不然,这也是我的主要撰写思路:避免与平台有过多关联。换句话说,开发平台对我来说只是一件工具,就像《三极管》中的Multisim软件平台,《显示器件应用分析精粹》(以下简称“显示器件”)中的Proteus软件平台一样,它们都是为图书的主题服务的,这也是我的写作习惯:尽量选择合适的工具。目的之一是便于读者学习与验证,更重要的是,尽最大可能强化图书内容的思想纵深(给其它类似图书进行降维“打击”,哈哈,不要打我~~),避免把图书组织得太过扁平化,就像一部电影,如果从头到尾都是波澜不惊,不太容易引起观众的兴趣。
《USB》中经过精心准备的几个范例能够使你全面掌握“USB设备固件与主机应用程序的开发过程”,但更重要的是,通过从范例中找到USB规范对应的层次,继而加深对USB规范的理解,因为即便你能够对USB规范倒背如流,也不一定能够真正地理解,“学”与“用”相结合才是王道。反过来,深入理解USB规范后,你才能够更加从容地面对USB设备固件开发,甚至于熟练进行USB设备内核层编程,又或者找到固件的BUG,而不仅仅是机械地按别人所谓的经验或笔记去执行“这个地方写什么,那个地方怎么做”等等操作。简单地说,知其然更要知其所以然,惟有如此,当切换到另一个平台之后,你才能够以不变应万变。
设计思想也是本书的重点阐述对象。例如,《USB》花费了超过2万字的篇幅对报告描述符的设计思想进行了深入探讨,这些内容都是从规范中解读并重构而来的一手信息,没有其它任何人曾有过这种尝试,但我认为花费这些时间是值得的,因为有意义,因为它能够为《USB》增添光彩。如果你能够真正理解报告描述符的设计思想,对于设计或分析报告描述符都不会是难事,而且很多细节上都能够透彻理解,能做到这一点是很不容易的。相反,如果你做不到,就很可能会出现这样一幕:你明白报告描述符的大体意思,但有些细节却不是很明白,如果让你设计一个全新的报告描述符,感觉不知道怎么下手,只能通过修改现有报告描述符的方法来实现。说实话,我认为这是一种悲哀!虽然作为应用开发人员而言,并不一定必须要达到这种程度,但是作为图书的创作者,把“规范嚼碎再重新组织起来”的能力非常重要,这也是我对写作的要求。
从个人的角度来,我从不喜欢把自己的书写得太枯燥,这也是咱的交稿标准之一,更何况是对于USB这种包含全新概念非常多的主题。从现有已经撰写完成的图书来看,《三极管》的写作难度是最高的,因为它不仅有着严密的理论体系,还包括怎么样更形象组织,在撰写的过程中需要两种思维方式不断地切换,消耗的心神不可谓不大。但《USB》、《显示器件》等则不一样,理论体系方面的内容很少(并不是指写作难度小,因为每类图书都有很多需要挑战的地方,理论体系只是其中之一),撰写的关键在于使用更好的方式将知识点表达出来,所以趣味性相对会更强一些。《USB》会使用开超市、面试、打篮球、工厂制造等方式将USB规范轻松地展示出来,无论你以前是否接触过USB开发,只要你对USB开发有足够的兴趣,《USB》都能够轻松带你进入另一个神奇的世界,还在犹豫什么?Let’s Go Fighting!