内容简介:数据结构作为大学计算机相关专业的最基础的课程之一,我相信很多软件开发的从业者都能够列举一些具体的数据结构,比如栈、链表,树,图等。但它对我们实际的开发过程有什么用呢?可能很多人都会说,没有太大用处,数据结构中学的东西,工作中基本都用不到。之所以有这样结论,在笔者看来,是因为我们只学会了数据结构交给的我们的术,而没有学会其背后更本质的道。
数据结构作为大学计算机相关专业的最基础的课程之一,我相信很多软件开发的从业者都能够列举一些具体的数据结构,比如栈、链表,树,图等。
但它对我们实际的开发过程有什么用呢?可能很多人都会说,没有太大用处,数据结构中学的东西,工作中基本都用不到。
之所以有这样结论,在笔者看来,是因为我们只学会了数据结构交给的我们的术,而没有学会其背后更本质的道。
我们的现状
在很多的软件开发过程中,说实话,数据结构并不是一门必须要掌握的技能,因为很多的软件开发,并不需要什么高深的技术,直接想到哪儿,写到哪儿,错了就改,然后功能就实现了,看起来也没有什么问题。
特别对于现在的动态类型语言来说,编写代码更加的容易了,不需要关心类型,随心所欲写就行了,只要不报错,只要看起来实现了我们想要的东西,就OK了,极大的降低了写代码的门槛。
但作为一个有追求的工程师,我想很多人还是不想就这样的,因为这样,即便工作十年,也只是熟练度的提升,多掌握了几个语言,本质并没有变化。
那怎样才能在本质上有所改变呢?
数据结构的本质
笔者认为,要要在本质上所有改变,我们需要首先理解数据结构的本质,它的道,然后不断的思考而训练。
数据结构的本质不应该是栈、链表这些具体的东西,它的本质应该是抽象和重组,如何通过结构化的思维抽象现实世界,将它们变成一个一个独立的基本单元,然后通过重组,然后组成一个高效的系统。
数据结构应该教会我们通过结构化思维进行抽象和重组的能力。
每当我们拿到一个需求,我们应该在全面理解的这个需求的情况下,进行合理的抽象,将其抽象成若干个相互独立而又相互关联的数据结构,然后组合起来,加上一些方法调用的交互,最终实现需求。
注意,我们这里没有使用面向对象进行说明,因为对象只是抽象的呈现一种方式。
越复杂的系统,抽象越发重要,良好的抽象能够化繁为简,让整个系统的行为更容易预测,更容易维护。一个经过良好抽象的系统和一个没有抽象的系统,维护起来,不是一倍两倍的差距,而是十倍百倍和能与不能的差距。
如何做好抽象
对同一个东西,水平不同的人能够不同的抽象,他们的差别是数量级的。最差的就是没有抽象,靠蛮力;最好的就是抽象合理,不多不少,简洁优雅。
对于高水平的来看,前者一团乱麻,不知所云,后者是一首优美的诗,简洁优雅。
抽象需要透过事物的表面看本质,即便表现完全不一样的东西,其本质可能是一样的。
抽象能力的获取都没有捷径,我们只能在遇到任何需求和事物的时候,多一层思考,不断的实践和应用。
当然在思考的核心之后,我们可以多看看优秀开源软件的设计,看他们的如何思考和解决问题的(注意不是浮于表面,而是要理解为什么),站在巨人的肩膀上肯定比自己从零探索快很多。
获得的好处
软件开发的核心是管理复杂度,当我们有了足够好的抽象之后,单元之间的就能够更容易的组合起来,单元与单元之前形成一个有机的整体,带来的结果是就复杂度的简化,更清晰的逻辑,更好的代码可维护性。
其次是对个人的,当一个人具备这样的能力时,无论技术上还是非技术上,他的成长会更快,能够获取更多更本质的东西,能够从更底层的维度看一个系统、一个产品、甚至人生。
本文到此结束,更多精彩文章,尽在「代码写诗」,微信搜索「 代码写诗 」公众号即可关注。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 一篇教会你写 90% 的 Shell 脚本
- 如何教会机器读懂设计 v1.1
- 想知道jsonp到底是怎么实现的?看我,包教会!
- 一文教会你如何在 Spring 中进行集成测试,太赞了
- Zookeeper学习系列【一】 教会你Zookeeper的一些基础概念
- 指标体系:四个模型教会你指标体系构建的方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Services原理与研发实践
顾宁刘家茂柴晓路 / 机械工业出版社 / 2006-1 / 33.00元
本书以web services技术原理为主线,详细解释、分析包括XML、XML Schema、SOAP、WSDL、UDDI等在内在的web Services核心技术。在分析、阐述技术原理的同时,结合作者在Web Services领域的最新研究成果,使用大量的实例帮助读者深刻理解技术的设计思路与原则。全书共有9章,第1章主要介绍web Services的背景知识;第2-7章着重讲解webServic......一起来看看 《Web Services原理与研发实践》 这本书的介绍吧!