0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

程序员为什么要学数学 又如何学数学

工程师人生 来源:wv 作者:简书网 2019-10-25 16:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在开篇,我详细讲了程序员为什么需要学数学。那么,怎样的学习方法才是行之有效的呢?我想你现在心里还没有一个固定的答案,而我不想一味地去讲我自己的一家之言,毕竟没有什么学习方法是最好的。

你能做的是要多看,去找适合自己的。而我能做的,就是尽量给你更多的参考,让你可以自己来选择。所以,我邀请了几位朋友,让他们来谈一谈,自己学习数学的一些心得体会,希望对你有所启发。

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

程序员应该怎么学习数学呢?我不建议你将大学的数学书拿出来啃一遍,一来耗费大量时间,二来和实际应用结合不起来,往往该看的忽略了,不该看的费了半天劲用不上,过一阵又忘了。

我们了解一个新技术有三个阶段,第一阶段是,怎么使用;第二阶段是,如何实现,原理是什么;第三阶段是,为什么这样实现。学数学和学一门新技术一样,也有这样三个阶段,先用起来,了解原理,然后了解为什么。

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

随着过去几年深度学习成为程序员界的显学,不少程序员开始回头复习微积分、概率论和线性代数这样的基础数学课,乃至开始学习最优化、博弈论这样的应用数学课。我自己则是因为从 2010 年一头扎入了计算广告的大坑之后,重新开始学习数学。

可以说,这次重新学习数学,为我自己推开了程序世界中另一扇门,使得我在埋头具体写代码之外,有机会重新从另一个角度,去认识和理解“程序”和“问题的解决方案”这两件事情。

我为什么要学点数学?

投入时间学习数学,于我来说主要是两个原因,一来,数学在工作中用得上;二来,学点数学很多时候是个有趣的事。

譬如说,过去几年火起来的深度学习,以及之前没那么火,但是实际上早早就在搜索、广告这些领域,应用的机器学习和推荐算法。这里面其实就是结合了微积分、线性代数、概率论之后的最优化问题。

事实上,大部分应用领域的核心解决方案,都是把应用领域的问题,形式化为一个个数学问题。在找到数学问题的“解法”之后,用写程序的方式翻译成实际应用的“算法”。而能够应用“数学”的方式来解决问题,是从一个只能套用现成方案的“码农”,向能够将新问题形式化、并找出创新解决方案的“研发工程师”迈出的第一步。

很多问题当你知道如何用数学来解决的时候,常常会有醍醐灌顶的感觉。譬如当我第一次搞明白,广告中的竞价问题,居然能够变成一个博弈论中“寻找上策均衡”的问题,并且能够通过简简单单的公式表示出来的时候,我是很有满足感的。

此外,一旦熟悉了机器学习中用到的数学知识,很多想要解决的系统问题,都能通过定义更好的数学优化目标,变成一个能够找到最优解的程序算法,最后通过写个程序,翻译成数学问题来解决,这个过程带给我巨大的身心愉悦。

我是如何学数学的?

数学整个领域很大,如果想要学点什么,我建议从工作相关的领域开始,先广度,再深度。

从工作相关的领域开始,是让自己一是能有实际用得上学到的知识的机会,二是日常工作中容易耳濡目染,相当于常常在复习。而先有广度,是让自己在心中有一个问题到解决方法的“地图”,遇到具体的问题能够对得上,容易获得正反馈;然后再有深度,具体去对一个特定的主题学习应用。

当开始深入学一个特定问题的时候,最好的方式是,追一门在线课程,譬如 Coursera、TEDx,或者在极客时间上找一门课程来学习。

这是因为,在线课程有明确的节奏,通常还会提供作业和测验。通过作业和测验,让自己对自己的学习有一个联系和反馈的过程。即使实践中没有足够的应用,过一段时间有些知识没有那么熟悉了,但是也容易建立自己很快可以“捡”回来的信心,降低“复习”的启动成本。跟随在线课程的节奏,可以有效避免“三天打渔两天晒网”的恶习,让学习有始有终。

最后,给你介绍一个有程序员特色的学习方法,针对学习的内容写一点程序。把正在学习的问题的解法,写一个算法实现出来。这是一个非常有效的练习方式。譬如学习线性代数,理解仿射,反复读书的效率对我来说,就不如找来 Coding The Matrix,通过写程序,让学习、理解变得更深入。

在数学的学习中,首要的问题是明确需求。作为非数学专业出身的“外行”,我们使用数学的目的不是顶天,而是立地;不是上下求索艰深的理论问题,而是将生活中的具体问题抽象化,进而加以解决。

因此,对于我们这些票友来说,学习数学的基础在于经验而非哲学,比较实际的思路是秉持功利主义的原则,用多少学多少。掌握基本的线性代数与矩阵论、概率论与数理统计知识足以应付日常的使用,盲目地好高骛远通常有害无益。理论化和公理化这些比较深邃的尝试固然让人着迷,但它们可能并没有肉眼可见的实用性,对于绝大部分计算机从业者恐怕过于阳春白雪。

其次,在学习时还要理解数学的本质。数学是工具而非问题,是手段而非目的。探索世界奥秘的学科是“格物穷理”的物理学,相形之下,数学更像是个任人打扮的小姑娘,它存在的意义就是通过合理的设计简化物理学的研究。

正因如此,在数学中存在着各种各样在现实中不可能出现的理想化模型(比如无穷小和极限的诞生),也存在着对同一个物理过程不同的建模方式(比如矩阵力学和波动力学)。充分理解数学的人造特质,可以在学习中少走很多无谓的弯路。

理解数学的工具属性就会自然而然地引出了数学学习中的另一个关键点,那就是工具设计的出发点,也就是所谓的数学思想与数学逻辑。

任何一个工具都不是平白无故地设计出来的,它必然要解决某个特定的问题,比如线性代数与矩阵论是对具体对象的抽象表示与运算,比如概率论和数理统计是对不确定性及其定型定量表示的建模。因此,在掌握每一种数学工具的微观技巧之前,理解它们的宏观目标是更加重要的。只有掌握了工具诞生的背景与目的,才有可能有效地使用它们。

在这里还要多说一句,数学绝不仅仅是算术,把主要精力放在计算上未免因小失大。在经典科幻《银河系漫游指南》中,超级计算机告诉人们,世界的终极答案是“42”——这更像是对数字主义者善意嘲讽的一个梗。但对算术的过度强调并不鲜见,在相当数量的现行数学教材中,讲解线性代数时开篇便给出行列式的计算方法,这种编排着实让人费解。

具体到数学每个子学科的学习方法上,相关的经验教训已然汗牛充栋,很多内容都无需在此赘言。但在我看来,学习时值得突出强调的一点是举一反三的能力。同一种工具及其背后的思想可以出现在不同的场景下,解决不同的问题,但是一旦深入到本质层面,就会发现它们实际上是相通的。如何透过现象看本质,将不同场景融会贯通,才是值得锻炼的高级能力。

同一个工具存在不同应用的例子不胜枚举:

凡此种种都说明,即使是不同的学科,使用的数学基础也有着千丝万缕的联系,将基本的数学概念和充分的想象力结合起来,触类旁通就变得轻而易举。

总结起来,我对数学学习的几点拙见是:把握数学的工具属性,学习具体方法时先溯因再求果,勤于思考解决相同问题的不同方法,与解决不同问题的相同方法之间的联系与区别。希望这几条建议能够在数学的学习中助你一臂之力。

好了,三位老师都分享完了自己的学习方法。其实他们有一个共同的观点,那就是数学要是“实用”的,这和我的想法如出一辙。

首先我们来看最常用的数据结构和编程语句,我想你对它们应该非常熟悉。在我眼里,这些基础的内容,同样富含了数学思维。例如,数组和链表就体现了迭代和递归的思想,判断语句就是使用了逻辑(布尔)代数。

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

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

整个专栏我基本上都是从数学的角度出发,逐步推进到这些知识在计算机中的应用。不过在绘制这张应用地图的时候,我特意反其道而行之,从计算机编程的角度出发,为你展示程序员应该如何看待编程中的数学知识。

我觉得在开始学习之前,这个地图会给你一个大体的认识,告诉你计算机领域常用的数学思想有哪些。这时,你也许会产生一些疑惑,同时你可以带着自己的思考和问题去逐篇学习。等你学完整个专栏之后,再回头来看看这个地图,应该会有更深的感触。我希望这种双向打通,能够进一步加强你的学习体验。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30786
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙领课堂——山东·泰安站圆满举办

    2025年12月3日下午,开源鸿蒙领课堂(以下简称"领课堂")——山东泰安站于山东科技大学泰安校区圆满举办。本次领课堂以聚焦操作系统及软件领域前沿,通过技术理论与实践经验分享,推动开源鸿蒙技术
    的头像 发表于 12-05 19:13 2324次阅读
    开源鸿蒙领<b class='flag-5'>学</b>课堂——山东·泰安站圆满举办

    不止于数学:实际部署是筑牢后量子安全的关键环节

    院(NIST)已选定CRYSTALS-Kyber、CRYSTALS-Dilithium等算法推进标准化,这些算法均建立在研究充分、数学层面稳健的基础上。然而,仅有强大的算法设计还远远不够,如果部署过程存在安全隐患,密码系统仍将面临风险——算法安全性并不等同于部署安全性。 纵观密码
    的头像 发表于 11-21 15:57 208次阅读
    不止于<b class='flag-5'>数学</b>:实际部署是筑牢后量子安全的关键环节

    单片机的误区

    怎么使用,根本也记不住寄存器的用途。 单片机完成一个具体的功能涉及到哪些寄存器,都会有例子给出,有些单片机,生产厂家也会给出相关的子程序,你只需要调用就可以。 等你把这些基础知识完以后,几乎可以完成
    发表于 11-14 07:46

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 426次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    开鸿智谷“以赛促、以赛选才”|1024程序员节暨开源鸿蒙构建大会圆满落幕!

    10月24日,由开鸿智谷联合主办的长沙1024程序员节暨开源鸿蒙构建大会在长沙圆满落幕。本次活动以“湘聚长沙,共赴热AI”为主题,通过技术分享与实战竞赛相结合的方式,着力培养“开源鸿蒙+AI”领域
    的头像 发表于 10-27 17:58 474次阅读
    开鸿智谷“以赛促<b class='flag-5'>学</b>、以赛选才”|1024<b class='flag-5'>程序员</b>节暨开源鸿蒙构建大会圆满落幕!

    计量之校准、溯源性和标准

    一、计量和计量工作者用于校准领域的通用名称是“计量”,根据国家计量技术规范JJF1001-2011《通用计量术语及定义》,计量定义为“实现单位统一、量值准确可靠的活动”。校准机构常称为计量实验室
    的头像 发表于 05-30 17:21 775次阅读
    计量<b class='flag-5'>学</b>之校准、溯源性和标准

    电机19

    的基本电磁关系、分析方法、运行性能、各种运行方式等内容,为进一步学习以上各有关专业的专业课程打下坚实的理论基础.本课程的先修课程有高等数学、物理、电路及磁路等. 电机与物理、电路及磁路等课程的性质有很多
    发表于 05-10 19:28

    经颅电刺激适应症系列之tDCS提高数学能力

    数学能力的核心依赖于大脑多个区域的协同工作。通过功能性磁共振成像(fMRI)和脑刺激技术的研究,科学家发现顶叶皮层(尤其是双侧顶内沟(IPS)和角回(AG))是数字处理的核心区域。例如,当人们进行
    的头像 发表于 04-30 18:10 965次阅读
    经颅电刺激适应症系列之tDCS提高<b class='flag-5'>数学</b>能力

    硬件好还是软件好?

    、计算机硬件等领域相关。 学习软件则侧重于编程、算法、数据结构等方面。软件工程师负责开发、测试和维护各种软件应用程序,如操作系统、办公软件、游戏等。如果你对编程、数学、逻辑或解决复杂问题感兴趣,那么
    发表于 04-07 15:27

    (专家著作,建议收藏)电机的数学研究方法

    本鲁企圖系统地説明电机主要的、最新的数学研究方法。本需的材料在足够的程度上已包括用于研究电机过渡狀态和稳定 狀态的独特范圓。这些材料应用已經广泛流行的最新数学分析作为它 的湛础。电机过渡狀态和稳定狀
    发表于 04-01 15:02

    数学专业转人工智能方向:考研/就业前景分析及大学四年学习路径全揭秘

    随着AI技术的不断进步,专业人才的需求也日益增长。数学作为AI的基石,为机器学习、深度学习、数据分析等提供了理论基础和工具,因此越来越多的数学专业学生开始考虑在人工智能领域发展。本文主要是为数学专业
    的头像 发表于 02-07 11:14 1699次阅读
    <b class='flag-5'>数学</b>专业转人工智能方向:考研/就业前景分析及大学四年学习路径全揭秘

    阿里云升级通义灵码AI程序员,全面上线

    近日,阿里云宣布其备受瞩目的通义灵码AI程序员已正式全面上线,为开发者带来更为强大和便捷的编程辅助工具。 此次上线的通义灵码AI程序员,在功能上实现了全面升级。现在,它支持VS Code
    的头像 发表于 01-09 11:16 956次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册