博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么会出现“程序员千万不要学算法”这种言论?
阅读量:4186 次
发布时间:2019-05-26

本文共 1137 字,大约阅读时间需要 3 分钟。

“程序员必须会算法 ?”

程序员对算法通常怀有复杂情感,算法很重要是共识,但是否每个程序员都必须学算法是主要的分歧点。

很多人觉得像人工智能、数据搜索与挖掘这样高薪的工作才用得上算法,觉得算法深不可测。但是这些其实都不是具体的算法,而是一系列算法的集合。

对初学者来说,为避免片面或抽象地理解算法,可根据几个问题评估自己是否适合学习算法:

学习算法最重要的是什么?

在学习算法的过程中,一能解决问题,二对自己有用,是最大的推动力。而那些抽象的,与程序员日常工作关系不大的竞赛题,很难提起大多数人的学习兴趣。

最好能通过工作中应用的一些案例来切入,利用碎片化时间入门算法,提升技术竞争力。有了兴趣之后就可以尝试将算法尽可能的优化,并套用到一个完整的项目中。

“学习算法很难”,怎样降低难度?

从基础来讲,要学习算法,至少要非常熟练地掌握一种排序算法,各种线性表的插入、删除算法,树的遍历和插入、删除算法,图的遍历算法等。

多学习掌握一些常见问题的解决模式,比如穷举算法如何应用,动态规划算法如何应用。

最后要勤思考已经掌握并解决的算法,复盘为什么用这种方法解决,有没有其他方法,类似的问题怎么办,提高举一反三的能力。

编程和数据挖掘算法的区别与联系?

编程算法只是算法的一种表达形式,还可以用表格或流程图来表达算法。数据挖掘领域涉及的算法和其他领域算法只是问题域不同。

数据挖掘和机器学习常用的方法,比如决策树、贝叶斯学习、神经网络、遗传算法等,在其他领域也有应用。

在人工智能领域或各种专家系统中,决策树算法也是常用算法。各种算法在不同领域扮演不同角色,本质上没有区别,一通百通。

算法实现是否有通用思想?

人们设计各种算法的目的是解决现实问题,虽然各种算法的实现五花八门,但算法设计模式却有一些通用的方法或思想。

归纳起来,这些常见的算法设计方法有迭代法、穷举搜索法、分支界限法(剪枝法)、递推法、递归法、回溯法、分治法、贪婪法和动态规划法等。

如何开始算法学习第一步?

没有理论指导的实践是盲目的。

没有实践验证的理论是空洞的。

既然是入门算法,首先就要会玩,否则只会被算法“玩死”。

很多朋友啃完了《算法》、《算法导论》或其他算法书籍,对各种排序、搜索、遍历等常用算法了如指掌,但是遇到问题还是束手无策,都知道堆排序和最大最小堆,但是却不能有效地应用到实战。

我自己是一名大数据架构师,目前辞职在做线上教育大数据讲师,每天都会直播分享免费公开课,大家可以加群参加。以及我自己整理了一套最新的大数据学习系统教程,包括Hadoop,数据挖掘,数据分析。送给正在学习大数据的小伙伴!这里是大数据学习者聚集地,欢迎初学和进阶中的小伙伴!

加QQ群:584900118(招募中)

转载地址:http://gnioi.baihongyu.com/

你可能感兴趣的文章
Java中子类能否继承父类的私有属性和方法
查看>>
JVM内存模型详解
查看>>
(二)Git--工作区和暂存区、管理修改与撤销
查看>>
(七)Git--自定义Git
查看>>
(五)Git--分支管理
查看>>
(四)Git--远程仓库
查看>>
(六) Git--标签管理
查看>>
java中继承,子类是否继承父类的构造函数
查看>>
什么是Spring Cloud ?
查看>>
Qt下D-Bus的具体运用(软键盘输入法的实现)
查看>>
嵌入式环境的搭建(用于Arm开发板)
查看>>
Qt中文件读取的几种方式
查看>>
pyqt实现界面化编程
查看>>
qt写DLL文件并调用和出现的问题分析
查看>>
工厂模式(Factory)-设计模式(一)
查看>>
建造者模式(Builder)-设计模式(三)
查看>>
Qt 怎么给QWidget添加滚动条
查看>>
双十一冲刺业绩,完不成杀运营祭天?程序员:你们也有今天
查看>>
搜狗输入法到底算不算恶意挟持百度搜索流量?五个测试告诉你答案
查看>>
百度成为美国领先的人工智能联盟的第一个中国成员
查看>>