一个基础学科,为啥这么硬核?

2018 年 12 月 13 日 InfoQ

“程序员不需要学数学,因为工作中根本用不到。有那功夫,还不如认真把设计模式、计算机网络、操作系统等硬知识学好。” 这是很多人的观点,是的,作为程序员,你不需要任何数学知识,也能写代码。

但是,编程的世界不止条件和循环语句,程序员的人生应该是创造的舞台,只要想在这个领域持续深耕,学好数学就是充分必要条件,会决定一个程序员未来的发展潜力。

所以,很多大公司在招人时,都会优先考虑数学专业的毕业生,因为数学基础好,编程会更容易上手。在大数据和智能化的时代,学好数学更是门槛本身。


△扫描二维码试读或订阅专栏

数学的正确打开方式,他们说…
Steve Yegge | 资深程序员
  1. 学习数学的正确方法是广度优先,而非深度优先。你要了解的是整个数学领域每个概念的名字,并知道它们要解决什么问题。

  2. 把数学当成文科来学,先不用重点看那些算法和证明,只需要了解数学概念的名字、作用、大致步骤、发明人、发明时间、局限等。

  3. 数学符号是关闭你通往另一个世界的符咒,如果你看到一堆自己不懂的数学符号,就把它的实现功能简单地当成一个原子操作好了,不要深究太多。

徐文浩 | bothub.ai 创始人
  1. 工作相关的领域开始了解数学,可以随学随用,在工作中累计实操经验,更容易获得正反馈。

  2. 把正在学习的数学问题的解法,写一个算法程序实现出来,是非常有效的练习方式。

  3. 你可以选择追一门数学的在线课程,跟着老师的节奏系统理解数学,对学习有一个联系和反馈的过程,做到有始有终。

刘超 | 《趣谈网络协议》专栏作者

程序员是否需要学好数学?我在学数学分析、概率论和线性代数的时候,也没想过数学和写程序有啥关系,但随着研究的开源软件越来越多,我发现很多技术深入下去,本质就是数学。

程序员应该怎么学数学呢?我不建议你将大学的相关书籍拿出来啃一遍,耗费大量时间不说,关键是跟实际应用无法结合,结果往往是:该看的忽略了,不该看的费了半天劲还用不上,等过一阵字就又忘了。

我们在了解新技术时,通常会分成三个阶段,第一阶段是,怎么使用;第二阶段是,如何实现,原理是什么;第三阶段是,为什么这样实现。学数学也是这样,也有这样三个阶段,先用起来,了解原理,再知道为什么这么做。

用一句话总结,我们不能为了数学而学数学,要和具体的应用结合在一起。


△可保存后分享给朋友或转发至朋友圈

综合三位老师的观点,其中的共性就是:学习数学,“实用”优先。因此,我绘制了一张“程序员的数学应用地图”,包含四个部分:数据结构、编程语句、通用算法和机器学习算法。

数据结构和编程语句,你肯定非常熟悉,这些基础的内容涵盖的数学思维毋庸置疑。例如,数组和链表就体现了迭代和递归的思想,判断语句使用了逻辑(布尔)代数。

架构在数据结构和编程语言之上的算法(为了将这些算法和机器学习的算法区分开,我称其为通用算法),除了迭代和递归,也体现了排列、组合和动态规划等思想。

对于机器学习的算法,我们更需要理解概率统计和线性代数的核心思想,包括什么是概率、贝叶斯定理、数据的统计分布、向量、矩阵、线性方程等。

在此,向大家推荐我在极客时间的专栏「程序员的数学基础课」。

在专栏中,我会从数学的角度出发,逐步推进到这些知识在计算机中的应用。而值得一提的是,在绘制这张应用地图时,我特意反其道而行,从计算机编程的角度出发,为你展示程序员应该如何看待编程中的数学知识,告诉你计算机领域常用的数学思想有哪些。

我有充足的信心,通过学习这个专栏,你会加深对数学的理解,在分析问题时能快、准、稳地找到解决方案。今后在面对系统框架设计、性能优化、准确率提升等难题时,你会从更高更广的角度出发思考问题,而不只是以“熟练工”的视角增删改查。


△扫描二维码试读或订阅专栏

《程序员的数学基础课》

作者黄申,LinkedIn 资深数据科学家,微软学者,IBM ExtremeBlue 天才计划成员,长期专注于大数据相关的搜索、推荐、自然语言处理、广告以及用户精准化领域。

曾在微软亚洲研究院、IBM 美国研究院、eBay 中国、1 号店和大润发飞牛网担任要职,带队完成了若干公司级的战略项目。同时担任《计算机工程》特邀审稿专家,著有 20 多篇国际论文并拥有 10 多项国际专利。

点击“阅读原文”试读或订阅专栏

登录查看更多
0

相关内容

数学是关于数量、结构、变化等主题的探索。
还在修改博士论文?这份《博士论文写作技巧》为你指南
【纽约大学】最新《离散数学》笔记,451页pdf
专知会员服务
128+阅读 · 2020年5月26日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
斯坦福2020硬课《分布式算法与优化》
专知会员服务
118+阅读 · 2020年5月6日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
167+阅读 · 2020年3月27日
【机器学习课程】机器学习中的常识性问题
专知会员服务
74+阅读 · 2019年12月2日
学术派整理,一份从基础到实战的 NLP 学习清单
人工智能头条
7+阅读 · 2019年2月13日
做机器学习和AI必备的42个数学知识点
AI前线
9+阅读 · 2018年12月6日
各编程领域最好的入门书籍
程序猿
28+阅读 · 2018年7月29日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
【干货】​深度学习中的线性代数
专知
21+阅读 · 2018年3月30日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
零基础小白,如何入门计算机视觉?
计算机视觉life
9+阅读 · 2018年3月8日
如何用 3 个月零基础入门机器学习?
AI研习社
6+阅读 · 2017年9月27日
Arxiv
13+阅读 · 2020年4月12日
Learning Implicit Fields for Generative Shape Modeling
Arxiv
10+阅读 · 2018年12月6日
Image Captioning based on Deep Reinforcement Learning
Arxiv
5+阅读 · 2018年6月5日
Arxiv
3+阅读 · 2018年4月9日
VIP会员
相关VIP内容
还在修改博士论文?这份《博士论文写作技巧》为你指南
【纽约大学】最新《离散数学》笔记,451页pdf
专知会员服务
128+阅读 · 2020年5月26日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
斯坦福2020硬课《分布式算法与优化》
专知会员服务
118+阅读 · 2020年5月6日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
167+阅读 · 2020年3月27日
【机器学习课程】机器学习中的常识性问题
专知会员服务
74+阅读 · 2019年12月2日
相关资讯
学术派整理,一份从基础到实战的 NLP 学习清单
人工智能头条
7+阅读 · 2019年2月13日
做机器学习和AI必备的42个数学知识点
AI前线
9+阅读 · 2018年12月6日
各编程领域最好的入门书籍
程序猿
28+阅读 · 2018年7月29日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
【干货】​深度学习中的线性代数
专知
21+阅读 · 2018年3月30日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
零基础小白,如何入门计算机视觉?
计算机视觉life
9+阅读 · 2018年3月8日
如何用 3 个月零基础入门机器学习?
AI研习社
6+阅读 · 2017年9月27日
Top
微信扫码咨询专知VIP会员