计算机专业丨大学生们的疑问:学习数据结构与算法有什么用?

我之前一直认为,学习计算机,必需要懂算法,不只要懂算法,还应该要“精通”算法。css

在我大一的时候,曾看过李开复老师的一篇著名的文章——《算法为魂》。这篇文章对我影响深远,甚至说改变了个人人生选择都不为过。html

由于这篇文章,我开始有意识地去接触算法,学习算法,打算法比赛,直到如今,还在关注最新的算法发展。算法

我作这些事情,真的并不彻底是功利的数据库

固然,这些对算法的学习过程,极大的为我本身的简历贴了金,但更重要的是,我确实想搞明白,对于我所热爱的信息技术,这个被称为“魂”的东西——算法,究竟是怎么回事儿编程

十多年过去了,直至今日,我依然坚信算法为魂。windows

我常常说,计算机领域里,处处都是算法。浏览器

算法的运用是如此常见,如此天然,如此平凡,乃至像空气同样,会被绝大多数人,甚至是计算机专业的人忽视。从咱们打开计算机(或者手机,平板电脑)开始,一系列算法就开始运转起来。从操做系统的调度算法,帮助咱们顺畅地使用操做系统;到网络链接过程当中各类协议的运转,帮助咱们畅游信息世界;从咱们使用搜索引擎,一个简单的关键字就能够在毫秒级别的时间返回数以亿计的信息,按照优先级排列展示到咱们眼前;到浏览器将枯燥的html, css和js文本转换成直观的网页,供咱们轻松阅读浏览;从看似平凡的文字处理工具帮助咱们排版,修订;到图像工具中各类神奇的滤镜帮助咱们磨皮修片;从游戏,影视做品中炫酷的特效;到最新的交互科技——不管是AR仍是VR,愈来愈广泛的应用。微信

算法无处不在!网络

可是,说实话,如今,个人这个“学习计算机,必需要懂算法”的观点在逐渐转变。这是由于,计算机的软件行业也在渐渐走向成熟。软件行业已经慢慢成熟到了:若是不会算法,也彻底能够有所做为的程度。数据结构

打一个可能不是那么恰当的比方。在乔布斯的时代,若是搞计算机,那是必须会设计线路板,焊线路板的。由于在那时,芯片还不是标准化产品,你们拼的,就是谁的线路板设计的更好。但是如今,你们搞计算机,谁还用焊板子呢?

再随便举两个例子,IBM你们应该都知道,曾经也是IT界举足轻重的企业。他家的一个很重要的业务是技术咨询。曾经,IBM的一大杀手锏,居然就是二分查找法!是的,查找是信息世界中最重要的操做之一,这个世界上近乎有一半算法,都是在处理提升查找速度这件事儿。曾几什么时候,企业的信息查找速度不行了,来咨询IBM,IBM就教他们使用二分查找法,赚得满盆金钵。

另一个例子就是数据库。如今你们学习数据库,都是直接学习SQL语言了,可能不多有同窗会去想,一条SQL语言在计算机内部究竟是怎样执行的。要知道,曾几什么时候,数据库可不是一个标准化产品。全部的企业作任何软件系统,都要本身作一套数据库!那么本身作的数据库,性能怎么样,就是核心竞争力之一!你家的系统只能处理万级别的数据,我家的系统却能处理千万级别的数据,那我家的产品就领先整个市场。

其实,老牌的不少技术企业,都是靠这种“底层产品”起家的,好比Oracle的数据库,微软的windows(还有更早的MS-DOS);adobe的PS等一系列产品;苹果的macOS,iOS;包括google的搜索引擎,等等等等。如今,咱们在大多数时候,更多的只是使用这些产品,但若是真要深刻下去,思考一下,怎么作这些产品?你们将面对的,是一系列算法问题。

可是,怎么作这些产品,确实已经渐渐不是技术世界的惟一出路了。业务场景变得愈来愈重要。这就是我说的,其实,在计算机的世界中,若是不会算法,也彻底能够有所做为。

作一个 PhotoShop,要学习不少算法,可是用 PhotoShop 作出一张优美的图片,不须要接触算法;制做一款游戏引擎,要学习不少算法,可是用游戏引擎打造一款成功的游戏,不必定须要接触算法;制做一个 iOS 系统,制做一个 XCode ,须要学习不少算法,可是用 XCode 制做一款优秀的 App ,不必定须要使用什么算法;制做一个数据库,或者一个框架,须要学习不少算法,可是使用这些框架和数据库,打造一个网站,一个软件,一个服务,不必定须要接触不少算法。

或许这就是不少同窗以为算法没用的缘由。由于,大多数同窗所面临的任务,不是作 PhotoShop,不是作游戏引擎,不是作操做系统或者编译软件;不是作数据库或者底层框架;而是应用他们打造具体的业务。算法已经被封装起来了,不少时候,咱们不须要接触算法的原理,就能很好的完成业务需求。

为何不少同窗以为算法没有用?一个很“可能”的答案是:由于你所接触的工做就是用不到算法。你所接触的工做只须要合理的使用各类工具框架就够了。我常常遇到同窗们这样的疑问:我在具体工做中如何可以运用我所学习的这些算法知识?大几率的,答案是,可能不太能运用。

由于,若是你以为本身的算法水平通常,可是在作当前的工做,并不以为有问题,那么就已经说明了,你如今的工做内容,并不须要太多的算法知识的运用。虽然在计算机的世界里,算法无处不在,但这并不表明咱们必定要掌握他们。

这有点儿像数学。数学有没有用?固然有用。人类文明发展至今,数学的发展有着举足轻重的地位。可是咱们在生活中,却愈来愈不容易感知到数学的重要意义了。

这种业务上的“分级”,实际上是一种很常见的现象。一个航空公司并不须要了解怎么造飞机,那是飞机制造商的事情;开一个饭馆也并必定是一个顶级厨师,怎么作饭是厨子的事情;一个成功的游戏设计师不必定了解游戏引擎底层的诸多原理,那是游戏引擎开发商的事情;一个顶级电竞高手也毫不必定是一个游戏设计师。

这就比如一个设计人员不须要理解photoshop背后诸多滤镜所隐含的图像学知识同样,那些是adobe的开发人员须要关心的问题;一个赛车手也不须要学会制造一辆赛车。这样的例子太多太多,怎么举都举不完。

算法不是技术领域的惟一的核心竞争力,但不管是一我的,一个企业,仍是作一份事业,都须要有核心竞争力。什么都没有,确定是不行的。

因此,“没有什么”历来不是问题。关键问题,历来都是:“你有什么”。

做为一名编程学习者,若是你想更好的提高你的编程能力,好好学习C/C++编程知识以及数据结构,之后努力成为高薪软件开发工程师的话!

C语言C++编程学习交流圈子,QQ群464501141点击进入】微信公众号:C语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!

编程学习书籍:

编程学习视频:

 

相关文章
相关标签/搜索