首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员的灵魂!算法

写作有金线,金线之上,作家的文字才可能会被流传下来。编程也是一样,卓越的程序员和普通程序员之间也有一条看不见的金线,金线之上的程序员,才能做出更具规模,更有创新,更优性能,更智能的软件和服务。这条金线是什么呢?数据结构和算法。

每个程序员都知道数据结构和算法的重要性,但是真正能够扎实掌握数据结构/算法和灵活应用的工程师可谓寥寥无几,为啥?因为难学,因为易学难精,因为用不上,因为我们懒,因为《算法导论》和高德纳老爷子的《计算机程序设计艺术之基本算法》太厚了,每次都刚刚看完前言就放下了。但是,现在不比从前了,以前程序员不写算法,现在不会算法的程序员不叫高阶程序员。

如何帮助程序员跨越这道金线呢?并不是所有的算法都需要掌握。

数组和树

1.如何入门算法?需要学习哪些基础知识。

入门算法其实很简单,拿生活中的很多现实问题来解决就可以了。比如商场打折问题(是打折划算还是满减划算),百钱买百鸡、猴子分桃、鸡兔同笼等有趣的问题。如果这些问题能够结合具体的编程语言实现就更好了。入门算法阶段主要是锻炼逻辑思维能力和思考问题、分析问题、解决问题的能力,不一定要去先把计算机专业课程《数据结构》上一遍或者枯燥的数学知识学习一遍,再去学算法。算法其实离我们并不遥远,它就在我们每个人的身边。

2.如何成为一名优秀算法工程师?需要系统掌握哪些技能?

要成为优秀的算法工程师(注意这里是优秀),首先要熟练的掌握数学知识,比如大学里面学习高等数学、线性代数、概率统计、离散数学、组合数学、矩阵论等课程,就为我们成为算法工程师打下了坚实的数学基础。其次要学好《数据结构》这门课程,比如里面的链表、矩阵、树、图等各种典型的数据结构以及常用的查找和排序算法(比如二分查找、冒泡排序、快速排序、希尔排序等,并熟悉各自算法的时间复杂度)。对于通用型的算法思想,比如递归、递推、贪心、分治、动态规划等算法策略要熟记于心并能灵活运用。总之成为一名优秀的算法工程师,离不开深厚的数学功底。要能灵活的使用上述各种知识,解决实际生活中的问题。有个简单的途径就是参加ACM竞赛。通过简化生活中的实际问题,使用算法去实现,这种成就感非常强。 此外就是熟练掌握各种开发工具和开源框架(比如Caffe、TensorFlow等),能够使用编程语言(比如python或c++等)实现和验证自己的算法。

3.算法工程师有哪些分类?不同的算法工程师有什么特殊要求?

算法工程师有哪些分类,这个可以根据具体的应用领域来划分。 比如: 1)图像识别 2)语音识别 3)自然语言处理 4)推荐系统 5)...

4.算法工程师的前景如何,程序员要不要精通算法?

计算机的终极应用是人工智能,人工智能的核心是机器学习,而机器学习的核心就是算法。而且随着IT信息技术的快速发展,算法不会像那些具体的IT技术一样迅速的过时(算法思想永恒),所以算法工程师的前景非常好。对于应用型程序员来说,它关注的是怎么利用各种工具、技术实现功能,快速的完成产品的开发,核心的算法并不需要去了解(比如图像识别直接调用某厂商、公司的封装好的SDK就可以了)。但要成为高级程序员如果懂点算法、知道实现的原理,就有价值的多。所以我们程序员在人工智能时代,并不一定要求精通算法,但一定要懂点算法,这样才能够跟上这个时代的步伐,不被迅速淘汰掉。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190907A0DJ3000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券