码农新手白日梦:学最少的数学,编最靓的程

1

“编程是什么?是创造,是技术,是未来。Hello World! 是世界上最浪漫的一句话。从第一个程序开始,你不再是一个被趋势裹挟着前进的人,你可以用充满未来感的语言和这个世界对话了,想想看,这是多么激动人心的事!”

这天下午,我的师弟二像素突然给我发了上面这段话。我还没反应过来,这小子的第二条信息也来了——

“我决定了!我!要!学!编!程!”

我差点把手机扔地上。

码农新手白日梦:学最少的数学,编最靓的程

2

说起我这个师弟,那就不得不介绍一下他这清丽脱俗的外号。他为什么叫二像素呢?因为以前上数学课的时候,他经常把二项式说成二像素,怎么纠正都纠正不过来。

老师:“我再说一遍,这是二项式,你看这儿,还有这儿,有两个什么?”

二像素:“像素。”

老师:“……。”

码农新手白日梦:学最少的数学,编最靓的程

所以各位,知道我在慌什么了吧?这样的数学底子,怎么学编程呢?

天真的二像素还不知道他即将面对什么。他在一条接一条的短信里兴高采烈地跟我介绍了他的老师。他有一位学霸大表哥,现在在 J 大教计算机。经过连续几天的纠缠,二像素终于打动了大表哥——大表哥愿意教他了。

“从今天开始,你就不再是我的表哥,而是我的教练了。”二像素认认真真地抱了个拳,“教练,我想学编程!”

“好的。”教练斯斯文文地点了个头,“不过在那之前,你要先学排列与组合、数理逻辑、概率论、微积分、线性代数……”

“哈?”

码农新手白日梦:学最少的数学,编最靓的程

不出我所料,还没一个星期,二像素就倒起了苦水。

“你知道我现在什么心情吗?”二像素对我说,“这感觉就像好不容易去了少林寺,结果师父让我去当厨子做营养餐!我本来以为自己会打开硬核感十足的界面,使用独具美感的代码体,看着自己构思的一行行代码变成能够运转的程序,脸上云淡风轻,心里激动万分!

“可是现在我在干什么?你看我今天做的题——小红、小绿、小白、小黄、小蓝坐成一排,小红和小蓝吵架了,所以这两个人不想坐一起,请问他们有多少种坐法……

码农新手白日梦:学最少的数学,编最靓的程

“不是,你吵架了就干脆彻底别见面啊!都要坐一排了还不能挨着?而且干嘛要问有多少种坐法呢?难不成你们每种都要坐一遍,每五分钟换一个位子吗?手动旋转木马?

“还有什么抛硬币,什么搞个奇形怪状的东西算面积、体积,还有给数排队,横着排完竖着排,叫什么像素……。”

我忍不住打断他:“那个叫向量!”

“不管是什么吧,反正我是真看不出这些和 Hello World! 有什么关系。要我说这倒挺像 Goodbye World!”二像素一脸失落,不停地叹气。

3

我倒是能理解这种心理落差,但是别忘了,能当大侠的,可都是经历过刷锅扫院子的人。教练让他从当厨子做营养餐开始修炼,也不是没有道理的。

可是二像素好像很难理解教练的苦心。折腾了几个星期之后,他忍不住提出了自己的想法。

“我想试试不学数学,直接学编程……”

教练回答得很干脆:“不,你不想!”

码农新手白日梦:学最少的数学,编最靓的程

“让我试一下总可以吧?”

教练看着二像素,二像素看着教练,两个人大眼瞪小眼,瞪了好久。

最后教练说:“那你说说看,到底想先学什么?”

“嗯……冒泡排序?”二像素来了精神,“我看过网上的动图,一直觉得这个东西很有意思。相邻数字对比换位,真的和冒泡一样。”

“都知道思路了,那就把它表示成代码呗。”教练说,“你可以假设要排序的数字放在一起是个数组。数组嘛,你可以理解为每个数字都有个标号,就跟 an 差不多,但是我们不用 n,用什么呢?用 i……”

码农新手白日梦:学最少的数学,编最靓的程

“教练……”

“怎么了?”

“你说的真的是编程吗?我怎么觉得这还是数学呢?连数组都出来了。”

“数组在编程中很常见呀,还有函数也很常见。另外,排序算法有很多种,你知道怎么比较这些算法吗?要计算复杂度。复杂度分时间复杂度和空间复杂度,算法的时间复杂度记作:T(n)=O(f(n))。它表示随问题n的增大,算法执行时间的增长率和 f(n) 的增长率相同……”

二像素脑袋嗡嗡响。他只看到了程序员噼里啪啦地输入代码,没想到编程中的每一个元素都和数学有这么密切的关系。

“你知道计算机科学的第一批专家都是哪来的?”趁他现在能听进去别人的话了,我打算多说几句,“图灵得过史密斯数学奖,冯·诺依曼做过希尔伯特的助手,往特别早的年代回溯,艾达女士也是当过金牌数学老师的。你要绕过数学学编程,就像不用面粉却要蒸馒头一样,你品,你细品……”

“我品了,”二像素幽幽地说,“好苦......”

码农新手白日梦:学最少的数学,编最靓的程

4

闹过这么一出,我以为二像素会放弃,没想到他还有几分韧性,想再坚持一下。“道理我都懂,”他是这么跟教练说的,“但是我就是想学最少的数学,编最靓的程!求你了,教练!”

教练说:“你别求我,你得求佛。”

“别这么说啊。”二像素不好意思地笑了笑说,“我已经知道数学的重要性了。我只是希望学数学的时候尽量捞干的学,最好只学和编程直接相关的内容。”

教练皱了皱眉:“你这听着倒是挺节约的,小心以后走不远。”

“哎呀,我也不是真的那么不想学数学。”二像素挠了挠头,“我是想早点入门,毕竟数学对我来说实在太枯燥了,如果能尽快上手编程,那我还能有些成就感,也比较容易继续往前走……以后我再回过头来把别的内容慢慢补上,算是两不耽误吧。”

码农新手白日梦:学最少的数学,编最靓的程

“咦?”教练有点惊讶,“你这个思路居然还算有那么点逻辑……容我先想想。”

“教练还是很厉害的!”二像素说,“他真的想出了办法!”

“什么办法?”

“他让我来找你!”

“哈?”

二像素两眼放光:“他说你们这儿刚出了本秘籍,可以让我如愿……”

嗯?有吗?我转身看了看架子上最近出版的新书:《幽灵粒子》、《如何开会不添堵》、《机遇之门》、《摩登创客》……哪个是啊……

等等,我知道了!是这本——

码农新手白日梦:学最少的数学,编最靓的程

帮你掌握编程所需的“数学思维”

《程序员的数学(第2版)》

结城浩 著

史上最懂程序员之痛的“程序员数学系列”升级版来啦!第一版累计印刷 32 次,总销量达8万+,程序员大叔结城浩在新版中不仅保持了原来的风格,用大量例题配以 146 张图表,还增加了“机器学习”等相关内容。

教练果然有眼光!这也算是经典入门书了,第 2 版与时俱进,还增加了机器学习的概念介绍。条理清楚、轻松易懂只是它最表面的优点,这是一本时刻用未来鼓励初学者的书,有了它,菜鸟还怕度不过去数学关?

我把书递给二像素,他马上就翻了起来。从他说想学编程到现在,我还没见他这么认真的样子呢。行吧,我心想,不管怎么说,他一直在寻找适合自己的学习方式。哪个高手不是从菜鸟开始学习的呢?未来总是可以期待的。

我刚想鼓励他几句,这家伙忽然问:“这书能送给我吗?”

“不能!”

“为啥?”

“这本是我的收藏品。”

“可是我想要!”

“那你去图灵下期推文下面留言,运气好的话没准儿能抽中赠书。”

“好啊好啊!咦,你们下期发什么?”

我笑了笑,心想,就发你的事儿呗,不然呢?

码农新手白日梦:学最少的数学,编最靓的程

(附第 2 版目录,仅供读者参考)

第1章 0 的故事——无即是有

第2章 逻辑——真与假的二元世界

第3章 余数——周期性和分组

第4章 数学归纳法——如何征服无穷数列

第5章 排列组合——解决计数问题的方法

第6章 递归——自己定义自己

第7章 指数爆炸——如何解决复杂问题

第8章 不可解问题——不可解的数、无法编写的程序

第9章 什么是程序员的数学——总结篇

附录     迈向机器学习的第一步

文末畅聊

小伙伴留言说说那些年你因为数学不好吃过哪些亏?我们会在精选留言中选出 5 位获得程序员的数学宝典《程序员的数学(第2版)》一本。留言截至2020.5.2。

题图来源:freepik.com

推荐阅读:

4月书讯(下)| 美亚4.8星评,又一本口碑相传的著作来了

世界读书日 | 这11本书将颠覆技术人士的思维方式

两年的等待,近700页干货,同系列累计销量25万+,第三版内容更扎实

“在看”一下,摆脱数学支配

码农新手白日梦:学最少的数学,编最靓的程