数学会对计算机编程的关系

   我想大多人都会有这样的疑问,学习英语和数学会对计算机编程有用吗?我在上大学的也不知道,现在岁数大了,在这里结合我自己的经验和网上的资料说明下:
数学的重要性:
1.首先作为一个优秀的程序员,数学是十分重要的。数学是自然科学的基础,计算机科学实际上是数学的一个分支。数学主要能让人懂得一种分析问题的方法,然后再通过编程去实现它。
2.学习数学是一个潜移默化的过程,并不是说你学习了大学数学等就马上立竿见影的对编程有帮助了。所以,很多程序员说他们并没有用到太多的数学知识,就已经是一个很棒的程序员了。(他们是优秀的编程蓝领,但他们的成就也就到此为止了,因为开发平台的组件已经帮他封装好了一切,他只需要调用就可以了)。
3.数学对编程有如蔬菜对肌肉。你说你吃了这盘菜对你身上的哪块肌肉有好处谁也说不出,但如果你一点蔬菜都不吃,你身上的每块肌肉都会没用。
4.当你学会编程后,感觉学习数学好像更容易了。当然,学好数学再编程,编程也会变的很容易了。有了数学知识,你会发现数据结构与算法原来也是很简单的。
数学的学习:
1.如果你认为数学没有用处,那是因为中国的数学教授方法错了,没有教给我们需要的知识,而不是数学本身的错误。哪怕了解一点点相关的数学知识就能让你写出可爱有趣的程序,否则会有些小难度。换句话讲,数学是可以慢慢学的,只要你有时间。加油,兄弟们,你能行的。
       2.对于程序员来说,什么是正确的学习数学方法,呵呵,我们不需要知道定理的证明和它们究竟怎么来的,我们只需要看懂他们,然后灵活运用就可以了。
       3.所以,你数学究竟考多少分并不代表你运用数学知识的能力,实际上,很多的数学知识到死你都就不会用到,它们的确也不是为你的编程生涯准备的。我们只需要知道基本思想,基本原理和基本使用方法就可以了。
       4.你对编程的兴趣将会使你只关注于数学实践性的部分,在这方面,你将做的和数学系的一样棒。
什么数学课程对编程有用呢?
1.高等数学是基础,对于你理解数据结构和算法、数据库等起到无与伦比的作用。
2.做计算机图像处理方面的话,线性代数必须要好。
3.压缩算法、人工智能都使用微积分的。
4.离散数学和计算机编程联系最紧密,最有效的离散数学的分支是概率理论.这是你在学校学完基本算术后的紧接着的课.你会问,什么是概率理论呢?你就数啊,看有多少次出现满堂彩?或者有多次是同花顺.不管你思考什么问题如果是以"多少种途径..."或"有多大几率的...",那就是离散问题.当他发生时,都转化成"简单"的计数.抛个硬币看看...? 毫无疑问在他们教你基本的计算用法后他们会教你概率理论.
5.不要单纯为了考试,考研而学习(我从来不认为一个学生的优秀用他的考试成绩来衡量,我的衡量标准是看平时),这会让你“一张白纸走进大学,一脑糨糊走出大学”。没有动手能力,到了社会,你除了比别人多了张文凭,什么都不是。
数据结构:
要对数据结构引起足够的重视。如果说计算机专业的学生与非计算机专业的最根本的差别绝对是数据结构(数学大家都一样学了,主要看你自己学得好坏)。对数据结构的掌握与运用能力是衡量你编程能力的一个很重要的指标。有的人对于看了链表,栈,树,广义表这些东西就头痛。然而这些东西往往能使你的程序的效率比别人高出百倍。由于一直搞信息学竞赛,到了大学又搞ACM,所以我对数学和数据结构都掌握得相对较好。这使我在应聘与工作中明显感到胜人一酬。记得自己大学时去一家公司应聘的经历,当时去应凭的还有3个人,有2个大学毕业,有个也工作了一段时间了。他们几个都在大讲自己的能力如何之强,会使用的语言及编程工具如何之多,经验如何之丰富。按理说我应该是资质最浅的。当时也是初生牛X不怕虎,也就硬着头皮去了。当时面试的题目是一个公司的资金管理项目的一个问题,要求每个人都在思考后给出自己的设计方案。其中比较核心的一个问题就是要计算一个资金最小波动值的问题,给出的数据量相当大,对效率要求很高。对于整个程序的面向对象化的分析我们几个都是差不多的,毕竟这些东西在学校里是很重视的,而且不是真正的难点。然而到了最关键的问题时其余的人都卡壳了,有两个是用简单的双重循环,时间复杂度(N^2),惨不忍睹。还有一个在冥思苦想了好一阵以后说用树,具体技术细节又讲不清楚,效率分析也很马虎。只有我当时很快就给出了采取AVL树的方案,并且利用高等数学推导作出了很详细的效率分析和时空换算,并提出了引入汇编的方法。很自然的我得到了这分工作。
在这里大家显然可以看到数学和数据结构对于一个优秀程序员是多么重要,它们是和一般的程序员打开档次的最关键的地方。数据结构你可以一点一点慢慢看,并不需要专门空出一段时间来专门研究,这样的目的是让你能够很好的掌握它,要学会用数据结构的知识来规范自己的程序设计和提高程序的效率。
编程能力:
最后编程能力的高低主要还是有以下几点决定:1。编程的习惯 2。数学能力(包括逻辑思维,分析问题的能力) 3。对数据结构的认识能力 4。经验的多少(包括多使用语言的掌握能力)。
如果你已经能够应用C++,懂得面向对象程序设计,对数据结构掌握很好,掌握汇编和编译原理。接下来的学习就是基于操作平台的了,一般是先学windows(Microsoft毕竟是老大),先学win32 api,搞清楚windows基本消息机制和原理,有汇编基础基本上不会碰到什么困难。
英语:
英语是从事计算机行业的最基本的条件,大多的计算机语言都是简单的英文,英文差空间有限。对于编程来说,英语的作用体现在阅读英文文档,适应国际化的编程环境,像微软MSDN文档等都是英文的,翻译过来的中文没法看。但请注意,学英语跟学习编程没有必然联系,英语好或许我在学习程序语言时要亲切些(因为高级语言诸多关键字是英语单词)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值