为什么我们需要学习算法?

作者: 与非门salome | 来源:发表于2017-08-25 11:34 被阅读247次

算法是计算机科学领域最重要的基石之一,特别是面试的时候,算法是必不可少的一部分。

为什么学算法?

李开复曾经把基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。 整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”

面试的时候多多少少都会问到算法,但是考算法,并不是为了考,而是为了在探讨算法的过程中,考察和验证一个人是否聪明,是否基本功扎实,是否能够顺畅沟通,是否能够快速反应和学习。在讨论和交流的过程中,发现闪光点。比如,面试官可能会问是否知道一些排序算法,那不管是在学校,还是在工作中,还是在平时的阅读中、同事沟通中,都应该可能触及到。如果一无所知,有很大的几率就会挂。然后,可能会问到某个具体的排序算法,比如,快排,这个可能有些人真的不清楚,或是不记得了。其实,没有关系,好的面试官会给你简单的解释,这时候考察的就是你是否学得快理解力强。接下来,面试官可能会问问时间复杂度的问题,不要说不记得,可以根据你的理解进行快速的推理。

所以,考算法作为面试中重要的考察手段,为了考察一个人是否聪明,能否出活,是否主动。聪明是高质量出活的关键因素之一,主动是出活的速度和质量的有力保障。

学算法有什么用?

可能有人会问了知道了一个算法又能怎么样,可能工作中一辈子都用不上,就算能用上,很多的算法都有库和包实现了,拿来用就是了。确实是这样,在现实工作中我们所接触的,更多是对业务逻辑的理解,程序语言的各种特性的熟练,代码 style、pattern 的把握,各种同步异步的处理,代码测试、部署的正规化等等。需要设计甚至实现一个算法的机会确实很少,即使用到,现学可能都来得及。

而对基本算法的了解的好处可能在于:工作中需要读一段代码包含一些基本算法的思想,你会更快对其理解;读到一段烂代码,你知道为什么烂,怎么优化;当真的需要有一些算法设计在程序里面的时候,对基本算法的掌握会让你更有可能给出一个完备的方案;对每种程序中出现的算法或比较复杂的逻辑的时间复杂度等你会更有敏感性;熟悉算法你还可以成为一个更优秀的面试官;还可以和别的码农聊天的时候不被鄙视。

怎么学算法?

最近各种公众号各种社群,都搞得风风火火,但是谈系统设计和架构的偏多,没有太多分享算法的。是因为算法不重要么?恰恰相反,而是因为算法太重要太基础,以至于你会算法,这事都没啥好说好分享的了。除非你是搞出了什么新的特别牛的算法(更多是学术界),否则你去给谁分享?抓个合格的程序员别的不会,算法总是会的。何况这门技术已经成了经典,不用看什么公众号文章,就看《算法》就行了。

我最近在学习Robert Sedgewick编写的《算法(第四版)》,他是算法宗师Donald E.Knuth的门下高徒,是算法界的经典。

《算法(第四版)》

如果有人在读这本书的,欢迎大家多多交流。另外,为了方便讨论,还有一个微信交流群(算法交流),想要加入的,可私信我。

学习算法,不仅能让自己思维能力更是一个台阶,也能在大数据和人工智能时代为自己打下坚实的基础,成为互联网行业的高端人才,而不是一直停留在低水平的体力编程层次。

11.png

相关文章

  • 为什么我们需要学习算法?

    算法是计算机科学领域最重要的基石之一,特别是面试的时候,算法是必不可少的一部分。 为什么学算法? 李开复曾经把基础...

  • 数据结构 day00 学前须知

    1、为什么要学习数据结构与算法? 面试需要 无论什么语言,底层其实涉及到了许多数据结构算法的设计 对于我们阅读别人...

  • 算法分析

    在《为什么要学习算法》中,我们讨论了什么是算法分析,以及为什么要进行算法分析,今天,回过头来再看其中内容,觉得仍需...

  • 超参数

    超参数:在我们运行机器学习算法之前,需要指定的参数。模型参数:算法过程中学习的参数。 kNN算法没有模型参数kNN...

  • 数据结构与算法(一)

    前言 为什么前端需要学习数据结构与算法 首先,算法是一个很抽象并且广发的概念,我们生活中所做的很多事情都可以说是涉...

  • 记录五 认识算法

    我们为什么要学习算法? 正所谓:数据结构 + 算法 = 程序 。当我们了解了数据结构时,就必须要了解一下算法。因为...

  • 我们为什么需要学习

    科技发展日新月异,知识更新周期缩短,知识的迭代与重构从未像现在这么迅速。 联合国教科文组织曾经做过一项研究:18世...

  • 2019-02-21

    冒泡排序 冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放...

  • 第一章(1.2) 机器学习算法工程师技能树

    一、机器学习算法工程师需要掌握的技能 机器学习算法工程师需要掌握的技能包括 (1)基础数据结构与算法 树与相关算法...

  • 机器学习实战之线性回归

    之前我们学习的机器学习算法都是属于分类算法,也就是预测值是离散值。当预测值为连续值时,就需要使用回归算法。本文将介...

网友评论

本文标题:为什么我们需要学习算法?

本文链接:https://www.haomeiwen.com/subject/pjfudxtx.html