编程过程中经常用到的高中数学知识点。

编程过程中经常用到的高中数学知识点。,第1张

函数、映射:编程中的很多基本概念就是根据这个建立的。

集合:用计算机解决问题,必须把问题中连续的东西化为离散的,集合知识是必须的。

极限:计算机的最大优势就是可以快速循环计算,因此,把连续问题离散化后,通常需要使用迭代之类的方法,求极限,通过逼近的手段,得到近似答案。用计算机开方或者计算积分等都是这样做的。

其它:看看离散数学或者抽象代数。

1、编程中的数学

于是我马上回顾了下编程中用到的数学知识,好像少的可怜。

计数的能力:for循环中经常用, 小学生都会。

数字的加减乘除:每种编程语言都会内置支持,都不需要你自己算

余数和模:偶尔会用得到

集合运算:交集、并集、差集,编程中用的不多。

布尔运算: AND,OR, 非

各种进制:二进制、十进制、十六进制

还有哪些?我想不起来了。

当然这和我从事的编程领域有极大关系,昌平镇北大青鸟认为如果我做的不是Web开发,而是搜索,游戏,安全,算法,人工智能等,那对数学的要求估计就开始飙升了。

其实计算机的基础是数学,只是我们一直在应用层编程,体会不到罢了。

比如说我们日常使用的计算机,绝大部分都是所谓冯诺依曼结构,这个结构可以说是图灵机这个概念机器的具体实现,而图灵机就是一个纯数学的东西啊,没有图灵机这么伟大的抽象作为数学基础,现代的计算机是制造不出来的。

再比如说密码领域需要很多数论的知识,RSA算法就涉及到大素数的分解

我们常用的Mysql,Oracle等关系数据库的底层基础是离散数学的笛卡尔乘积

通信系统中很重要的一个原理就是傅里叶变换。

编译器会用到有限状态机

数据的压缩会用到各种数学的算法

项目管理中的进度管理,甘特图数学基础就是图论。

.....

总之,数学在计算机科学扮演着非常重要的角色,是整个学科的基础。

2、不拼数学拼什么?

具体到应用层编程,尤其Web开发、企业信息化开发,整天折腾的是框架和类库,用不到这么多高大上的数学知识,那到底拼的是什么?

想想编程中常用的数组,如果是一维数组,做个循环和遍历,每个人都能轻松应对。如果要用数组来表示二叉树,就需要把一个树形结构对应到线性结构,那难度立刻上升。

如果在编程中需要自己实现链表,就会发现把各个节点的链接关系维护好,需要把指针调来调去,挪来挪去,实在不是一件容易的事情。

这样的能力就是逻辑思维的一种体现。

我们在做系统设计的时候,经常需要总结、分析现实需求,找到容易变化的部分和相对稳定的部分,把他们封装起来,形成核心的概念,支撑起整个系统,这是一个抽象的过程,虽然用不到多少数学知识,但是思维的过程也极不容易。

逻辑思维能力和抽象能力的差别,能够区分出程序员的优秀和平庸。

一个优秀程序员写出的代码,接口清晰,容易扩展,易于维护 一个差程序员写出的代码,思路混乱,完全是一些计算机语句的堆砌,别人看不明白,过一段时间自己都看不明白了。

数学系的同学在这两方面恰恰是长项,想想看,数学系同学们整天折腾这么多“枯燥的”抽象概念,再去看编程这样大部分都是具体化的实现,简直是分分钟搞定!这可能是数学系的转到编程领域很厉害的原因吧。

逻辑思维能力通过学习数据结构和算法,做数据结构的习题可以得到有效的提高,抽象能力需要在实践中不断的练习、积累经验。对于初学编程的同学,从现在就开始努力提升吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11793430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存