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

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

3天内不再提示

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

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

扫码添加小助手

加入工程师交流群

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

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

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

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

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

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

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

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

我为什么要学点数学?

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

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

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

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

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

我是如何学数学的?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关注

    4

    文章

    956

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    解锁 5 位女性先驱的密码传奇

    当我们走进密码的历史森林,就会发现现代信息安全的底层逻辑,从算法的自动化执行到零知识证明的数学美感,源自一群极具天赋且意志坚韧的女性。她们中,有人在机械齿轮的咬合声中预见万物皆可计算的未来;有人
    的头像 发表于 03-08 10:08 462次阅读
    解锁 5 位女性先驱的密码<b class='flag-5'>学</b>传奇

    数学工程计算+失效分析,双轮驱动电路可靠性

    数学计算驱动可靠设计在电子产品研发过程中,你是否经常遇到以下问题:产品在测试中偶发失效,却找不到根本原因?器件选型凭经验、靠感觉,缺乏量化依据?电路设计完成后,总是经历多轮“试错—改板—测试
    的头像 发表于 02-27 17:44 453次阅读
    <b class='flag-5'>数学</b>工程计算+失效分析,双轮驱动电路可靠性

    单片机编程对数学英语有要求吗

    1. 单片机是什么? 答:单片机就是一个微型CPU,把程序烧录芯片里面,通过控制不同的外围电路实现不同产品的功能。 2. 单片机编程对数学英语有要求吗? 答:数学会基本的加减乘除就
    发表于 02-02 06:24

    避繁就简!商汤日日新大模型灵性巧解数学难题,获赞“机器的审美”

    大模型也能拥有某种数学家“直觉”! 在近日举办的第十届世界华人数学家大会“人工智能与数学”夜话活动上,由菲尔兹奖得主丘成桐院士引领,集结国内四大顶尖模型团队,上海人工智能实验室、商汤科技、阿里通义
    的头像 发表于 01-12 11:41 476次阅读
    避繁就简!商汤日日新大模型灵性巧解<b class='flag-5'>数学</b>难题,获赞“机器的审美”

    巨霖科技孙家鑫亮相ICCM 2025世界华人数学家大会

    2026年1月3日,以“数学新前沿:改造科学与人类的推动力”为主题的第十届世界华人数学家大会在沪开幕。上海市委书记陈吉宁出席开幕式并致辞,上海市委副书记、市长龚正出席。
    的头像 发表于 01-07 16:35 610次阅读
    巨霖科技孙家鑫亮相ICCM 2025世界华人<b class='flag-5'>数学</b>家大会

    大理的AI野心藏不住了——风花雪月中千名程序员探讨人工智能

    2025 年12月4日至6日第二届CCF程序员大会暨大理人工智能与应用国际开发者大会在大理圆满落幕。
    的头像 发表于 12-24 17:45 961次阅读
    大理的AI野心藏不住了——风花雪月中千名<b class='flag-5'>程序员</b>探讨人工智能

    程序员最常见谎言

    了。 28我已经测试过了,这个功能没问题,可以上线了。 29别担心,这个问题很快就能解决。 30代码快写完了,已经完成 90% 了 。 希望大家对程序员多一些容忍以及谅解! 各位程序员你们都被我说中了哪些?说说你们的观点
    发表于 12-10 08:24

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

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

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

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

    单片机的误区

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

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

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

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

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

    ESP32大家都是怎么的啊?

    刚开始接触 ESP32 的时候,好多人估计都跟我一样,盯着这块小芯片发愁 —— 这玩意儿到底该咋啊?其实回头看看,大家走的路都差不多,无非就是从 “想做个啥” 开始,跌跌撞撞踩坑,慢慢摸着门道。
    的头像 发表于 06-12 17:58 1639次阅读
    ESP32大家都是怎么<b class='flag-5'>学</b>的啊?

    跟老齐Python:从入门到精通

    础的学习者介绍一门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插了很多貌似与Python 编程无关,但与学习者未来程序员职业生涯有关的内容。 获取完整文档资料可下载附件哦!!!! 如果内容有帮助可以关注、点赞、评论支持一下哦~
    发表于 06-03 16:10

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

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