程序员需要学习太多数学知识吗

Posted 人邮异步社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员需要学习太多数学知识吗相关的知识,希望对你有一定的参考价值。

如果你想当一个顶级程序员,梦想着改变世界,那么数学对你来说就很重要了。”

数学对我们每一个程序员来说,都是最熟悉的陌生人。你从小就开始学习数学,那些熟悉的数学定理和公式陪伴你走过好多年。但是,自从当了程序员,你可能早就将数学抛在了脑后。毕竟,作为一个基础学科,数学肯定没有操作系统、数据结构、计算机网络这样的课程看起来“实用”。上大学的时候,我非常喜欢编程,不喜欢待在教室里听数学老师讲那些枯燥的数学理论和定理。再到后来,我读了硕士和博士,开始接触更多的算法和机器学习,猛然间才发现机器学习表面上是“写程序”,剥去外表,本质上是在研究数学。从那会儿开始,我对数学的认知才逐步客观和理性起来。从多年的工作经历来看,数学学得好不好将会直接决定一个程序员有没有发展潜力。往大了说,数学是一种思维模式,考验的是一个人归纳、总结和抽象的能力。将这个能力放到程序员的世界里,其实就是解决问题的能力。往小了说,不管是数据结构与算法还是程序设计,其实底层很多原理或者思路都源自数学,所以很多大公司在招人时也会优先考虑数学专业的毕业生,因为这些人的数学基础很好,学起编程来也容易上手。

如果编程语言是血肉,那么数学的思想和知识就是灵魂。它可以帮助你选择合适的数据结构和算法,提升系统效率,并且赋予机器智慧。在大数据和智能化的时代更是如此。举个例子,我们在小学就学过的余数,其实在编程的世界里也有很多应用。你经常用到的分页功能,根据记录的总条数和每页展示的条数来计算整体的页数,这里面就有余数的思想。再难一点,奇偶校验、循环冗余检验、散列函数、密码学等都有余数相关的知识。遇到这些问题的时候,你能说你不懂余数吗?我想你肯定懂,只是很多时候没有想到可以用余数的思想来解决相关问题罢了。

从数学的知识体系出发,一直到具体的编程应用,这整个过程是一个很长的链条。而要把编程领域中的数学讲清楚,我们至少要经历“数学概念-数学模型-数据结构-基础算法/机器学习算法-编码实现”这几个关键步骤。具体来说,首先要充分理解数学概念;然后是构建数学模型,在这些基础之上,我们才能把它们转换成编程领域中对应的数据结构和算法;最终才能付诸于编码实现。

程序员需要掌握的数学知识

基础思想(核心的数学知识)

  • 二进制、余数和布尔代数
  • 迭代、数学归纳和递归
  • 排列、组合和动态规划
  • 树和图

概率统计

  • 概率和统计基础
  • 朴素贝叶斯分类
  • 马尔可夫过程
  • 信息熵

线性代数

  • 线性代数基础
  • 文本处理中的向量空间模型
  • 对象间关系的描述——矩阵
  • 矩阵的特征
  • 回归分析

关于程序员学数学的书单

数学之美 第三版

 

  • 浪潮之巅、文明之光、硅谷之谜、大学之路、见识作者吴军博士作品
  • 源自谷歌黑板报,根植谷歌方法论,新增区块链、量子通信、人工智能知识,文津图书奖获奖书

在纸本书的创作中,作者几乎把所有文章都重写了一遍,为的是把高深的数学原理讲得更加通俗易懂,让非专业读者也能领略数学的魅力。读者通过具体的例子学到的是思考问题的方式 —— 如何化繁为简,如何用数学去解决工程问题,如何跳出固有思维不断去思考创新。

本书第一版荣获国家图书馆第八届文津图书奖。第二版增加了针对大数据和机器学习的内容。第三版增加了三章新内容,分别介绍当今非常热门的三个主题:区块链的数学基础,量子通信的原理,以及人工智能的数学极限。

本书还用了大量篇幅介绍各个领域的典故,是文科生也可以看懂的科普读物。成为一个领域的大师有其偶然性,但更有其必然性。其必然性就是大师们的思维方法。通过本书,可以了解他们的平凡与卓越,理解他们取得成功的原因,感受那些真正懂得数学之美的人们所拥有的美好人生。

程序员的数学基础课 从理论到Python实践

 

本书紧紧围绕计算机领域,从程序员的需求出发,精心挑选了程序员真正用得上的数学知识,通过生动的案例来解读知识中的难点,使程序员更容易对实际问题进行数学建模,进而构建出更优化的算法和代码。

本书共分为三大模块:“基础思想”篇梳理编程中常用的数学概念和思想,既由浅入深地精讲数据结构与数学中基础、核心的数学知识,又阐明数学对编程和算法的真正意义;“概率统计”篇以概率统计中核心的贝叶斯公式为基点,向上讲解随机变量、概率分布等基础概念,向下讲解朴素贝叶斯,并分析其在生活和编程中的实际应用,使读者真正理解概率统计的本质,跨越概念和应用之间的鸿沟;“线性代数”篇从线性代数中的核心概念向量、矩阵、线性方程入手,逐步深入分析这些概念是如何与计算机融会贯通以解决实际问题的。本书除了阐述理论知识,还通过Python语言分享通过大量实践积累下来的宝贵经验和编码,使读者能够真正学以致用。

本书内容从概念到应用,再到本质,层层深入,不但注重培养读者的数学思维,而且努力使读者的编程技术上一个台阶,非常适合希望有一定数据结构和编程经验,想从本质上提升编程质量的程序员阅读和学习。

机器学习的数学

 

  • 人工智能深度学习领域经典教程,AI程序员的数学参考书
  • 透彻理解机器学习算法,从数学层面搞懂核心算法原理的逻辑
  • python程序讲解,众多专家学者力荐

本书的目标是帮助读者全面、系统地学习机器学习所必须的数学知识。全书由8章组成,力求精准、最小地覆盖机器学习的数学知识。包括微积分,线性代数与矩阵论,**化方法,概率论,信息论,随机过程,以及图论。本书从机器学习的角度讲授这些数学知识,对它们在该领域的应用举例说明,使读者对某些抽象的数学知识和理论的实际应用有直观、具体的认识。 本书内容紧凑,结构清晰,深入浅出,讲解详细。可用作计算机、人工智能、电子工程、自动化、数学等相关专业的教材与教学参考书。对人工智能领域的工程技术人员与产品研发人员,本书也有很强的参考价值。对于广大数学与应用的数学爱好者,本书亦为适合自学的读本。

以上是关于程序员需要学习太多数学知识吗的主要内容,如果未能解决你的问题,请参考以下文章

编程需要知道多少数学知识?

机器学习中的重点数学知识

网页游戏开发需要学习啥知识

做编程开发到底需不需要学好数学?

从勾股定理到余弦相似度-程序员的数学基础

算法那些事儿之堆排序