程序员为什么一定要学好数学?驻足听一下“老人言”
讲一下自己的惨痛经历!三个方面:
1、数学?不存在的,老子只学专业课!
2、数学?不学不行,老子还得去补一下!
3、数学?不仅仅要学,还要深入学!
1、数学?不存在的,老子只学专业课!
学习之初,很多人都会有这样的困惑。包括我在内,我想学计算机专业,老师你就直接单枪直入,教我专业性的东西啊,光教一些跟编程八竿子打不着的数学干啥?!
这样导致的一个结果就是,每次基础学科考试总是应付了事,抱着能过能及格的心态一路走来,不遇坎坷就一直坐着自由落体的运动!
2、数学?不学不行,老子还得去补一下!
我学习数据结构和算法时,总感觉自己用起来没有得心应手的感觉,做一些算法优化的时候,基本上也是只能现搬书里的算法,遇到不太一样的问题,就不知道怎么解决了。就比如那些什么排序,快速排序堆排序希尔排序。。。只能记住他们的时间复杂度和空间复杂度和写法,却从来不知道这些算法是怎么设计出来的,这些算法为什么是正确。
于是开始不断地翻看算法相关的书籍,原因正是数学基础不好,因为没有从根基上了解其原理,所以学习起来总感觉自己在中间飘着。
其实无论我们以后是学习哪一门编程语言,或者说要学习大数据、人工智能等,数学是一个很重要的学科。
3、数学?不仅仅要学,还要深入学!
计算机归根到底在cpu执行的都是指令操作,每个指令最终都是靠0101二进制来存储和解析,这就是数学里面最基本的东西。所以说,计算机和数学密不可分。
举例说明:
归纳证明法和递归编程的关系非常紧密,你不理解其中一个,就不可能真正理解另外一个。你可能不知道术语基本情况和归纳假设,但是如果你不能理解这些概念,你就没有办法写 出正确的递归程序。所以,即使是在与数学无关的领域内,不理解这些数学概念的程序员也会遇到很多困难。 优化方法取决于函数的形式,从目前看,最优化方法通常是基于微分、导数的方法,例如梯度下降、爬山法、最小二乘法、共轭分布法等。 还有线性代数中的矩阵、转置、秩 分块矩阵、向量、正交矩阵、向量空间、特征值与特征向量等在数据分析中都有很大的关系。
综上:如果想要在IT行业技术上有突破深入发展,还是要深入学习数学的。不能说你为了学编程就是写点应用逻辑,这样多没意思。什么编译器,操作系统,浏览器,数据库,游戏引擎,大学期间都可以自己试试造轮子写一写,学习过程中不要老是用别人的API,老是用别人写的库,要度尝试自己写内核,虽然一开始可能会很烂,但毕竟能让自己学到东西不是?