不会写算法的程序员的上限是什么?

如题所述

作为一个刚入行的程序员,我是不会写算法的,当初刚入行的时候,我也在一直纠结这个问题,算法是一个程序员必须要学的吗?后来我明白了,这没有什么必然性。我来说一下我的浅见,我觉得问一个程序员会不会写算法,就相当于问一个厨师懂不懂化学?明明算法就在那里了,作为一个程序员,你只要把它运用到程序当中去,这就可以了。就像一个厨师,他只要知道菜与菜之间的搭配就好了,为什么非要让他知道菜与菜的元素构成呢?


什么是算法

计算机的算法指的是按照一定规律的方式来构建计算机如何将输入转化为所要求的输出的过程,换种说法,算法是对计算机上执行的计算过程的具体描述。

算法的含义听起来有点高深莫测,其实说白了,算法就是一种固定的处理模式,是一种固定的公式。

由于算法本身的特点,比如明确性算法,他的每一个步骤都是明确的,对于结果的预期也是可以预见的。另外算法他是有限的,步骤可能有很多个,但是他不是无穷大的,它是有一个确定的一个约束条件,正是由于算法的这两个固定特征,所以这些东西都是死的,固定在那里,利用这种固定的模式,我们可以写出各种各样的不同的代码。我身边也有很多同事,算法写的也都是并不好,但是根据这种固定的模式,一样可以写出非常优质的代码。

总结:当然啦,我上面说算法只是一种固定的模式,并不是有意的去贬低算法的地位,相反我承认算法是一种很重要的东西,但是这也不意味着不会算法就写不出来优质的代码。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-20

作为一个程序员,我来分享一下我对该问题的看法。


首先你要知道什么是算法

算法是对解决方案的精确完整描述,是解决问题的一系列清晰的指令。该算法是一种以系统方式解决问题的策略机制。也就是说,所需的输出可以在限定的时间内通过某种规格的输入获得。如果一个算法有缺陷或不适合某个问题,该算法的实现就不能解决这个问题。不同的算法可以使用不同的时间、空间或效率来完成相同的任务。算法的优点和缺点可以用空间复杂度和时间复杂度来度量。

算法有以下五大特征

有穷性:算法的性能较差,意味着算法必须在有限步执行后才能终止。

确定性:算法的每一步都必须有一个明确的定义。

输入项:一个算法有0个或更多的输入来描述操作对象的初始条件。所谓的0输入意味着算法本身设置初始条件。

输出项:一个算法有一个或多个输出来反映输入数据的处理结果。没有输出的算法是没有意义的;

可行性:算法中执行的任何计算过程都可以分解为一个基本的和可执行的操作步骤,即每一个计算步骤都可以在有限的时间内完成。

不会写算法怎么办?

这些天,当处理Echarts图形Web数据,我想用关系数据库来反馈数据,然后写算法计算组、源、目标,具有依赖关系的数据。感觉是:算法很难写,研究慢或者应该写。但是我用暴力搜索解决这个问题,我相信有一个更好的算法来计算出我想要的数据。我认为算法的得分很高,也很低。基本上是围绕时间复杂度和空间复杂度来解决的!


希望我的回答能对你有所帮助。

第2个回答  2018-03-20

这个问题就是你最起码要会简单的算法,比较困难的肯定很多人都不会。我下面具体说一下。


首先

对于大多数程序员来说,在工作中不是必需的,但是你在找工作,特别是那些刚从学校毕业的学生,想要进入更大的公司(BAT),是必须学习算法的。此外,我认为在这个过程中提高自己的技术水平,喜欢读一些好的代码,还需要算法技巧,喜欢看到leveldb,复述,来源,必须知道跳表是什么,至少,Linux内核文件系统代码必须知道红黑树是什么?

其次

还有一个重要的影响:好的法律,无论是你思考的方式,还是你思考编程的方式。另一方面,画笔问题的网站也是第一个。如果你有一些算法基础,推荐Codeforces。对于信息类书籍,没有太多的要求,网上有大量的信息,在随机的谷歌中可以找到很多详细的信息。推荐算法不推荐,不推荐给初学者。这本书是一本关于上帝的书,但书的门槛更高,需要有一定的数学和算法基础来学习。

再次

如果你没有一定的基础或兴趣去学习算法,它是很难咀嚼的。改变知识列表的结构,划分班级,也许更清楚。它是基于我认为必须要掌握的,中等是最好的学习作为备用能力,先进可以理解,可以我有一个想法,为个人兴趣可以学习。

最后

上面这些就是我自己看法希望可以帮到你。


相似回答