龙空技术网

算法知识:学习算法的意义-汉牛笔记

汉牛 140

前言:

此时你们对“算法的作用和意义”大体比较关心,姐妹们都需要分析一些“算法的作用和意义”的相关内容。那么小编同时在网上收集了一些对于“算法的作用和意义””的相关内容,希望同学们能喜欢,各位老铁们一起来学习一下吧!

什么是算法

广义的算法(Algorithm)是指某个或某类问题的解决方法。算法作为一个专业名词普遍存在于数学、物理、工程等领域。

本文讨论的是计算机领域的算法,特指用代码解决某类问题。

例如:

问题:对一个无序的数组进行排序。输入:一个无序的数组。输出:排序后的数组。算法:常见的排序算法有冒泡排序、插入排序、快速排序、归并排序、希尔排序、选择排序、等,还有几十种不常见的排序算法。学习算法的意义

从实用性的角度考虑,很多程序员从不学习算法,因为学了也用不上

这个想法好像挺有道理的。以排序算法为例,几乎没有人在项目上手写过排序代码,因为标准api库一定提供了排序方法,直接调用即可。

不用api而自己去写排序代码的程序员是自私的:api的排序代码是经过千锤百炼的,无论正确性还是性能都是无数项目检验过的,自己写的排序代码保不齐有隐藏的bug,给项目会带来额外的工作和压力。

那学习算法还有没有意义呢?我的回答是:有意义,学习算法是“CRUD工程师”的晋升修行课之一。

“CRUD工程师”是一个调侃的说法,指工作内容主要是写数据库增删改查功能的工程师。这种代码写得再多,个人的技术能力也不会有提高,妥妥的三十五岁职业危机。

CRUD=(添加Create、查询Retrieve、更新Update、删除Delete)

学习算法的意义在于:

训练编程思维,学会站在计算机的角度思考问题。

计算机是很蠢的,它只会执行指令,无论你编写的指令有多么愚蠢。编写算法的过程,既是思考的过程,也是跟计算机交流的过程,我们会遇到死循环、数组越界、内存溢出、没有出现预期结果等各种bug。盯着一行行代码的执行,观察代码是否按照期望在执行,debug能帮我们更深刻理解代码的执行过程。每一次帮我们跳出思维盲区的debug,都在帮我们提高编程能力。

编写优雅的代码。

很能想象不会分治算法、不会递归算法的程序员,在遇到特定问题时,编写的代码将是何等的粗劣。

提高抽象能力,解决实际问题。

算法是抽象的,实际问题是具体的,如何将实际问题分解为可以用一个或多个算法解决的抽象问题,需要程序员具备对算法的深刻理解。

珍惜资源,认识到计算机的资源是有限的。

在摩尔定律的作用下,计算机的计算能力在飞速增长,但是不要忽视了需要处理的数据增长速度更快,世界对算力的渴望永远是得不到完全满足的。越来越多的挑战需要靠卓越的算法来解决,使用有限的计算机资源,完成更多的计算任务,是程序员的神圣责任,也是身体力行参与“碳中和”行动。

建立基本的数学能力。

人类处理的信息(数字、字符、声音、图像),在计算机的底层都是数学问题。信息化的进程还远远没有结束,业界需要更多高数学素养的程序员。

认识自己的不足,保持谦逊。

在算法的学习过程中,面对某些问题可能完全没有思路,搜索到算法思路也不知道如何写代码,甚至看到算法的代码也读不懂。人类只有看到更大的世界才会认识到自己的渺小,越谦逊的程序员,一定是探索到了更大的世界。

劝退。

认真去学习基本算法,如果学不会,你需要认真考虑自己是否具备了从事程序员工作的基本能力,勉强从事程序员工作是很痛苦的。(很多程序员不会算法是因为没去学,不是学不会。)

标签: #算法的作用和意义 #开展算法设计的意义 #算法名次解释