数据结构应该教会我们什么?

栏目: 数据库 · 发布时间: 5年前

内容简介:数据结构作为大学计算机相关专业的最基础的课程之一,我相信很多软件开发的从业者都能够列举一些具体的数据结构,比如栈、链表,树,图等。但它对我们实际的开发过程有什么用呢?可能很多人都会说,没有太大用处,数据结构中学的东西,工作中基本都用不到。之所以有这样结论,在笔者看来,是因为我们只学会了数据结构交给的我们的术,而没有学会其背后更本质的道。

数据结构作为大学计算机相关专业的最基础的课程之一,我相信很多软件开发的从业者都能够列举一些具体的数据结构,比如栈、链表,树,图等。

但它对我们实际的开发过程有什么用呢?可能很多人都会说,没有太大用处,数据结构中学的东西,工作中基本都用不到。

之所以有这样结论,在笔者看来,是因为我们只学会了数据结构交给的我们的术,而没有学会其背后更本质的道。

我们的现状

在很多的软件开发过程中,说实话,数据结构并不是一门必须要掌握的技能,因为很多的软件开发,并不需要什么高深的技术,直接想到哪儿,写到哪儿,错了就改,然后功能就实现了,看起来也没有什么问题。

特别对于现在的动态类型语言来说,编写代码更加的容易了,不需要关心类型,随心所欲写就行了,只要不报错,只要看起来实现了我们想要的东西,就OK了,极大的降低了写代码的门槛。

但作为一个有追求的工程师,我想很多人还是不想就这样的,因为这样,即便工作十年,也只是熟练度的提升,多掌握了几个语言,本质并没有变化。

那怎样才能在本质上有所改变呢?

数据结构的本质

笔者认为,要要在本质上所有改变,我们需要首先理解数据结构的本质,它的道,然后不断的思考而训练。

数据结构的本质不应该是栈、链表这些具体的东西,它的本质应该是抽象和重组,如何通过结构化的思维抽象现实世界,将它们变成一个一个独立的基本单元,然后通过重组,然后组成一个高效的系统。

数据结构应该教会我们通过结构化思维进行抽象和重组的能力。

每当我们拿到一个需求,我们应该在全面理解的这个需求的情况下,进行合理的抽象,将其抽象成若干个相互独立而又相互关联的数据结构,然后组合起来,加上一些方法调用的交互,最终实现需求。

注意,我们这里没有使用面向对象进行说明,因为对象只是抽象的呈现一种方式。

越复杂的系统,抽象越发重要,良好的抽象能够化繁为简,让整个系统的行为更容易预测,更容易维护。一个经过良好抽象的系统和一个没有抽象的系统,维护起来,不是一倍两倍的差距,而是十倍百倍和能与不能的差距。

如何做好抽象

对同一个东西,水平不同的人能够不同的抽象,他们的差别是数量级的。最差的就是没有抽象,靠蛮力;最好的就是抽象合理,不多不少,简洁优雅。

对于高水平的来看,前者一团乱麻,不知所云,后者是一首优美的诗,简洁优雅。

抽象需要透过事物的表面看本质,即便表现完全不一样的东西,其本质可能是一样的。

抽象能力的获取都没有捷径,我们只能在遇到任何需求和事物的时候,多一层思考,不断的实践和应用。

当然在思考的核心之后,我们可以多看看优秀开源软件的设计,看他们的如何思考和解决问题的(注意不是浮于表面,而是要理解为什么),站在巨人的肩膀上肯定比自己从零探索快很多。

获得的好处

软件开发的核心是管理复杂度,当我们有了足够好的抽象之后,单元之间的就能够更容易的组合起来,单元与单元之前形成一个有机的整体,带来的结果是就复杂度的简化,更清晰的逻辑,更好的代码可维护性。

其次是对个人的,当一个人具备这样的能力时,无论技术上还是非技术上,他的成长会更快,能够获取更多更本质的东西,能够从更底层的维度看一个系统、一个产品、甚至人生。

本文到此结束,更多精彩文章,尽在「代码写诗」,微信搜索「 代码写诗 」公众号即可关注。

数据结构应该教会我们什么?


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从零开始学微信公众号运营推广

从零开始学微信公众号运营推广

叶龙 / 清华大学出版社 / 2017-6-1 / 39.80

本书是丛书的第2本,具体内容如下。 第1章 运营者入门——选择、注册和认证 第2章 变现和赚钱——如何从0到100万 第3章 决定打开率——标题的取名和优化 第4章 决定美观度——图片的选取和优化 第5章 决定停留率——正文的编辑和优化 第6章 决定欣赏率——版式的编辑和优化 第7章 数据的分析——用户内容的精准营销 书中从微信运营入门开始,以商业变......一起来看看 《从零开始学微信公众号运营推广》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具