作为一个程序员,数学对你到底有多重要?!

作为一个程序员,数学对你到底有多重要?!

作者: Xu Wenhao  发布时间: 2018-02-21 16:17  阅读: 36411 次  推荐: 133   

  原文发布于 2011 年

  每个计算机系毕业的人,大都学过不少数学课,而且不少学校的计算机系的数学课,通常比一般的其他工科专业的数学要难一些,比如不上高等数学,而是学数学分析;不上线性代数,而去上高等代数。但是,大部分毕业了后去做程序员的人,即使是所谓的名校计算机系毕业的,大都工作中也基本完全用不上学的那些数学,基本上,一半时间在CRUD(crud是指在做计算处理时的增加(Create)读取查询(Retrieve)更新(Update)删除(Delete)几个单词的首字母简写),另一半时间在处理各类字符串、链表、Hash表,知道在面试中回答各种排序的时间复杂度是他们需要的数学的上线了。

  而在念书的时候,虽然上大学之前,有不少内行的外行的,年老的年轻的人告诉你,数学很重要啊!但是,通常来说,各个学校的计算机系的同学么,爱好学习的,可能重视的也是《Thinking in Java》《C++ Primer》之类的语言书,或者设计模式之类的架构书,抑或是算法数据结构这些玩意儿;而像我这样天天偷懒放羊的,也不会把数学当作是什么重要的课程好好学习。所以,“数学真重要”,这句话,似乎对于大家来说,始终只是飘在天上的一句话,随风飘逝了。

  于是,五年过去了,程序员们都有了不少的工作经验了,如果不是对工作毫无追求混吃等死的程序员的话,对于天天干活的语言,不论是Java还是C++应该都熟能生巧了,所谓的设计模式重构自动化测试等等也手到擒来了,大部分人的title上都加上了Senior(资深)了,牛一点的后面大概还跟上了一个Manager(经理),然而,大家都开始考虑一个新的问题 — — “30岁以后怎么半?”。于是,转PM的转PM(项目主管或项目经理),考公务员的考公务员,像我这样仍然抱定 — — “你看人家美国Rohit50了还不是天天写程序,别人想请还请不到的”的单纯想法的人越来越少了。然后,就算这些人,时不时也会觉得,自己天天干的超越CRUD的,所谓写点OOOO(Object Oriented:面向对象)的框架,不也是很无聊的体力活么,写程序的人干两年谁都会干。于是,又有不少人下海创业了,多年以后,这些人中的大部分都会和我一样悲催的没有挣到钱后继续回来给大大小小的公司写程序。

其实,杯具往往发生在一开始,其实,要是咱们当年好好学习,才会发现,也许数学对于你当个不错的程序员来说,没那么重要,但是要再往上走一步,有一点点技术上的创新,就都是数学的事儿了。两年前,我在T公司,用Configurator(配置器)处理某个程序的时候,开始有点儿意识到这一点了,于是,那阵子还花了不少时间重新翻了翻数理逻辑。今年,换了新工作后为了工作看点儿机器学习的东西的时候,终于发现,这全都是数学啊。当你要超越CRUD,做任何一点点有创新性的技术的时候(不说产品),最有机会遇到的问题,其实是数学问题。虽然从SpringHibernateRails之类的框架,或者HadoopHBase之类的分布式计算框架,也都是技术上的重大革新,但是这些框架类的程序,完善都是阶段性的,一旦出现后,很快都会有相应的Best Practice(最优方法),又会成为熟练工种的活。而真正针对问题域的解答,反是每天都可以有些新鲜的想法、思路和方案的,这些,往往有个数学的门槛。所以如果你真是挺喜欢写程序的,而且希望自己一直能写更好玩更难的程序,总有一天,你要过了这一道坎儿。

  所以我很是同意不知道是谁说的,如果你只想当个good programmer,那么数学不重要;但是如果你想当个great programmer,那么数学很重要。在你手里只有锤子的时候,你看什么东西都会是个钉子,想想你如果没有学过算法数据结构,可能你的大部分程序需要自己写排序的话,都会是傻傻地冒泡吧。反正对于大部分程序来说,在现在这么快的PC下,这点时间差别,大部分情况下,也就是让你等程序执行测试的时候,多个倒杯水的时间。但是很多新鲜、好玩、有挑战的问题,很多数学的概念没有的话,恐怕不是多等个倒水的时间了。而如果你过了这个门槛,你又会发现,一个崭新的世界,又到了你的面前。

  回过头来,我说数学重要的话,那么重要的是哪些呢?大家常说的通常是离散数学,不过最近比较热门的机器学习这个方向,我目前看到的相关资料都大量依赖于线性代数概率论,以及一点点微积分。所以,如果你和我一样,希望做点有追求的技术工作的话,开始花点时间学习数学吧。其实万事开头难,也许你和我一样,对着一堆公式符号,感到头晕眼花,但是如果真得按下心来,看上一个小时,这么坚持个一周,其实就会发现,这没啥难的,就当学门新的编程语言得了。

原文链接:https://kb.cnblogs.com/page/590141/

  学好数学我的建议是:在大学里首先尽量好好学习高等数学(1)/高等数学(2),有余力的再学习高等数学(3),其后是线性代数、概率论。之后参加学校组织的数学竞赛。到了大三,一定要参加考研,因为考研可以全面系统的复习你所学过的所有数学知识,考上研究生固然可喜,考不上的话也要好好学习下数学,也许学的不够好,但是基本的数学概念、框架你有所了解,也很有用。以后的工作中,若是需要数学的地方,再去听课学习,就不会那么懵逼了!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏点滴积累

一个程序员的思考

读书笔记系列链接地址http://www.cnblogs.com/shoufengwei/p/5714661.html。        最近被一件事情虐的不行...

36750
来自专栏互联网杂技

想做好设计?需了解神奇数字;三!

3仅仅是一个数字吗?“3还能代表更多!?数字3推动着摄影、设计、建筑和自然规律的发展? 我们一起来看一下数字3的魔力。来了解为何平面设计、印刷广告、Logo设计...

35660
来自专栏大数据钻研

那些关于程序员的经典段子

关于程序员的段子真的非常多,非常多,常多,多……小编这里根据网络上的一些段子呢,再次总结了几个,不妨看看…… 关于面试: 面试官:熟悉哪种语言? 应聘者:...

41560
来自专栏CDA数据分析师

读累了看视频 :YouTube上最火的10个大数据视频

翻译 | 伯乐在线 - 柒柒 原文来自Eileen McNulty 无论你对大数据一无所知,还是想要拓展机器学习方面的知识;无论你有三小时,还是三分钟;无论你...

36270
来自专栏cs

我是如何在5个月内跨专业考上北科计算机的

27110
来自专栏一个爱吃西瓜的程序员

如何有效地自学一本陌生的专业书籍?

昨天发了那篇推文之后,我掉粉了,对,就是关注人数少了两个。可能是觉得继续关注我也获取不到什么有价值的知识或信息了吧。关注或不关注,我就在那里,随缘吧,哈哈~ ...

34340
来自专栏IT派

我们爬了上千个数据分析师信息, 你真的懂数据分析师嘛?

有人说,这个时代,只要站在了风口,猪都能飞起来,尤其互联网行业,千变万化,日异月殊,一不小心就错过了风口,如果没记错的话,前几年火的是App开发,后来是大数据,...

11830
来自专栏黑泽君的专栏

传智播客C++学习感悟

楼主在本文中将说到C++的学习方式以及亲身经历。本文内容不仅仅限于C++学员,对于那些有意向来学习技术的、或刚来不久、或处在迷茫期的同学可以一同看下,希望在这里...

28420
来自专栏企鹅号快讯

计算机科学的前世与今生

你不懂的计算机 那么关于计算机的前世今生我们要从一只碗开始说起 ? 这个碗是计算机历史上最伟大的奖项图灵奖(ACM)它给予在计算机历史上做出过杰出贡献的人,那么...

341100
来自专栏机器人网

没有任何机械基础,如何自学机械设计?

机械设计第一阶,学习《工程图学》。 按照大学的计划应该是先学习数学的,如果你是在机械行业工作那真是有着极大的优势,可以结合实践,边实践,边理论学习。先感性认识,...

50460

扫码关注云+社区

领取腾讯云代金券