编程和数学搁在一起,有的人会说,数学对编程很重要,是真的吗?也很多人会说,数学在编程上实际上用得很少!编程和数学没多大关系,真的是这样吗?数学对于编程到底重要?or 不重要?
数学对编程很重要?
扯淡,数学再好,你能设计出IOS的UI吗?学好数学就能理解用户体验了吗?
编程就像一个大杂烩,
我一直不喜欢“计算机科学”(computer science)这个词。主要原因是根本不存在这种东西。计算机科学就像一个大杂烩,由于某些历史意外,很多不相干的领域被强行拼装在一起。这个学科的一端是纯粹的数学家,他们自称“计算机科学家”,只是为了得到国防部研究局(DARPA)的项目资助。中间部分是计算机博物学家,研究各种专门性的题目,比如网络数据的路由算法。另一端则是黑客,只想写出有趣的软件,对于他们来说,计算机只是一种表达的媒介,就像建筑师手里的混凝土,或者画家手里的颜料。所以,在“计算机科学”的名下,数学家、物理学家、建筑师都不得不待在同一个系里。
首先,“编程”是一个很泛的概念,“编程”这件事对于各个人有不同的意义、
对一般码农来说,编程略等于用户需求实现的过程,写出能运行的代码或者软件就算达到了目的。
对编译工具开发者,编程是编写符合语法规则的字符串,借着编译器生成能执行的软件程序。
“天才”级程序员而言,编程几乎等于算法,谈编程几乎等于谈算法。
编程还是很多与计算机应用挨得比较近的学科的基础技能,这时,编程是研究人员实现各类实验的手段,譬如机器学习、密码学、计算机图形学、计算物理等等。
专业划分上,编程算是计算机科学的子集,计算机科学属于数学与应用数学专业,是数学的一个分支。
其次,对比“编程”和“数学”的异同。
数学的内涵和外延之丰富,我们不用展开。就许多编程语言的构成部分,如整型、浮点型、字符串、变量、常量、运算符的优先顺序,参数或者布尔运算等等,都来源于数学概念,并发展变化。编程语言的底子是数学概念,实际编程中,这些编程中概念又具有自己独特的表述意思。学习编程,也可以对比和原来数学概念所不一样的地方。我们来看看“编程”和“数学”很多相同的地方吧!
数组这个概念在编程重要,在数学上我们很容易找到与之对应数学概念,一维数组 ->矢量;二维数组-> 矩阵。
而矢量、矩阵和行列式在数学上一个基础性分支,有很成熟的理论支撑。
函数在编程里有丰富的内涵,数学上的函数概念能帮助程序员快速建立函数对象的逻辑思维,数学意义的函数,用到的单射、满射、双射、反函数学等等,都能在编程里有用武之地。
编程,绕不开算法,至少,编程之路往上爬,必须深入进去算法。算法的逻辑思维几乎等同于数学的逻辑思维。
下面我们再说说,编程之于数学之外的那些吧!
编程需要考虑性能,性能这件事和数学没有很强的联系。
编程需要考虑内聚性、耦合性、可读性、可扩展性,这些因素更多的是软件工程上的考量,与数学的本质联系不是那么强。
编程需要测试,测试这个事情不能说有多么的数学。
从这些方面出发,有些人说,“编程就是数学”明显是不恰当的。
只能说,题主, 你想得太过于深远了。数学包括学科太多了,著名的有高等几何代数微积分线性代数概率论离散数学数论独论等等你说的数学具体指哪一样?你所谓的把数学学好是指这些全部精通吗?那你就牛逼了,连牛顿爱因斯坦阿基米德都不敢说这些全精通。等到你把数学学好,那你胡子都快拍了半截身子也要入土了?你自己觉得累不累?
所以大多数人都不太可能在数学方面取得什么很深的造诣,而且软件开发跟数学根本就不是一门学科,两者包含关系不多,软件开发需要用到的基本知识比数学重要的有太多了,什么操作系统数据库网络知识都是需要你掌握的。连英语都比数学重要太多,你看不懂技术文档看不懂SDK API说明还搞个毛线。而数学对于大多数人来说是最不重要的知识。为什么?理解C++的指针和多态需要数学吗?一个复杂的系统架构也不需要半点数学知识,而你就是看不懂。
在你担心数学好不好之前,你更应该关心编程环境怎么搭建,连IDE都搞不定不知道程序怎么跑起来你还搞什么呀,下一步就是程序基本的语法和SDK库函数的掌握,什么类的多态和继承,接口之类,基本SDK都不知道什么意思怎么去用,如字符串函数,文件操作读写和数据库增删改查常用操作,这些你都不会你还有学下去的必要吗?还有网络编程长连接短连接,游戏编程需要理解场景和动画知识,说数学重要的这些基本的东西你会了吗?还有更重要的更基本的程序调试技术,程序老出错老崩溃怎么办呀,哪里变量为空了内存写错了?为什么程序老编不过去呀,谁能帮帮我呀!!!这个时候你发现那牛逼的数学知识真是屁用没有,你还是感叹自己基本功底不行经验太少,这个时候打死你也不会再关心数学好不好的问题了。
软件开发说到底是对于语言,SDK和工具的运用。常见的如android开发,网站开发都不需要半点数学知识。只有游戏开发需要用到一点简单的牛顿运动定律和圆周运动和抛物线运动。如果说用到数学的大概只有3D游戏引擎,很智能的人工智能,如格斗游戏的电脑应对玩家的复杂AI,生化危机中僵尸怪物的配合商量运用策略包抄玩家和记忆功能,还有航空航天领域这样高精尖技术学科才会用到复杂一点的数学知识。而这些都是计算机专家才要掌握的内容。所以题主你是想多了,还是先关心下自己程序为什么编不过老是报错的问题吧!