算法与数据结构重要吗?
数据结构和算法什么时候重要的呢?是在编写程序需要极致优化,压榨硬件的时候。在计算机刚刚出现和普及的那些年,硬件性能极弱,那时的都得压榨到极致才行。如果有不理解可以参考当年美国用来算导弹弹道的计算机和登月飞船上用于通讯导航的计算机的性能。它们的性能可能还不如你的手环。这个情况直到90年代之后才基本上得到解决。
之后,需要极致压榨性能的需求数量在整体工程需求这个范围内显得越来越少了。性能过剩在很多时候可以让程序员无视优化。你说二分查找是O(logn),但是在几百万个数据查一遍可能就比线性查找慢个几秒钟。平时你又能碰上几次上百万这种级别的数据呢?优化完了看不出收益,自然就不需要优化了,省下时间还不如多出点活。
那么当你遇到问题了,需要优化了,需要压榨性能了,怎么办呢?大部分时间还是不需要操心,因为总有一小撮人/公司帮你想好了,搞定了。你直接用就行了。比方说你觉得parsejson会很消耗性能,想优化下,fastjson已经帮你搞定了;再比如你觉得数据处理单机太慢,需要并行,所以想搞搞调度和IO优化,spark,hive等已经帮你搞定了……学会他们也就是几周的事情而已。
再往后呢,可能出现一个情况,需要压榨性能,但是这个领域没人做过,没有现成的工具、框架和库。怎么办呢。这时你突然想自己撸,但是突然发现自己计算机组成原理、算法、数据结构完全不懂。而旁边的哥哥一拍胸脯大吼一声“放着我来!“。谁升职加薪大家心里就都明白了。
很多时候,数据结构算法一种“储备”,用于恰当的时刻。但在你真的遇到需求之前,真的很难用得上。你愿不愿意花精力为这个“光荣的时刻”做储备呢?做了,不一定能成;但是不做,一定成不了。
其实,有用的储备多种多样,比如“擅长写文章,