“如果,你只想当个普通程序员,数学对你来说并不重要;但你要想做顶级程序员,数学对你来说就相当重要了。”这是几年前我在硅谷技术交流 Meetup 上听到的一个分享,而在听到这番话之前,我很少思考数学和计算机编程之间的关系。
这二者之间的关系,到底有多紧密呢?我们可以从 Google 的一道工程师面试题谈起。
2004 年 7 月,硅谷的交通动脉 101 公路上突然出现了一块巨大的广告牌,上面是一道数学题: {e 的连续数字中最先出现的 10 位质数}.com。如果你不知道 e 是什么,现在可以重新了解一下,e 是数学常数,是自然对数的底数,无限不循环小数。这道题的意思就是找到 e 中最先出现的 10 位质数,得出一个网址。
进入这个网址,你会看到 Google 为你出的第二道数学题。成功解锁这两步,Google 会告诉你,我们或许是“志同道合”的人,你可以将简历发到这个邮箱,我们一起来做点改变世界的事情。
可以看出,Google 是一个对工程师的数学素养非常重视的公司。
其实,数学对大部分程序员来说,都是“最熟悉的陌生人”。我们从小就开始学习数学,它还是中高考和研究生考试的必考科目,这么说来,那些烂熟于心的数学定理和公式,陪伴我们至少 10 年了。
但很多程序员开始编程后,就会把数学抛之脑后。毕竟,作为一个基础学科,它可没有操作系统、数据结构和计算机网络这类课程看起来“实用”。大学时,为了缩在图书馆看编程书,我还翘过数学课,那会儿我偏执地认为,数学这东西不过是“应试教育”的一部分,而我只喜欢计算机这种实操类课程。
硕士期间,我开始接触机器学习,猛然发现:机器学习表面上是“写程序”,但剥去外壳,本质上还是研究数学。从那时起,我对数学的认知逐渐客观和理性了。
参加工作后,我写了这么多年代码,其中一个重要体会就是:对数学的掌握程度,会直接决定一个程序员的发展潜力。往大了说,数学是一种思维模式,考验的是归纳、总结和抽象的能力,放在程序员的世界中,就是 解决问题的能力。
往小了说,无论是 数据结构与算法,还是程序设计,其底层原理和思路都源自数学。数学不行,理解幂等原理都比别人吃力。所以,很多大公司在招人时,都会 优先考虑数学专业的毕业生。因为,数学基础好,编程就更容易上手,越往高处走,数学的功力在工作中就会越发明显地显现。
所以我经常说,如果编程语言是血肉,数学的思想和知识就是灵魂。在大数据和智能化的时代,学好数学更是门槛本身。没有数学基础,机器学习、深度学习中涉及的数学公式你都看不懂,更不要说调教模型和训练算法了。
所以,我在极客时间开设了一门《程序员的数学基础课》,想和你重点聊聊数学那些事儿。我知道,数学知识博大精深,所以在撰写专栏之初,我就划分好了内容的边界,用一句话形容——“只做程序员需要的数学知识”。
△扫描二维码试读或订阅专栏
我是黄申,LinkedIn 资深数据科学家,微软学者,IBM ExtremeBlue 天才计划成员。博士毕业于上海交通大学计算机科学与工程专业,师从俞勇教授。目前在 LinkedIn 从事数据科学的工作,主要负责全球领英的搜索引擎优化,算法和数据架构的搭建。
我长期专注于大数据相关的搜索、推荐、自然语言处理、广告以及用户精准化领域。曾在微软亚洲研究院、IBM 美国研究院、eBay 中国、1 号店和大润发飞牛网担任要职,带队完成了若干公司级的战略项目。同时担任《计算机工程》特邀审稿专家,著有 20 多篇国际论文并拥有 10 多项国际专利。
我有充足的信心,通过学习这个专栏,你会加深对数学的理解,在分析问题时能追本溯源,快、准、稳地找到解决方案。这样,今后在面对系统框架设计、性能优化、准确率提升等难题时,你就会从更高更广的角度出发思考问题,而不只是以“熟练工”的视角增删改查。
福利一:限时优惠¥68,原价¥99,12 月 15 日恢复原价。
福利二:邀请好友,通过你的分享海报订阅,你可获得 ¥24 现金返现。(提取方式:极客时间 App - 我的 - 分享有赏)
扫描海报二维码,立即试读或订阅专栏。
想成为优秀的程序员吗?点击 「阅读原文」 学起来吧!