您的位置:首页 > 理论基础 > 数据结构算法

隐匿在数据结构背后的原理

2016-03-16 09:33 260 查看
无论你是信息技术的从业人员,还是计算机专业的在校学生,再或者是从事相关专业的研究人员,熟练掌握一门计算机语言的重要性都不言而喻。但是不是掌握了这其中的语法规则就能写出漂亮的程序了呢?答案当然是否定的。因为你还需要另外一样至少同等重要的工具——算法。算法和语言的关系,其实很像是“道”和“术”的关系。掌握一门语言,就如同习得一门技艺,可以成为一名工匠。但要想从工匠一跃成为大师,单单停留在“术”的层面显然不够,更重要的是悟“道”。而算法无疑就是计算机程序设计中的“道”。

今日,受邀做客CSDN社区问答,活动主题“隐匿在数据结构背后的原理”,并与广大网友就一下话题展开讨论:
算法与数据结构的关系
数据结构的高级应用(例如在机器学习算法或空间数据库算法中的应用)
如何学好算法和数据结构

本次活动受CSDN和电子工业出版博文视点资讯有限公司大力支持,待活动结束后将抽取3到5名幸运参与者,赠送《算法之美——隐匿在数据结构背后的原理(C++版)》书籍一本。活动地址:http://bbs.csdn.net/topics/391916287
活动主页内附有《算法之美》一书的试读样章,神马八皇后问题,迷宫问题,汉诺塔问题,传染病问题等一大拨经典算法问题正在袭来。

最后由昨天的一件事引发了我的一些思考,算是方法论上的一些东西吧,跟大家分享。事情的起因是有读者参与我的有奖捉虫活动认为找到了书中的一个bug,最后证明是闹了乌龙。
留言地址:http://blog.csdn.net/baimafujinji/article/details/50484348
由此我提出了三点看法:

1)金无足赤,人无完人。连大神Knuth的书也有错误(据说他会给每找出他一个错误的人256美分作为奖励)。我确信《算法之美》并不完美,但是我一直都以一种相当认真的态度来对待它。特别地,我希望可以通过有奖捉虫的活动来不断完善它。事实上,我已经发现了几处错误,但我并没有把它们加入到勘误表中,就是希望给参与活动的读者留一些机会:)
2)挑错误的技巧和与人分享的精神。如果你觉得书中哪里是错误的,那么指出错误的正确方式应该是告诉大家什么才是正确的,以及为什么那个是错的,而这个是对的。即使对于一个错别字而言,如果你只是说“声名狼籍”中有错字,我想这是不够的。你还应该告诉大家正确的写法是“声名狼藉”。这样做,第一是为了让其他读者能够从你找出的错误中学到东西(你只说一个东西错了却不告诉别人怎样改正以及为什么错了,别人其实什么都没学到)。第二,你分析和改正错误的过程恰恰是你学习和提高的最重要环节(这一点我的一本译作《代码阅读》中有更为精辟的论述)。
3)最后仍然算是一个学习和阅读的建议。全书的代码我都已经公开发布在我的博客上。代码当然很重要,“Talk is cheap. Show me the code.”(语出Linus Torvalds)。但之于我这本书而言,它的精华绝对不在源代码上,而应该是我对于算法原理本身的讲解。我甚至不希望这些冗长的代码挤占了我图书宝贵的篇幅,而将它们转帖到我的博客上,读者应该明白我的一番用心。这些代码仅仅是在你深入理解算法实现过程中起到一点点有限的辅助作用。如果你过于关注代码,那无疑就是“舍本逐末,买椟还珠”。如果你只是对某个算法的实现代码感兴趣,你确实不用浪费钱去淘一本《算法之美》。我博客上所有的代码都有清晰的标识告诉你它在执行一个什么任务,你只要到我的博客上复制或者阅读它们就行。如果你只是把我的代码黏过去,在你的IDE上执行一下,观察一下输出结果,同样也是没有意义的。这样甚至有点自欺欺人,或者说你都不应该关心我程序的输出结果到底是什么,它的实现过程远比输出结果更有意义。“学而不思则罔”,思考对于学习的过程而言非常重要,你在阅读实现代码时,应该考虑的是我用文字描述的算法流程是如何对应到一行一行的源码的,你每时每刻都要试着问自己,是不是真的读懂了这些代码的每一行都在做什么事。所以代码错误中最高级的错误应该是逻辑错误(也就是说算法在实现上就出现了问题),至于一个变量有没有初始化,用完的内存有没有释放(当然我相信我的代码都有释放内存)尽管它们也会引起程序出错,但是它们至少不应该是本书读者关注的焦点。如果你还在考虑这些语法上的错误,那么你更应该读的书应该是《C++编程思想》《Effective C++》《C++ Primer》这些解释编程语言的书。数据结构和算法学习确实与编程能力的提升相辅相成,但是你显然不能以看算法书为手段来学习计算机语言语法(特别是那些tricky的细节),就像你不应该去餐馆里买铁锅和盘子,也不应该去水果店买塑料袋一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: