程序员最好的投资:数据结构

这周看了Martin的演讲,讲的是高性能系统的设计。他劝我们一定要舍得时间和精力在数据结构上下功夫,因为数据结构会陪伴你的整个职业生涯,长久不息的回报你,是一个程序员最好的投资。

为什么数据结构会有这种收益?

每天都给你节省时间

掌握好数据结构能帮助我们节省时间,并且每天都能省,这是因为我们每天都要和他们打交道。这就像,你每天上班,必须得坐地铁,但地铁太绕,开车十分钟能到的路程,生生被饶了一个半小时,后来你终于学会了开车,开车上班,每天省了一个小时二十分钟。如果数据结构掌握的不好,Queue里边有什么方法,怎么用还得看文档,毫无疑问,这绕的太多,浪费了太多时间。

熟能生巧

熟能生巧,一个巧字,如果你有幸遇到了,我磐石般的相信,这将是你作为程序员中生命中最为闪亮的时刻。学习之道,引起我强烈共鸣的一本书,讲述了作者Josh如何成长为象棋和太极宗师。我想利用其中的一段小故事来说明这个巧字。

和很多普通象棋学习者不同,Josh学象棋的时候,不是从开局而是从尾局开始,他解释道,在棋盘上所剩无几的时候,才能体会到一个棋子所能爆发的最大能量。只有把每个棋子的用法都体会透彻之后,才能催生出妙招。在一次比赛中,当所有的人都认为要和棋的时候,Josh走出了连自己都无法解释的妙招,这也许就是传说中的无招胜有招。其实,这并不是一种偶然,而是他积累到了熟能生巧的阶段,当知识融会贯通的时候,巧妙的招数,想法便不知不觉由心而生了。

我相信,学习数据结构,也会有同样的功效。我时常会沉浸于一些程序员所创造出的新的数据结构或算法,不可自拔,感叹他们的聪明才智。可他们之所以能创造出巧妙的新结构,也是他们在基本的数据结构上投入了大量精力,不仅知道他们的实现原理,怎么用,而且还知道为什么要这么用。

可转移技能

数据结构是比较底层的知识,一般底层的知识都具有可转移的属性。举个例子说,你用Java编程语言,明白了TreeMap是一个平衡二叉树。那么恭喜你,你将会在所有的编程语言里碰到这个数据结构,这可以帮助你快速的学习新语言。

资源

修改历史