程序員請回答:哪個瞬間,你最想回到童年?


都說搞編程沒有不苦不累的,50%的程序員晚上幾點的北上廣深人家都見過,剩下50%的程序員不住北上廣深。
日復(fù)一日,你習(xí)慣了全方位浸泡在代碼里的生活,也習(xí)慣了自稱碼農(nóng)。編程虐你千百遍,你待編程如初戀。你說代碼就像種子,你要在編程 studio 里種滿希望。

沒關(guān)系,你是一個堅強的人、樂觀的人,代碼可以讓你流汗,但不能讓你流淚,算法可以讓頭疼,但不能讓你心疼。你要繼續(xù)編程……
可是,當(dāng)夜深人靜,你終于關(guān)上電腦時,望著濃得化不開的夜色,望著窗外沉睡的整個城市,在一瞬間,你也會感覺到小小的寂寞。

這一瞬間,你真想回到童年。
你想念小時候的冬日陽光,想念嘮叨的老師,想念一起搗蛋的朋友。你想念放學(xué)的鈴聲,你知道,迎著夕陽回家,很快能吃上媽媽的拿手菜……

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

這……怎么這么像小學(xué)寒假作業(yè)里的字謎游戲?你忍不住拿起那本書,好奇地翻了翻——于是,你打開了新世界的兒童專用門。
你看到了彩色的小木琴:

還有漢諾塔:

還有……這是什么五彩斑斕的小人?

還有益智連線、彩色鑰匙,像插片一樣的小圓點……程序員的桌子上怎么會有這樣的書呢?坐旁邊這家伙在背著你們大家看什么?
你翻過來一瞧,封面竟然是這樣的——

啥?你不敢相信自己的眼睛??纯催@乖巧的方開本,看看這萌萌的字體,看看這積木塊的同款顏色,這本書明明應(yīng)該叫做——

難道不是嗎?
也許你忘記了,也許很多人都忘記了,算法,本來就有接近游戲的一面。
算法是計算或解決問題的步驟,也是達(dá)成特定目標(biāo)的步驟。而游戲的過程也是按規(guī)則完成任務(wù),達(dá)成目標(biāo)的過程。
舉個例子,游戲室里總能見到的漢諾塔,你小時候玩到了第幾環(huán)?每次只能移動一個圓盤,小圓盤一定要在大圓盤的上面。把所有圓盤從最左邊移動到最右邊,你就贏了。
其實無論有多少環(huán),你都可以贏得這個游戲,秘訣就是遞歸算法


再舉個例子,你有沒有和小伙伴在紙上比賽過走迷宮?誰先走通誰就贏了。這正是算法里十分常見的路徑查找問題。
如果現(xiàn)在重走迷宮,你會用哪種方法呢?
是廣度優(yōu)先搜索、深度優(yōu)先搜索?也許你會覺得這些都太簡單了,你已經(jīng)掌握了狄克斯特拉算法。那么A*算法呢?你會不會?


還有,為了不讓老師和家長發(fā)現(xiàn)你們要搗蛋,你有沒有試過和鄰居家那小子打暗號?你們的暗號是怎么約定的?怎么防止大人發(fā)現(xiàn)解開暗號的辦法呢?從算法的角度看,這就是最典(jian)型(lou)的安全和加密問題。


算法,本來就是充滿童真的,是妙趣橫生的。它是程序的骨骼,也是好奇心的彩蛋。學(xué)透一個算法就該像玩游戲玩到通關(guān)一樣,是一個單純而快樂的過程。
沒錯,這本書呈現(xiàn)的就是這樣的算法。所以你說它是游戲書也沒什么問題,反正都一樣有趣!
如果你想用最開心的方法回顧經(jīng)典算法,如果你想從游戲開始學(xué)習(xí)算法,如果你想在這個冬夜找回童年的快樂,那么你一定不能錯過《我的第一本算法書》。