小土刀

一个满怀热爱的手艺人。无论是文字还是代码,我都想写点不一样的。

【大话数据结构】老板,来一斤二叉树

最近发现国内出了不少“有趣”的计算机类书籍,品三国与那些事儿带来趣说风潮,看来是从历史吹到IT了。可是这似乎并不是好事情,设计模式大话一下勉强说得过去,但是作为基础中的基础的数据结构,讲求的就是清晰的逻辑和精确的推导,如此大话,有趣有余,深度不足。总不能看着《棋魂》学围棋,看着《网球王子》学网球吧。


当然,对于非科班出身的初学者来说,保证有趣是很重要的,不然上来就是一本厚厚的数据结构课本,好不容易起来的三分钟热度就被彻底浇灭了。不过随着时代的发展,编程语言也从硬件相关变成了硬件无关,静态语言也慢慢向动态语言转变。是啊,在这个性能过剩的时代(这里主要针对个人和小型开发项目),已经不再需要一个字节一个字节去 抠了,取而代之是更加抽象封装好的API。

甚至可以说在将来,如果你只是需要做基本的开发工作,根本不需要去学习模电数电、计算机组成原理和数据结构这些东西。好比盖房子,从前要从一砖一瓦开始,而现在只需要确定好大概的样式,直接拼装就好了,面对这些封装好的模块,又何必知道里面是怎么搭起来的呢?就好像所有的计算机都离不开CPU,可是我们完全不需要知道CPU到底是怎么做出来的。

这种趋势其实不仅仅出现在编程语言和计算机基础学科里,所谓的云计算和大数据,其实也对应领域发展到一定程度必然出现的变革。不再需要对服务器进行繁琐的配置,甚至也不需要知道服务器原理,只需要简单注册账号按需购买,就可以得到云端的计算和存储能力,现在想想前面CPU的角色,是不是就能感受到时代的浪潮了?

问题就在于,这样的趋势会在什么时候停下?取个整数,就说12年之后吧。

这就要从摩尔定律说起了,1965年,英特尔联合创始人戈登·摩尔(Gordon Moore)预测,计算机芯片的处理能力每两年就会翻一番(现在是18个月)。尽管已经过去40多年,摩尔定律仍然有效。可是这种有效,其实已经不是当年的有效了,还记不记得什么时候出现双核CPU的?为啥不把所有东西都做到一起,还可以少一套一级二级(现在也有三级)缓存呢?

因为制作工艺已经几乎碰到天花板了,用于计算的最基本的门电路因为互相干扰的缘故已经很难做得再精细了,于是为了提高性能,就慢慢有了双核四核到现在的八核。

摩尔定律遇到麻烦的时候,原本的性能过剩可能就会使得人们把目光重新放到基础学科上。在真正可以大规模商用的量子计算机出现之前,无法摆脱冯诺依曼结构的传统计算机为了榨取最后一点性能,肯定会自底向上挖掘出最后的潜力。

完了,又扯远了,还是回来说数据结构。

从面试的角度来说,扎实的数据结构基础配上对应的算法,肯定会让你加分不少,但具体在工作中的应用,其实只要大概知道基本的几种结构就行了。

但是倘若想要真正参透计算机科学的奥秘,不要犹豫,数据结构是你必须要攻克的一关。这是非常严肃严谨的学科,请拿出十二分的勇气和毅力,找来经典的数据结构课本,配上算法导论,一点一点啃下来。

《中华小当家》也许能点燃你起对于烹饪的激情,但想要真正成为特级厨师,唯有坚持和苦练。


最后预告一下最近可能会写的算法和数据结构的系列文章吧,基本上弄清楚这些,一定能给面试官不一样的印象的:

  • 图算法:Prim,Kruskal,Dijkstra,Floyd,关键路径

  • 树:二叉排序树,AVL树,B树

  • 排序:希尔排序,堆排序,归并排序,快速排序

  • 其他:KMP,霍夫曼编码


评论(8)
热度(9)

© 小土刀 | Powered by LOFTER