`
liufeng_king
  • 浏览: 35154 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

good or great programmer 数学是道坎

阅读更多

    每个计算机系毕业的人,大都学过不少数学课,而且不少学校的计算机系的数学课,通常比一般的其他工科专业的数学要难一些,比如不上高等数学,而是学数学分析,不上线性代数而去上高等代数。但是,大部分毕业了后去做程序员的人,即使是所谓的名校计算机系毕业的,大都工作中也基本完全用不上学的那些数学,基本上,一半时间在CRUD,另一半时间在处理各类字符串、链表、Hash表,知道在面试中回答各种排序的时间复杂度是他们需要的数学的上线了。

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

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

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

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

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

分享到:
评论

相关推荐

    how_to_be_a_good_programmer

    根据提供的文件信息,本文将围绕如何成为一名优秀的程序员这一主题展开讨论。尽管原文链接及部分内容未能提供具体细节,但我们可以基于标题、描述以及标签中的信息来深入探讨成为一名优秀程序员的关键要素。...

    程序员的数学1_程序员的数学_mathematica_programmer_

    总之,对于想要提高自己编程技能的程序员来说,深入学习和理解数学是非常必要的。《程序员的数学1》结合Mathematica的实践操作,无疑是一个很好的起点。通过这本书,你可以逐步揭开数学的神秘面纱,让数学成为编程...

    CH341Programmer_ch341programmer_

    在描述中提到,"programmer for satellite receiver or TV"暗示了CH341Programmer软件的主要功能是为卫星接收器或电视进行编程。这可能包括升级设备的固件、修复软件问题、或者配置特定的设置。在卫星接收器和电视...

    程序员的数学2_程序员的数学_programmer_

    在编程领域,数学是基础且重要的工具,尤其在算法设计、数据结构、图形图像处理、机器学习等领域发挥着关键作用。本书以实践为导向,通过实例解析,使读者能够掌握必要的数学知识,并将其应用到日常编程工作中。 ...

    How to be a Programmer

    But it is really child's play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom he or she is ...

    Pickit 3 Programmer 烧写程序工具

    Pickit 3 Programmer是一款由Microchip Technology公司推出的用于编程微控制器的硬件设备。这款工具主要用于对PIC系列微控制器进行烧写、调试和测试,是开发基于Microchip PIC微控制器项目的重要辅助工具。以下是对...

    pickit3烧录软件PICkit3 Programmer

    《全面解析:PICkit3 Programmer及其在微芯片编程中的应用》 在电子工程领域,编程设备扮演着至关重要的角色,其中PICkit3 Programmer是Microchip公司推出的一款高效、易用的编程工具,专为微控制器(MCU)的烧录而...

    Renesas Flash Programmer Package

    Renesas Flash Programmer Package

    SmartRF Flash Programmer V1.12.8

    《SmartRF Flash Programmer V1.12.8:掌握低功耗射频MCU的闪存编程技术》 在物联网和无线通信领域,高效的设备编程工具是开发过程中的关键环节。其中,SmartRF Flash Programmer V1.12.8是由德州仪器(Texas ...

    SmartRF Flash Programmer

    "SmartRF Flash Programmer"是一款由德州仪器(TI)开发的专业级无线微控制器编程工具,主要用于对CC2430等微处理器的闪存进行编程。这个工具是IT行业内进行嵌入式系统开发的重要辅助软件,它允许用户方便地烧录HEX...

    ST Visual Programmer.zip

    ST Visual Programmer是一款由意法半导体(STMicroelectronics)开发的专业编程工具,主要用于ST Link设备的固件升级和STM8、STM32微控制器的编程与调试。这款软件提供了直观的图形用户界面,使得用户能够方便地对...

    FUJITSU FLASH MCU Programmer

    富士通(FUJITSU)的FLASH MCU Programmer是一款专门针对FMC16LX系列微控制器进行程序烧写的软件工具。此工具的核心功能在于帮助开发者将编译好的固件代码安全、高效地写入到指定的MB90F系列芯片中。MB90F系列是...

    CX-Programmer7.1.rar

    CX-Programmer7.1rar,CX-Programmer7.1

    SmartRF Flash Programmer 1.9.0.rar

    《SmartRF Flash Programmer 1.9.0:高效微控制器编程工具详解》 在嵌入式系统开发领域,固件的编程与更新是一项至关重要的任务。SmartRF Flash Programmer 1.9.0 是德州仪器(TI)推出的一款专门用于编程微控制器...

    SmartRF_Flash_Programmer安装包.rar

    《SmartRF Flash Programmer在蓝牙BLE开发中的应用详解》 SmartRF Flash Programmer是一款强大的软件工具,主要应用于无线通信设备,特别是针对蓝牙低功耗(BLE)技术的开发与调试。这款安装包提供了完整的程序,帮助...

    OMRON CX-Programmer手册

    OMRON CX-Programmer是一款由OMRON公司推出的高级编程软件,专为OMRON PLC(可编程逻辑控制器)设计。这款软件提供了丰富的功能,使得用户能够高效地编写、测试和调试PLC程序。以下是对该软件及其相关知识点的详细...

    CX-Programmer使用指南(中文)

    ### CX-Programmer使用指南(中文) #### 一、前言 CX-Programmer是一款专为欧姆龙可编程逻辑控制器(PLC)设计的编程软件。它支持多种欧姆龙PLC型号,并且提供了直观易用的界面,使得工程师和技术人员能够高效地...

    OCDemon flash memory programmer 3.0.9破解版

    edge memory programmer

    CX-Programmer7.1

    CX-Programmer 7.1 是一款专为Omron PLC(可编程逻辑控制器)设计的32位Windows操作系统下的编程软件。此软件是Omron自动化产品线中的重要组成部分,为用户提供了全面的功能,用于开发、调试和维护Omron PLC设备。在...

Global site tag (gtag.js) - Google Analytics