程序员的数学修养

本文探讨了程序员为何要学习数学,强调数学、计算与编程的密切关系,指出数学在概念和证明上的创新价值。介绍了数学家解决问题的步骤,并提供学习数学的方法,包括阅读和写作的技巧。此外,还建议程序员深入学习数理逻辑、欧氏几何、抽象代数、数论、微积分、概率论等,提供了一系列的科普和深入学习资料。
摘要由CSDN通过智能技术生成

1.什么是数学

按照维基百科上的解释,数学没有准确的概念,它可以笼统地分为纯数学和应用数学。纯数学研究数量(Quantity)、结构(Structure)、空间(Space)、变化(Change),使用各种符号找寻规律,将各种猜想形式化,并证明其真伪。数学的基础包括了:数理逻辑、集合论、范畴论、计算理论。数量主要就是数字系统的建立,结构涉及组合、数论、图论、群论、代数等,空间涉及几何、差分几何、拓扑等,变化则是微积分、差分等式、分析。而应用数学则是研究数学问题的解答,于是也可以看作是计算数学,涉及了概率论、统计、密码学、优化、数学经济/物理/化学/生物等。


2.为何要学数学

2.1 你不用知道任何东西

从编程的角度,数学中很多东西的确是没有必要吃苦头去学。在翻译的文章《程序员如何学数学》中,作者戏谑到:“事实上,我觉得你不需要知道任何事情,只要你能保持活着就行了”。个人觉得本文提到的内容是每个程序员应该有的职业素养、科学素养。不管你是在职场做写着你以为普通的代码,还是在学校里做学问,相信用心练习领悟都会受益终身。本文总结了程序员应该关心的数学主要分支和基本的学习方法,但也只能称作数学和数学学习的相关“知识”,真正的修行正如老话所说:“师父领进门,修行在个人”。这些好的书籍、资料顶多只能将你带进数学殿堂的大门内,正式的修行在此才真正开始。

2.2 数学、计算、编程

我们经常说编程的本质是计算,即那本经典的算法书的标题:程序=数据结构+算法。那么数学与计算又是什么关系呢?最近写过一篇《X的奇幻之旅》,是一篇同名书《The Joy of X》的读书笔记。这本书中有一章与全书同名。本以为是全书最核心的一章,结果却什么没学到。

最近一直在思考计算在数学中的位置,突然犹如醍醐灌顶。代数乃至数学中最重要的两个活动:一是定义概念后用等式表示属性(变量)间关系,从而深入了解表示这个概念的数学对象;二是有了概念之后,为其设计计算过程,通常用于解决一个问题。两者都需要证明,前者证明等式所表达关系的正确性,而后者则证明计算过程的正确性。计算过程可以使用前者找到的规律来简化。也许作者并不完全表达相同的意思,但确实给予了灵感。

举个例子,我们提出一个关于数论的概念,比如质数,什么样的数是质数。然后我们研究它、找规律,可能得到一些等式,也比如得到一些结论,比如偶数只有2是质数,并加以证明。最后我们设计一个计算过程,比如计算得到一个区间内的所有质数,于是我们设计一个算法和数据结构。并利用前面找到的规律优化,最后证明其正确性。数学、计算、编程,三者和谐而统一

2.3 天才闪耀时

在上面这一套过程中,计算过程实现后的反复使用,甚至部分推导也许可以用计算机来辅助。但找规律、下结论、设计计算过程、解决问题都是创造性的工作,否则早已被计算机所代替。然而,最展现人类思想伟大的可能要属概念和证明。为什么是这两个呢?

有人说数学是其他学科的基础和指导࿰

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值