作为一名程序员,需要精通高深的算法吗?为什么?

连战101150241


大家好,我从事嵌入式软件开发十多年,欢迎关注和交流。



对于程序员来讲,未必需要精通算法。

程序员又分为前端程序员,后端程序员。也分为应用程序员,底层程序员,系统程序员。从专业职能上又分为算法程序员,非算法程序员。从职级上又分程序员,高级程序员,专家程序员。除了算法程序员之外,其他的一般都是了解,会用算法即可。



算法程序员又分为三个层次:会用,会改,会写。从了解,熟悉,到精通,是一个金字塔式的阶梯成长。不是所有岗位都要求精通,毕竟行业环境就是应用为主,以产品为最终目标,功能实现和用户体验

才是最重要的。如果你的产品就是算法,也就是卖算法的,那么平台化,移植化,接口化才是最重要的,一堆理论和伪代码,是无法落地实施的。

算法是软件的核心之一,但不是全部。就像一栋大楼,有基础,框架,砌砖,装修等等工种,都很重要,缺一不可。算法,听起来比较高深,实际上技术含量也很高,理论能力要求高,所以比较受人羡慕和追求。



产品要上线或量产,除了算法之外,每个工种与职位都很重要。谢谢大家。


宏思微想


首先,程序员需要有扎实的数学基础,这一点是毋庸置疑的,因为程序设计说到底就是数学问题。数学基础的作用体现在算法设计上,而算法设计则是程序设计的“核心”。

算法的应用最重要的因素是场景,最常见的算法是应用最广泛的算法。对于程序员来说,如何把算法与实际问题相结合是重点内容,所谓的高深算法往往应用场景十分有限,效果也未必会比常见算法好。

比如在机器学习领域,K近邻、决策树、朴素贝叶斯、支持向量机等算法被广泛使用,也被业界所广泛认可,是公认的重要算法。在特定的场景下,把这些算法与实际问题相结合并形成高效的解决方案,这是研发人员的重要任务。另外,基于常见算法的改进是一个被广泛采用的方案,这样的方案往往具有更高的稳定性。

算法的设计需要一个系统的过程,需要大量的数据验证才能形成最终的解决方案,所以虽然算法的研究经过了这么多年,但是被广泛采用的算法却并不多。在解决问题的实际方案中,往往经典的算法有更好的效果。所以,在程序员解决问题的过程中,并不会去追求算法的复杂性,而是追求解决问题的时效性。

作为一名研发级程序员,首先要做的是系统掌握经典算法的设计与实现,然后在实际解决问题的过程中再针对特定的使用场景进行算法的改进,这往往是一个系统的过程,也往往需要经过大量的实验。

我做机器学习的时间比较久,几乎每天都要跟各种算法打交道,我会陆续在头条上写一些算法方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。

如果有算法方面的问题,也可以咨询我,谢谢!


IT人刘俊明


作为一个做了十几年程序的老司机,现在做的时间越长越是对于精通两个字避之不及了,无论是精通编程语言还是精通算法之类的话,轻易都不会说出口,学的越多越觉得自己知识面的狭窄,算法决定程序员的上限,有很多程序员对于算法的意识比较淡薄,觉得没有特别厉害的算法也能把程序做的很不错,这个涉及到一个问题,不是所有的程序员岗位都是必须把算法搞得特别好,才能做程序员。其实很多程序员的岗位对于算法的要求不是那么强烈,算法主要在游戏或者大型数据计算上用的比较多。

现在多了很多专业的算法工程师职位,这种属于专业的算法,比如现在的人工智能岗位更加现实点的例子今日头条的推荐机制基本上沿用算法的方式,当然在平时的开发过程中涉及到性能方面的问题会有算法相关的操作,笔者曾经做过一个广告过滤功能,策略就是列举一堆不能访问的广告网址,然后采用一定的查找算法,毕竟在列表中的数据很少的情况下效率基本不用考虑,但在成百上千规则的时候,算法就显得特别重要了,算法在编码的过程中相对来讲用的不是很多,但在一些影响性能的地方没有算法,就会显得特别笨重。

说到算法在人工智能上用的最广泛,而且属于比较深层次的算法,数学基础不过关,基本上玩不转,很多公司招收人工智能的程序员,夸张一点算法的要求大于对编码的要求,编码能力时间长了可以弥补回来,但算法不是一时半会就能学会的,对于数学的线性代数,微积分基础知识用的特别频繁,很多人觉得人工智能就是简单学个python就可以玩了,只是入口函数的调用而已,真正涉及到性能的算法,大部分还是C/C++完成。

术业有专攻,不是每个程序员都对算法都会很熟悉,算法和程序设计逻辑有一定的相通之处,很多人所说的编程需要一定的数学基础就是指的算法相关的东西。

现在很多大公司在招聘程序员这关还会专门设计一些算法的考验,算法也是程序员基本功的一种了,不是所有的程序员算法能力都很强,但算法强的程序员能力一般不弱。目前国内市场算法工程师的待遇还是高于一般的技术工种,算法是特殊的技术工种,初学者入门写程序的过程中不要忽略其中算法的作用。

希望能够帮到。


大学生编程指南


作为一名程序员,我来回答你。

首先回答你,如果是一般岗位其实不用;如果是进BAT这种大公司,是需要会但是不用特别精通,如果是去国外加入Google、Facebook这种公司或者想拿高薪作为一名算法工程师拿就必须精通。下面我对这三种说法结合自身来分别说下。


一般岗位

对于小公司或者一般的公司来说,其实按照我的说法是不仅不需要精通,甚至可以说你完全无知也没关系。因为小公司或者一般的公司入门门槛低,不要说算法了,就算是面试官可能都不太懂技术,他主要面试的是人,也就是看人,觉得你合适就来,而且真正牛逼的人根本就不是靠小公司走招聘市场招来的,大牛一般都是靠挖来的。而且在一般的小公司都是专注去写业务逻辑代码,很多公司只需要你实现了这个功能就OK,对于代码编写规范或者时间空间复杂度等最优实现根本就不会去管你。所以你在这里面其实会不会算法都没有任何必要,会算法不会为你加分,不会算法也不会为你减分。


BAT大型公司

如果你是一个有追求的程序员,不甘心满足天天在小公司待着,而是想去BAT或者TMD这种大型公司或者超级独角兽公司的话,那算法是绝对绕不开的一个话题。就拿本人还有周围去面试过大公司的朋友来举例子。BAT面试全都要涉及到算法。腾讯我去面试过,在二面挂了,一面和二面其实都有算法题目,一面相对而言简单,二面的算法就有难度了。而我又一个朋友,拿到了腾讯和阿里的offer,他说腾讯五轮面试中有一轮面试时专门考察算法的,总共六道算法题目给了你两个小时时间作答。阿里的电话面试里面也有一轮视频面试专门考察算法,也是当着他们的面手写算法。光讲思路在腾讯行不通,本人曾面对腾讯的题目我跟面试官说我谈谈思路吧,面试官直接说不要谈什么思路,直接写出来给我看,对待算法完全没有任何商量的余地。至于头条公司那就更是如此了,因为头条就是一家以算法驱动的公司,对算法要求也比较高。但是即便如此,BAT对待算法还远达不到称之为精通的地步。

Google、Facebook,算法工程师

其实最凶残的公司是硅谷这些公司,例如Google和Facebook这类的公司。他们面试你问的全是算法,从来不会去问你专业知识,而且他们的算法问的超级难得地步。只要你通过了Google、Facebook公司的算法面试,那么你进入公司想做什么技术岗位都可以。比如,你一个从来没学过Android的人,只要通过了他们面试,进去做Android也完全没问题。因为在老外眼里,算法是非常难得东西,你连这么难的东西还能通过他们的面试,那么其他的编程知识进去给你时间学也能够马上学会。所以你想通过他们Google和Facebook的面试,那么算法确实要达到精通的地步,如果知识初级水平可能只有进去参观的份了。而不管时代如何变,算法工程师永远是市面上的稀缺物种,稀缺就代表值钱,所以学好编程不如学好算法,语言只是编程工具,算法才是编程之魂!


如果我的回答能工帮助到你,请随手点赞,谢谢!


晨雨细曲


先说答案:不是必须精通算法!!!!


不是所有的程序员都需要精通算法,比如前端开发的程序员对于算法来说就没有多大要求,但是一个程序员能走多远,最大的决定因素就是---算法!!!

特别是最近比较火热的 人工智能 区块链 大数据等对算法要求还是蛮高的。

因为人工智能 区块链 大数据等需要大量的算法计算。


所以从事这类工作的程序员基本都要求很高的学历就是因为需要很高数学功底。


分享到:


相關文章: