我初学编程,为啥知乎有人说算法无用论

算法是编程中很重要的一部分,但并不是全部。软件工程,如其名所言其核心是一种工程。编写开发一个大型软件的过程就像建造一座大型建筑一样,其设计方案结构功能美观等等是关键,而在实现这些的过程中,由计算机科学所开发出的大量成熟且公开的数据结构和算法基本上是可以拿来就用的。在这个过程中,关键点在于开发者懂得如何去正确的选择合适的数据结构和算法,而不是为了个人的兴趣随意的使用或者研究算法。换而言之,在正式的程序开发中,绝大多数场合熟悉使用已有的算法就相当于高级技工熟练使用各种工具一样,本质上并不需要知道这些工具内部的工作原理和如何制造的。不过这并不意味着只掌握现成的算法就可以了。在很多时候,程序会不得不要求开发者自行研发其未知的算法,或者虽然有现成的算法但是只是笼统的数学模型却缺少相应的伪代码和运行库等等。遇到这种情况你是选择等着别的大牛把东西做好了拿来用呢,还是自己也努力一下成为别人眼中的大牛呢?
■网友
大部分的人(99.999%)远远不到那个层面。工作中的确也接触不到。所以从这个角度讲花费太多时间和精力研究底层算法本身的确不会有任何回报。除非你是计算机科学的学生,并且今后主要是想走理论方面的研究。你可以通过学习研究前人的算法思想,来锻炼自己的思维,从而发表自己新的算法。(但是,相信我,到了这个层面,主要涉及的都是数学本身,跟“编程”本身一点关系都没有)工程师层面的编程,能理解并使用成熟算法就足够了。主要是一门工具,可以让自己解决自己的实际问题。举个不恰当的例子,如果题主你精通量子力学理论当然“水平很高”了,一套套的装逼术语也会让身边无脑的小妹妹们盲目崇拜你。但是,它对于你解决现实生活中的吃饭、洗澡问题不会有任何帮助。如果你天资极其聪明,每天花10分钟就能精通它,那当然很好了,多学点没有任何损失,哪怕今后只是用来在众人面前装逼泡妹妹。但是如果要花费极其多的时间和精力,那最好就不要去碰触了。投资回报率太低。所以就是要看题主自己学编程的目的了。如果是学生状态,而且今后有志于高尖端的科学研究,肯定是有好处的;如果只是想把编程作为一门工具,或者只是当个工程师干份工作,那学习了解原理,如何使用就可以了。你不会通过精通算法而致富的。的确,按你理解的标准,这个世界上99%的人都是码农。从事科学研究的科学家只是少数,各行各业都是如此。并没有多少程序员走上人生巅峰最终当上CEO迎娶白富美的。一将功成万骨枯。大家只看到成功的那几个人,并没有看到有多少底层的垫底。给个励志的,我之前打工时的老板,就是程序员出身,也一直都在写代码。从2005年开始创业。到现在快11年了,公司马上就要IPO了。身价大概10亿左右。现已移民美国。他也不是什么算法牛人,让他去参加计算机奥利匹克比赛肯定最后一名。按你的标准他当然也是码农了。但价值是在产品本身上,并不是什么“精通算法”上。哈哈,当然现在还有更多更多更多的码农在熬夜加班哪~~~~~~之前爆肝暴毙的新闻经常见诸报端啊~~~~~~~都是拿生命在拼搏~~~-------------------------------------------------------------最后借这个帖子说个不相关的,希望有缘的年轻人看到有一点帮助:如果自己对编程不是特别喜欢,从来就没有通过编程找到过快感,我奉劝最好不要走这条路了。如果你只是想有一份好的收入,这并不是一个最优的选择。初期看似工资比同龄人高,其实都是因为工作时间比其他行业长获得的。而且人到中年升不上去,或不能自己创业成功,慢慢事业反而会走下坡路。如果只是为了钱,你想想马云不是也不会编程么,有太多殊途同归的方法了,没必要走一条自己连快感都没有体会到的路,那真是一种折磨。相信我,如果你没有发自内心地喜欢编程,你肯定干不好这活儿,而且也会觉得异常辛苦。我看到太多人到了28、29岁时心里一慌转行的。这么瞎折腾不是反而耽误你赚钱实现财务自由的正途么?


推荐阅读