程序员请回答:哪个瞬间,你最想回到童年?


都说搞编程没有不苦不累的,50%的程序员晚上几点的北上广深人家都见过,剩下50%的程序员不住北上广深。
日复一日,你习惯了全方位浸泡在代码里的生活,也习惯了自称码农。编程虐你千百遍,你待编程如初恋。你说代码就像种子,你要在编程 studio 里种满希望。

没关系,你是一个坚强的人、乐观的人,代码可以让你流汗,但不能让你流泪,算法可以让头疼,但不能让你心疼。你要继续编程……
可是,当夜深人静,你终于关上电脑时,望着浓得化不开的夜色,望着窗外沉睡的整个城市,在一瞬间,你也会感觉到小小的寂寞。

这一瞬间,你真想回到童年。
你想念小时候的冬日阳光,想念唠叨的老师,想念一起捣蛋的朋友。你想念放学的铃声,你知道,迎着夕阳回家,很快能吃上妈妈的拿手菜……

也只能想想而已……你对自己说。然而就在下一秒,你眼前一亮——旁边桌子上那是什么?在一大堆干巴巴的教材和指南中,有一本书露出了彩色的一页。

这……怎么这么像小学寒假作业里的字谜游戏?你忍不住拿起那本书,好奇地翻了翻——于是,你打开了新世界的儿童专用门。
你看到了彩色的小木琴:

还有汉诺塔:

还有……这是什么五彩斑斓的小人?

还有益智连线、彩色钥匙,像插片一样的小圆点……程序员的桌子上怎么会有这样的书呢?坐旁边这家伙在背着你们大家看什么?
你翻过来一瞧,封面竟然是这样的——

啥?你不敢相信自己的眼睛。看看这乖巧的方开本,看看这萌萌的字体,看看这积木块的同款颜色,这本书明明应该叫做——

难道不是吗?
也许你忘记了,也许很多人都忘记了,算法,本来就有接近游戏的一面。
算法是计算或解决问题的步骤,也是达成特定目标的步骤。而游戏的过程也是按规则完成任务,达成目标的过程。
举个例子,游戏室里总能见到的汉诺塔,你小时候玩到了第几环?每次只能移动一个圆盘,小圆盘一定要在大圆盘的上面。把所有圆盘从最左边移动到最右边,你就赢了。
其实无论有多少环,你都可以赢得这个游戏,秘诀就是递归算法


再举个例子,你有没有和小伙伴在纸上比赛过走迷宫?谁先走通谁就赢了。这正是算法里十分常见的路径查找问题。
如果现在重走迷宫,你会用哪种方法呢?
是广度优先搜索、深度优先搜索?也许你会觉得这些都太简单了,你已经掌握了狄克斯特拉算法。那么A*算法呢?你会不会?


还有,为了不让老师和家长发现你们要捣蛋,你有没有试过和邻居家那小子打暗号?你们的暗号是怎么约定的?怎么防止大人发现解开暗号的办法呢?从算法的角度看,这就是最典(jian)型(lou)的安全和加密问题。


算法,本来就是充满童真的,是妙趣横生的。它是程序的骨骼,也是好奇心的彩蛋。学透一个算法就该像玩游戏玩到通关一样,是一个单纯而快乐的过程。
没错,这本书呈现的就是这样的算法。所以你说它是游戏书也没什么问题,反正都一样有趣!
如果你想用最开心的方法回顾经典算法,如果你想从游戏开始学习算法,如果你想在这个冬夜找回童年的快乐,那么你一定不能错过《我的第一本算法书》。