<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
本文由恋花蝶最初发表于:http://blog.csdn.net/lanphaday和http://lanphaday.bokee.com,转贴请保留这一声明,谢谢。
雷声大,雨点小
《多任务下的数据结构与算法》初印象
这本书是今天当当网送到的,看了前面二十页,已经激动得非写下点东西不可了。
这本被冠之以国内第一本原创多任务下的数据结构与算法图书之名的书籍的确吸引了我的眼球,并在我能做到的第一时间在当当网买了下来,读来二十页后,不得不说:大失所望!
作者周伟明,我在网络上找不到更多关于他的信息,因为同名的人太多。所以这篇短文所说的都是针对于这本书而言,事先声明一下。因为我要批评这本书,肯定是会被很多人拿砖头过来拍我的;原因是就目前而言,我在网上看到的都是说这本书好、推荐这本书的网页。
根据第二书店的网页(http://www.dearbook.com.cn/2006/data/index.htm)介绍,“本书在传统数据结构与算法的基础上,提出了许多新的思想概念和设计方法,重点介绍了如何使数据结构与算法支持多任务;还介绍了复合数据结构与动态数据结构的设计,并对商业应用实例进行分析讲解。”因为还没有读完整本书,不敢对上而的说法作反驳,现在只根据已经阅读的前二十页谈谈自己的想法。
第一、 这本书作者说得太满了。很多方面作者提出自己的见解是无可厚非的,但多处把话题说死。比如第2页关于STL的讨论之一是说模板库的内存开销大,在内存受限系统中不合适,实在太过荒唐。举个例子,实现Max函数比较两个对象,用C的话因为要适应各种数据结构要做出N个不同的版本,编译之后占用多大内存?用C++的话,只要写一个模板函数然后依要求特化即可。甚至C语言版本在比较自定义数据结构的时候还需要写一个比较函数,而C++只要写一个重载了操作符的函数对象即可,连函数调用的开销都省下了。不知道C++占内存更大的观点从何而来?又如在第3页关于参数校验方面的论述,作者说对于需要在大的循环里调用的函数,不需要要函数内对参数进行校验;在列表的遍历函数。这句话我不敢苟同,把自己的函数执行的正确性依赖在调用者身上,正是与软件工程里高内聚低偶合的原则相抵触的,而且放眼当前流行的程序库,尚未见哪个是这样设计的。
第二、 这本书作者的个人经验太多,很多东西没有拿出来大家讨论是否合适就写到书中去了。比如第5页关于switch和if…else的论述,作者举的例子实现太不合适了。不知道有哪个程序员会在那种情况下使用switch语句来实现?恐怕连最初等的初学者都懂得那应该用if…else来实现吧?又如第5页谈及goto语句时说“从多重嵌套的循环判断里跳出去就是不允许的。”我看过很多论及goto语句的言论,与作者相反,大家都是认为从多重嵌套中直接跳出有利于程序的清晰性,还有,如果不允许goto跳出多重循环,不知道goto还有哪些更充足的理由存在?
第三、 这本书有不少错误。比如第20页实现的Stact_Pop函数,用以弹出栈顶元素并在当栈为空的时候返回NULL。这个函数是有设计错误的,当我在里面存储的数据包含一个NULL指针时,我不知道根据返回值怎么去判断我的弹出操作是成功还是成败了?一个改进的方法就是返回两个值,一个是数据指针一个是操作状态。还有在第24页里定义队列时说“…栈是后进先出,而队列的进出方向刚好和栈相反。”不知道作者所言的方向是指什么?根据上下文,应该是说栈是FIFO,栈是FILO吧?但也没有相反之说啊?还有回到<chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"><span lang="EN-US"><font face="Times New Roman">2.1.2</font></span></chsdate>节的栈的实现上去,当栈满的时候,作者的设计是增加一倍空间,且不说使用realloc函数造成的效率损失,这种只增不减的设计在内存的浪费问题上应该被BS的!我相信作者在实际工作中不会采用这样的设计,这只是作为书中的例子做了简化,但你既然简化了内存组织方式,那就不应该再实现当栈满时自动增加栈空间的功能!栈满直接返回操作失败即可。其它诸如“栈是一种最常用的操作,…”(第17页)、“…这样实现起来可以充分利用数组操作的高效性,避免移动数据。”(第18页)就不一一枚举了。
第四、 作者对自己不算纯熟的领域大放厥词。在第14-15页,作者在名为软件设计简介的章节里大谈自己对软件工程的见解,而且海吹胡擂,为软件开发划分了结构化和面向对象两个阶段,并对COM等横加指责,安名加罪。作者甚至断言在“…软件设计发展的第三阶段才能彻底解决。”他自创了宏观设计学和微观设计学两个“重要”理论,这样的论调,对于广大的程序员,特别是一些初学程序开发的学生是有害的、是不负责任的胡说。
第五、 作为一本论述数据结构与算法的书籍,没有设计一些跨平台的自己的程序库是非常失败的。这本基于Windows内部互斥量、事件的数据结构与算法书,把读者的思维禁锢在一个平台之上,而数据结构与算法却是计算机科学里最最平台语言无关的学科,这一点,未免让人大失所望。
这本书现在为止,读的只有这么二十余页,但我觉得已经非常失望了。当然,这怪不得作者,从字里行间我依然可以感受到作者非常用心想把自己所学所感所悟传导给大家,作者的心是热切的,但可能作者因为工作原因(比如不方便举出更详尽的例子和实际应用中的例子)和时间原因(作者已经伏案十年写下此书)而不得不为之删减吧!这本书,对于广大的有一定经验的程序员和正在成长中的程序员是有好处的,可以买来一看,只要看的时候取精去糙,相信仍会收获不小。但还处于学习期的大学生和广大初学者就不要看了罢,恐怕对你们有造成一些不良影响。
附:我这样写,肯定是有很多人要拍砖的,所以我开放了blog的评论功能,希望大家心平气和地就事论事。
分享到:
相关推荐
有色金属行业研究:刚果金新矿业法正式签署——影响大矿山税率,或雷声大雨点小.pdf
高通移动XR芯片雷声大雨点小.pdf
雷声大雨点小,《微信》小程序真的被高估了?
雷声大雨点小,《微信》小程序真的被高估了?.pdf
雷声大 雨点小 新能源汽车补贴政策缺乏细则 新能源汽车推广应用补贴政策疑问重重落地尚待时日.pdf
#资源达人分享计划#
如果碰到非常调皮的,可以适当的打屁股要雷声大雨点小,同时要让其他的学员看到要做到杀一儆百的效果。在广场上课要七分给家长看三分教学员,广场上课就像表演一样,要生动、要有乐趣,所以语言的组织尤为重要,要让...
长尾理论最新版.pdf 完整中译版 翻译:拙尘、雷声大雨点大
2017随着互联网流量...但是几年过去了,我们并没有看到区块链游戏的繁荣,以《加密猫》为起点的链游市场经过2年的发展,各种类型的游戏总是雷声大雨点小,胜败兴衰的速度持续加快,并没有探寻到一个可持续发展的道路
但穿戴式市场还未成熟,可以说是“雷声大,雨点小”,产业爆发的瓶颈在哪?现在是否是厂商大规模进军的最佳时机?如何整合硬件、软件、应用以及运营服务等不同的资源?12月20日在深圳召开的“2013穿戴式电子设备应用与...
一种基于手机的雷声检测和定位方法与流程.docx
可以让屏幕下雨的屏保,伴随有雷声很震撼!
从去年开始国内的云计算呼声越来越高,但企业应用方面依然是雷声大雨点小。到了2011年,情况有了较大变化,各种各样的应用逐渐多了起来,其中云存储技术率先走到了我们身边。酷盘、金山、联想等都推出了基于云存储...
如果你花好大力气设计好了一种场景的声音,当然可以保存下来啦——不过好像只能用英文命名囧,这样下次启动时就可以直接拿来用啦! 3. 一些小遗憾 免费版的 TaoMix 在声音的选择上稍作限制,同时添加的音效数量不能...
不知有多少人失足于大功率LED,大功率LED雷声大,雨点小,害的不少在这一块痛失老本。还是小功率LED市场好一点。不过也不行,现在小功率LED驱动器,被阻容降压电源占去大部分江山。
随着基于互联网的各种商务、生活应用的爆炸性增长,人们对于高速宽带网络的需求也不断急速增长。今年以来,国内运营商围绕...卢嘉认为,光纤到户在中国炒了四五年,总是看到雷声大、雨点小,今年有望实现真正的突破。
雷声,鸟叫声,风声,虫叫声,大自然的各种声音下载 这个声音包的用途多种多样,比如水声,大家可以心烦的时候听听 我QQ的声音 已经替换成虫叫声了 我卡巴的声音杀到病毒后,会有雷劈的声音 哈哈
雷声公司演示新的潜艇通信技术.pdf
繁多,如人的话音、乐器声、动物发出的声音、机器产生的声音以及自然界的雷声、风声、雨声、闪电声等。这些声音有许多共同的特性,也有它们各自的特性。在用计算机处理这些声音时,既要考虑它们的共性,又要利用它们...
电子政务-一种高灵敏度雷声测试电路.zip