Ⅰ 编程所需要的数学知识
计数的能力: for循环中经常用, 小学生都会。
数字的加减乘除 : 每种编程语言都会内置支持, 都不需要你自己算
余数和模: 偶尔会用得到
集合运算: 交集、并集、差集 , 编程中用的不多。
布尔运算: AND , OR, 非
各种进制: 二进制、十进制、十六进制
还有哪些? 我想不起来了, 欢迎补充。
当然这和我从事的编程领域有极大关系, 如果我做的不是Web开发, 而是搜索,游戏, 安全,算法,人工智能等, 那对数学的要求估计就开始飙升了。
其实计算机的基础是数学, 只是我们一直在应用层编程, 体会不到罢了。
比如说我们日常使用的计算机,绝大部分都是所谓冯诺依曼结构(参见文章《冯·冯诺依曼计算机的诞生》) ,这个结构可以说是图灵机这个概念机器的具体实现,而图灵机就是一个纯数学的东西啊 ,没有图灵机这么伟大的抽象作为数学基础, 现代的计算机是制造不出来的。
再比如说密码领域需要很多数论的知识,RSA算法就涉及到大素数的分解;
我们常用的Mysql, Oracle 等关系数据库的底层基础是离散数学的笛卡尔乘积;
通信系统中很重要的一个原理就是傅里叶变换。
编译器会用到有限状态机;
数据的压缩会用到各种数学的算法;
项目管理中的进度管理,甘特图数学基础就是图论。
Ⅱ 数学建模比赛中,程序员具体需要做些什么,以及程序员的数学水平应该达到什么程度
在本科阶段,我本人参与过数学建模,我们团队最终也获得了全国一等奖的荣誉。在数学建模比赛中,程序员起到的是至关重要的作用,因为大部分工作都是由程序员去完成的。
程序员具体应做好以下工作:
1、你要去建模(要会微分方程, 机器学习算法, 图论);
2、写程序搞定你的模型(做A题的话你要会数值分析, 有些地方也叫计算方法. 至于决策树, 图论, PCA降维, 聚类分析什么的, 那就是程序员的老本行了);
3、debug你的程序得到看上去正确的结果;
4、在论文里面详细的描述你的算法和实现过程。
总结
个人认为,程序员在数学建模中起到最重要的作用,如果一个团队里面只有一个程序员,那么这个人的工作量无疑是最大的。
Ⅲ 程序员需要怎样的数学基础
离散数学对程序员来说非常重要,还有组合数学、线性代数、概率论、数论等等,即使你将来不做研究,这些基础知识也能极大地提高你的水平。计算机科学对离散数学的要求很高,建议你先学习前面提到的这些课程,然后学习计算机算法和数据结构,再配合到网上的在线题库做题,过程很艰辛,但是对你的帮助会很大。
推荐书目:
《具体数学》(先学完前面的数学课程,在水平有一定进步以后再看)
《算法导论》(应该人手一本的好书)
简单来说,学数学的目的,一方面是活跃你的思维;另一方面是为了深入学习算法打基础,设想一下,同样的问题,普通人的程序要几十分钟甚至几小时几天才能解决出来,甚至根本无法解决,而你精心设计的程序却能在1秒内解决出来,这就是数学的魅力、算法的魅力。
其实,一切取决于你是否想做一个高级程序员。如果你做体力活(其实一般编程别人都认为是体力活),那你可以不学,因为你用不到,但是,你要是做技术上的创新,做个很强的程序员,没有数学的支持,很难。
你既然学习了C,c++,你也知道算法的重要性,同样一个问题,我用13行程序解决了,我的同学居然用了33行,因为他不懂的用数学。你要达到什么高等,取决于你的数学修养。当然,要做一个普通的程序员就不用学习了。要挑战自己,做个好的,优秀的,学习数学吧!