搞程序开发,到底需要不需要数学好?长久以来,这是一个争论不休的问题。
我曾经在公司组织过专门的讨论班,一开始许多人以“现身说法”证明,数学“没什么用”,因为数学不好仍然是开发的中坚力量。但是,随着讨论的慢慢加深,大家逐渐认识到了数学的价值和魅力,参与的兴致也越来越高,讨论也越来越热烈。
为什么会这样呢?因为大家逐渐发现了,数学好对开发是“如虎添翼”的作用。比如,解决下面这些问题的时候,数学好,会让你的头脑异常清醒。
比如进制,几乎所有学习计算机的人都知道“二进制”,但未必所有人都清楚“进制”到底代表什么,也没有去想过不同语言里进行进制转换时, radix为什么不限定为2、8、10、16等等几个常用数字。于是,如果要生成长度很短的计数序列(比如3F6BQ),又要避免混淆O和Q和0、I和1等等容易混淆的字符,就只会写一个带多个IF条件的循环,经常错漏百出。如果你真正理解了进制就会知道,可以直接用33进制解决问题——10个数字加上26个大写字母,去掉O、Q、I,算数的时候仍然用十进制,显示时用映射表把每一位的值转换成对应字符就可以。
比如图论,它不只是处理图形的时候才会用到,许多时候如果你把问题“抽象”成点和线构成的图,就会发现它的面貌陡然一变,解法自然浮现出水面——“人草羊狼过河”的问题就可以穷举状态再找出可达路线,简单验证码的识别就可以简化为寻找极大联通分支,订单状态的流转也可以用状态-转移函数来治理。
再比如基本的计算,如今几乎所有程序员都要做点统计,但许多人只会做算数平均,结果一两个极端值就可以导致结果的巨大偏差,这也是我工作中经常遇到的问题——某个值波动剧烈,原来是当天出现了一两个极值。如果你懂得方差、p90、p95等等概念,就可以避免这个问题。更不用说容量预估,如果用户数增长一倍,用于存储用户资料、用户关系、用户行为等等数据的表会怎样增长?不能作出准确预估,临时抱佛脚,估计要手忙脚乱加班了。
如果你觉得我说的有道理,今天向你介绍一个人:黄申。
黄申是 LinkedIn 资深数据科学家和微软学者,IBM ExtremeBlue天才计划成员,长期专注于大数据相关的搜索、推荐、自然语言处理、广告以及用户精准化领域,在微软亚洲研究院、IBM美国研究院、eBay中国、沃尔玛1号店和大润发飞牛网都曾担任要职,带队完成了若干个公司级的战略项目,也是《计算机工程》特邀审稿专家,著有20多篇国际论文和10多项国际专利。
他在极客时间的专栏《程序员的数学基础课》已经上线,专栏中他以编程的视角,结合自己十多年的学术经验和工业实践,通过“知识 - 应用 - 知识”的讲解路线,总结出一套为程序员量身定制的数学学习方法和知识体系。
订阅福利
限时优惠68元,12月15日恢复原价99元,订阅立省31元。
如何订阅
扫描下方海报的二维码,试看或订阅专栏。