程序员需要掌握的十个数学概念
10 Mathematical Concepts Programmers Should Master
随着对程序员的需求增加,供应自然会与每天进入该行业的人口增多相遇。然而,这是一个竞争激烈的行业。为了不断提高自己的技能和增加薪水 – 您需要证明自己是一个熟练的程序员。您可以通过学习人们通常不知道的事情来做到这一点。
许多人以认为在编程行业中不需要知道数学为前提进入编程行业。虽然这在某种程度上是正确的,但能够理解编程背后的逻辑数学概念将使您成为一个更熟练的程序员。
是什么原因呢?通过理解您所做的和正在发生的事情。就是这样。
所以让我们直接开始吧。程序员的前10个数学概念是什么?
布尔代数
布尔代数源于代数。我想这是显而易见的。如果您是一个程序员或正在努力成为一个程序员,您可能已经知道布尔代数是什么了。如果不知道,我将快速定义它。
布尔是一种数据类型/二进制变量,它有两个可能的值之一,例如0(假)或1(真)。布尔数据类型由布尔代数支持,其中变量的值被称为真值,真和假。在使用布尔代数时,有三个运算符可供使用:
- 合取或AND运算
- 析取或OR运算
- 否定或NOT运算
这些可以通过Venn图形式表示,以便更好地理解输出。布尔代数由6个定律组成:
- 交换律
- 结合律
- 分配律
- AND律
- OR律
- 反演律
数制
计算机理解数字,这就是为什么它们需要一种数制的原因。数制被称为用于表示数字的写作系统。例如,有四种最常见的数制类型:
- 十进制数制(基数10)
- 二进制数制(基数2)
- 八进制数制(基数8)
- 十六进制数制(基数16)
计算机使用基数2的数制,其中可能的数字是0和1。Base64也用于以字符串格式编码二进制数据。
浮点数
关于学习数字的更多内容,我们有浮点数。浮点数是一种变量数据类型,表示实数的近似值。浮点数是一种数字,其小数点的位置可以移动或“浮动”,而不是固定位置。这使得开发人员可以在范围和精度之间进行权衡。
但为什么是近似值?计算机只有有限的空间,32位(单精度)或64位(双精度)。64位是诸如Python和JavaScript等编程语言的默认设置。浮点数的示例是1.29,87.565和9038724.2。它可以是带有小数点的正数或负数。
对数
也称为log,是一种使用指数的数学概念来回答问题。那么为什么对数对程序员重要呢?因为它简化了复杂的数学计算。例如,1000 = 10^4也可以写为4 = log101000。
基数是需要与自身相乘的数学对象。指数是一个数字,用于标识基数需要与自身相乘的次数。因此,对数是一个指数,它指示必须将底数提高到何种幂以产生给定的数字。
当log使用基数2时,它是一个二进制对数,如果是基数10,则是一个常用对数。
集合论
集合是一个无序的唯一值集合,这些值之间不需要有任何关系。它们只能包含唯一的项,不能包含重复的项。
例如,Excel文件或数据库包含具有一组唯一行的表。这是离散数学的一种类型,因为这些结构可以有有限数量的元素。集合论的目的是理解值的集合以及它们之间的关系。这通常用于数据分析师、SQL专家和数据科学家。
您可以通过以下方式进行操作:
- 内连接或交集 – 返回包含存在于两个集合中的元素的集合
- 外连接或并集 – 返回来自两个集合的元素
- 并集全部 – 与外连接运算符相同,但它将包含所有重复项。
- 差集或减法 – A减去B是一个包含来自集合A但不是集合B的元素的集合
组合数学
组合数学是为了计数事物以获得结果,并通过模式来理解有限结构的某些属性的艺术。编程就是解决问题,而组合数学是我们可以安排对象以研究这些有限离散结构的方式。
组合数学公式是排列和组合的结合。
- 排列是将一个集合安排成某个顺序或序列的行为
- 组合是选择集合的值,其中不考虑顺序。
图论
如您所知,图是一组值的可视化表示,这些值可以相互连接。当涉及到数据时,这些值由于变量的存在而相互连接 – 在图论中被称为链接。
图论是关于连接点的边和顶点之间关系的图的研究。这使我们可以使用顶点(也称为节点)之间的边(也称为线)创建成对的关系。图被表示为一对G(V, E),其中V表示有限集合顶点,E表示有限集合边。
复杂性理论
复杂性理论是研究算法作为输入大小的函数而运行所需的时间和内存量。有两种类型的复杂性:
- 空间复杂性 – 算法运行所需的内存量。
- 时间复杂性 – 算法运行所需的时间量。
人们更关注时间复杂性,因为我们可以重复使用算法的内存。当涉及到时间复杂性时,衡量它的最佳方法是考虑算法执行的操作数量。算法是使用if语句和循环构建的,因此为了减少时间开销,您希望使用尽可能少的if语句和循环的代码。
算法的复杂性理论使用大O符号来帮助描述和更好地理解算法的极限行为。它用于通过它们对输入大小的变化做出反应来对算法进行分类。
统计学
啊啊啊统计学。如果您想进入人工智能领域,您需要了解统计学。人工智能和机器学习只是用于统计学的美名。统计编程用于解决数据密集型问题,例如ChatGPT。ChatGPT的响应完全基于与用户提供的提示匹配的概率。
当涉及到统计编程时,您需要了解的不仅仅是均值、中位数和众数。您还需要了解偏差、协方差和贝叶斯定理。作为程序员,您将被分配任务,并意识到您将要问的是这是一个线性回归问题还是一个逻辑回归问题。了解两者之间的区别将有助于确定您手头的任务类型。
线性代数
您可能在学校学过线性代数 – 也可能没有。线性代数非常重要,在计算机图形和深度学习中被广泛使用。为了掌握线性代数,您需要理解以下三个词:
- Scalar – 单个数值
- Vector – 数字列表或一维数组
- Matrix – 网格或二维数组
向量可以表示三维空间中的点和方向,而矩阵可以表示对这些向量发生的变换。
总结
本文为您提供了一个快速概述,介绍了能够改善您的编程职业生涯的前十个数学概念。学习这些细节不仅可以使您的日常任务更加顺利和易于理解,还可以展示给雇主,展示您的潜力。
如果您正在寻找一本免费的书来帮助您,可以查看:《机器学习的数学:免费电子书》。Nisha Arya 是一名数据科学家,自由技术作家,VoAGI 社区经理。她特别感兴趣提供数据科学职业建议、教程和基于理论的数据科学知识。她还希望探索人工智能在人类寿命长久性方面的不同好处和可能性。她是一个热衷于学习的学习者,寻求拓宽自己的技术知识和写作技巧,并帮助指导他人。