高中階段,我的物理一直很差,好在其他科目還算可以,才能保證總成績(jī)不至于太差。究其原因,我現(xiàn)在回頭看,當(dāng)時(shí)真心不明白和糾結(jié)于問題大抵如下:- 現(xiàn)實(shí)中我怎么從來沒見過絕對(duì)光滑的地面?
在我對(duì)這些看似課程不相關(guān)問題模棱兩可、抓耳撓腮的時(shí)候,老師早就講到了別的知識(shí)點(diǎn)。這也導(dǎo)致我一步跟不上,步步跟不上。這還沒完,在高考結(jié)束 16 年后的今天,我還偶爾被夢(mèng)中:“小球滑動(dòng)、絕對(duì)光滑、物理考試不及格被老師談話” 的場(chǎng)景驚醒嚇出一身冷汗。我對(duì)于高中物理老師的印象大致就是:“腦門發(fā)亮,每次上課都帶一瓶飲料,講的很好,但是我著實(shí)聽不懂,我也不記得老師的名字了,姓也忘記了”。如果再深入分析,其實(shí)絕大多數(shù)都是我自己的原因。為什么別的同學(xué)不糾結(jié)這些問題?為什么很多同學(xué)都能考到接近滿分?在鄉(xiāng)鎮(zhèn)中學(xué)應(yīng)試教育的歲月,老師和同學(xué)們關(guān)注都是:會(huì)做題、拿高分。自己的刨根問底和苛求老師的通俗易懂的講解顯得是那么的“另類”和“多余”。這個(gè)問題到了大學(xué)和研究生階段也沒有改觀,當(dāng)然不再是物理(很慶幸我們計(jì)算機(jī)專業(yè)大學(xué)不用學(xué)物理)。大學(xué)里學(xué)習(xí)核心專業(yè)課《數(shù)據(jù)結(jié)構(gòu)》、研究生核心專業(yè)課《算法設(shè)計(jì)與分析》等課程,感覺老師基本都是照本宣科,能把書上的概念講清楚,但是沒有講清楚算法背景、起源、應(yīng)用場(chǎng)景等,更鮮有老師結(jié)合現(xiàn)實(shí)世界例子講解的通俗易懂。還好后來的我不再有高中的“執(zhí)念”、“偏執(zhí)”,采取了下面的幾招,才算搞定個(gè)七七八八,至少找工作筆試面試都還不錯(cuò)。- 去找其他的書參考,比如:《大話數(shù)據(jù)結(jié)構(gòu)》、《圖解算法》系列書學(xué)習(xí),這些書能把復(fù)雜問題講的淺顯易懂,且讀了也不犯困。
- 去找國(guó)內(nèi)外頂級(jí)的公開課學(xué)習(xí),比如:我學(xué)習(xí)北大張銘老師的《數(shù)據(jù)結(jié)構(gòu)與算法》,學(xué)習(xí)了哈佛大學(xué)《CS50 計(jì)算機(jī)科學(xué)導(dǎo)論》公開課、MIT《算法導(dǎo)論》公開課。
- 去自己敲代碼實(shí)踐,比如:為了備戰(zhàn)筆試、面試,我將自己實(shí)踐梳理的代碼整理為博客《數(shù)據(jù)結(jié)構(gòu)之步步為贏》專輯系列。
我印象最深的是 CS50 課的教授為了講解二分查找的“撕書”視頻,讓我身臨其境感到震撼,這或許是“通俗易懂”的最高境界,看了一遍一輩子忘不了的“肌肉記憶”效果,太形象、太生動(dòng)了。我特意從移動(dòng)硬盤找到了當(dāng)時(shí)聽課的視頻,現(xiàn)在看依然回味無窮,撕書現(xiàn)場(chǎng)截圖如下: 說了那么多,感觸最深的是:能把基礎(chǔ)原理講的通俗易懂絕非易事,需要非常深入的思考、提煉、練習(xí)和總結(jié)。由于數(shù)據(jù)結(jié)構(gòu)和算法的重要性,工作之后我也持續(xù)關(guān)注相關(guān)的動(dòng)態(tài),尤其關(guān)注有什么新書、教程能把這種基礎(chǔ)理論講的通俗易懂,我認(rèn)為《漫畫算法》、極客時(shí)間的《數(shù)據(jù)結(jié)構(gòu)與算法》課系列算是近幾年做的比較好的。前兩天刷公眾號(hào)消息,偶然間看到諸葛越老師的新書《未來算法》的發(fā)布,IT圈子的大V吳軍、沈向洋、王小川寫的推薦語,令我眼前一亮,當(dāng)即下單買入。現(xiàn)在已全部讀完,的確不負(fù)所望,是一本可讀性非常強(qiáng)的科普書。 作者牛是書好的前提,作者諸葛越老師本科:清華、碩博:斯坦福,博士導(dǎo)師剛獲得2021年圖領(lǐng)獎(jiǎng)、諸葛越是 Google 創(chuàng)始人之一謝爾蓋·布林的同學(xué)、前Hulu全球副總裁、兩個(gè)孩子一個(gè)讀劍橋大學(xué)、一個(gè)讀芝加哥大學(xué)、《魔鬼老大、天使老二》暢銷書作者,應(yīng)該是國(guó)內(nèi)外不多見的計(jì)算機(jī)專家 + 育兒專家的綜合體。可能國(guó)內(nèi)能與之比肩的就是《數(shù)學(xué)之美》、《浪潮之巔》的作者吳軍博士.....《未來算法》脈絡(luò)非常清晰,如下的圖示貫穿全書全部章節(jié),自頂向下的逐個(gè)展開講解。 區(qū)別于國(guó)內(nèi)任何一本教科書的先算法概念、時(shí)間復(fù)雜度、鏈表、棧、隊(duì)列、樹、圖、排序等的章節(jié)結(jié)構(gòu),《未來算法》將這些零散的知識(shí)點(diǎn)全都打散、掰開揉碎、結(jié)合四大算法(排序、分類、搜索、遞歸)、四大思維(分解、抽象、算法、模式識(shí)別)的脈絡(luò)講解,非常新穎。欣慰的是:本書零代碼,作者將看似復(fù)雜的算法結(jié)合現(xiàn)實(shí)生活衣(抽屜存放衣物類比棧)、食(炒雞蛋順序類比分解問題)、住(酒店逃生只帶走手機(jī)問題類比貪婪算法)、行(公交車導(dǎo)航線路類比計(jì)算機(jī)抽象問題)等結(jié)合起來,其實(shí)想想這些問題我也都經(jīng)歷過,但是我為什么沒有想到?以此維度思考反觀作者,更能體現(xiàn)作者的細(xì)膩、縝密、細(xì)致入微的觀察、深入淺出(作者解釋深入淺出:對(duì)于一個(gè)問題,你想透了才能真正理解)的講解,來源于生活、抽象于生活、升華于生活的見地。很多例子還會(huì)讓人感覺用的恰到好處,比如:難能可貴的是:作者還在每一章節(jié)作為做了升華。比如:- 模式識(shí)別方式認(rèn)清本質(zhì)、識(shí)別規(guī)律并預(yù)測(cè)未來。
這些都是我非常喜歡的講解方式,基于現(xiàn)實(shí)世界的小問題、生活中的小場(chǎng)景,展開論述,零公式、零代碼,引出一個(gè)個(gè)的知識(shí)點(diǎn),非常引人入勝,每一小節(jié)后面還提出一些發(fā)散性問題,進(jìn)一步吸引讀者思考以加深對(duì)概念的“反芻”理解。更難能可貴的是:書中有大量的、形象化的插圖輔助理解概念且作者將書中所有知識(shí)點(diǎn)以腦圖的一頁(yè)紙方式附贈(zèng)呈現(xiàn)。這就是我一直提倡的知識(shí)的“點(diǎn)、線、面、體”的學(xué)習(xí)方式,我深知這會(huì)非常耗費(fèi)時(shí)間,但,相信作者是站在高處俯瞰全局才會(huì)有了這般格局和視野,值得借鑒和學(xué)習(xí)。為便于未來的我復(fù)習(xí),我將書中的好奇點(diǎn)以及感興趣的問題或定義梳理如下:什么是計(jì)算思維?計(jì)算思維,簡(jiǎn)單的說就是計(jì)算機(jī)怎么解決世界的問題。它包括幾個(gè)部分:把復(fù)雜問題分解成簡(jiǎn)單問題,找出重復(fù)的模式,把物理世界的信息抽象表示成計(jì)算機(jī)能夠理解的信息和很多約定俗成的算法。計(jì)算思維主要包括四個(gè)方面:分解問題、抽象、算法、模式識(shí)別。- 分解問題、抽象、模式識(shí)別:能幫助人們用算法來表示生活中的問題。
計(jì)算思維是貫穿編程的底層思維,分解問題是計(jì)算思維的核心,排序算法、分類算法、搜索算法、遞歸算法是基石,數(shù)據(jù)結(jié)構(gòu)和模式識(shí)別是架構(gòu),以上支撐著未來前景無限的 AI 等領(lǐng)域。計(jì)算思維四種思維之一——分解思維拆解復(fù)雜問題,直到復(fù)雜問題成為可重復(fù)的簡(jiǎn)單問題。分而治之、各個(gè)擊破是兵家常用的策略。分解問題就是分治法。當(dāng)我們把一個(gè)大問題分解成小問題,再分解成具體的步驟之后,我們就可以用一種計(jì)算機(jī)語言把這些步驟表示出來,指導(dǎo)計(jì)算機(jī)做事。計(jì)算思維四種思維之二——抽象思維抽象就是在與計(jì)算機(jī)對(duì)話時(shí),刪除物理空間和時(shí)間細(xì)節(jié),以集中解決關(guān)鍵的問題。抽象能力,是一種去偽存真的核心能力。我們生活中有太多的細(xì)節(jié),雖然它們讓生活有了諸多色彩,但在解決問題方面,很多細(xì)節(jié)是不必要的。愛因斯坦說:“當(dāng)你清楚的定義一個(gè)問題的時(shí)候,你已經(jīng)解決了百分之九十了”。抽象是幫助我們把問題想清楚的強(qiáng)大工具。計(jì)算思維四種思維之三——算法思維計(jì)算機(jī)的算法就是一系列簡(jiǎn)單確定的操作來完成一項(xiàng)標(biāo)準(zhǔn)任務(wù)。算法是計(jì)算機(jī)用來解決問題的基本單元。算法是流程化的、可調(diào)用的、邏輯清晰(足夠清晰、沒有歧義)的。- 重復(fù)性。重復(fù)執(zhí)行,直到某一條件滿足后結(jié)束。
- 完整性。僅僅正確還不夠,還要保證完整(都要覆蓋到)。
計(jì)算思維四種思維之四——模式識(shí)別模式識(shí)別,就是識(shí)別出哪些問題有共性,可以用同一個(gè)方法(比如排序)來解,這樣我們就可以把這些問題交給計(jì)算機(jī)算法,讓它重復(fù)做,做成千上萬變。對(duì)簡(jiǎn)單的模式給予合適的輸入和輸出,可以解決復(fù)雜的問題。比如:抖音不是給一個(gè)人推薦視頻,它的算法是給一億人推薦視頻。每個(gè)人看到的內(nèi)容是不一樣的,形式和方法卻是一樣的。數(shù)據(jù)結(jié)構(gòu)和算法的關(guān)系計(jì)算機(jī)需要有一些地方存東西,計(jì)算機(jī)把這些“東西”叫數(shù)據(jù),存放“東西”的地方和方式,就是數(shù)據(jù)結(jié)構(gòu)(隊(duì)列、堆棧、鍵值對(duì)、圖等)。算法的有效性依賴于數(shù)據(jù)結(jié)構(gòu),用對(duì)了數(shù)據(jù)結(jié)構(gòu),算法就會(huì)更快、更好。最佳停止問題最佳停止問題的場(chǎng)景是:你有一系列可能選擇的目標(biāo),你可以一個(gè)一個(gè)地檢驗(yàn),記住他們的特點(diǎn)和優(yōu)點(diǎn),給他們打分。但是你看過了就不能回頭了。問題是:你什么時(shí)候做決定,是最佳的選擇呢?這個(gè)最佳選擇的答案是:37%。也就是說,在你所有的可能選擇中,前面 37% 不要選,用來積累數(shù)據(jù),建立你對(duì)選擇對(duì)象質(zhì)量的評(píng)估標(biāo)準(zhǔn),讓你知道什么是好的,什么是不好的。從第38%個(gè)開始,你就轉(zhuǎn)成開放的可以做決定的狀態(tài)。這時(shí)候,你如果遇到比前面看到的都更好的選項(xiàng),你就可以做出選擇。基于作者引出最佳停止問題的定義我浮想聯(lián)翩,讓我想到 20 多年前左右撿甜瓜的場(chǎng)景。當(dāng)時(shí)我們幾個(gè)小孩在一塊甜瓜地旁邊的路上玩,大點(diǎn)的甜瓜都讓瓜農(nóng)大爺(種瓜的主人)收走了,只剩下一些小的,不過由于瓜農(nóng)大爺撿拾的匆忙,可能還會(huì)剩下大點(diǎn)的甜瓜。天快黑了,瓜農(nóng)大爺說:你們小孩去里面撿吧,但等下一輛車來了,你們就出來。實(shí)際上下一輛車也就十來分鐘的時(shí)間。這時(shí)候,我們都有一種如獲至寶的感覺,我們幾個(gè)小孩一人一趟的去找,由于是徒手,加上小孩手小,最多只能拿一個(gè)瓜。絕大多數(shù)小孩和我一樣,明明看到有相對(duì)大的,但沒有選擇,總感覺后面可能還有更大的,最后眼看著下一輛車要來了,我們中的絕大多數(shù)小孩(包括我)只撿了最后那一刻的那一個(gè)相對(duì)小的瓜,灰溜溜的從瓜田里跑了出來。我印象很深,當(dāng)時(shí)有一個(gè)小女孩撿到了最大的瓜。她的撿拾方法是:撿到一個(gè)相對(duì)大的瓜,就抱著不放,看后面如果有大的就換,如果沒有大的就一直抱著。當(dāng)時(shí),我就在反思:為什么我只撿到一個(gè)小瓜?直到今天看這本書我才恍然大悟,原來這是個(gè)最佳停止問題。故事還沒有結(jié)束,那個(gè)小女孩,后來是我的初中同班同學(xué)加同桌,再后來成為我們村里唯一的復(fù)旦大學(xué)女博士。......優(yōu)化與最優(yōu)最優(yōu),所有可能的解里面最佳的一個(gè)。優(yōu)化,是一個(gè)動(dòng)詞,是把解決方案不斷變好的過程。是計(jì)算思維的核心概念,它是計(jì)算和數(shù)據(jù)的根本區(qū)別所在,也是我們?nèi)粘I钪蟹浅S杏玫姆椒ā?/span>優(yōu)化的精髓是要在有限的時(shí)間內(nèi),用有限的資源找到針對(duì)一個(gè)問題的可以接受的解決方案。優(yōu)化往往追求時(shí)間和空間的平衡。優(yōu)化可能導(dǎo)致最優(yōu)解的出現(xiàn),但是很多時(shí)候,只是找到一個(gè)可以接受的比較好的解。如果我們對(duì)一件事的價(jià)值沒有想清楚,那我們應(yīng)當(dāng)先好好回答“什么對(duì)我更重要”這個(gè)如何衡量的問題。什么是未來算法?學(xué)會(huì)了計(jì)算思維,你可以看透物聯(lián)網(wǎng)世界和 AI 是怎么運(yùn)作的,你也可以學(xué)會(huì)了一種解決大規(guī)模復(fù)雜問題的方法。這不是很有趣嗎?對(duì)未知的好奇、對(duì)問題的好奇、對(duì)錯(cuò)誤的好奇、對(duì)難題的好奇......小結(jié)一本科普讀物的成書相對(duì)專業(yè)書籍難度很大,正如作者所說:“這是專業(yè)知識(shí)的凝結(jié)”。一本計(jì)算機(jī)專業(yè)的科普書籍能結(jié)合 N 多生活中的實(shí)例深入淺出、通俗易懂的講解,難度不可謂不大。但,作者游刃有余、毫無保留的都做到了。很期待作者還有類似的更多書籍的出版。計(jì)算思維不止要融入我們的編程工作中,還要融入到我們的日常生活,更要融入我們計(jì)算機(jī)人的血脈,以其指導(dǎo)我們的學(xué)習(xí)、工作、生活,我們會(huì)變得條理清晰、涇渭分明、豁達(dá)通透。能把復(fù)雜的問題用大白話的語言結(jié)合生活的點(diǎn)滴案例講解清楚,絕非一朝一夕之功!我自己每周都寫博客,深知講解清楚一個(gè)問題、一個(gè)概念的難度,作者的講解方式值得我深入學(xué)習(xí)甚至是終身學(xué)習(xí)。我還有很長(zhǎng)很長(zhǎng)的路要走,還需要讀的書還有很多很多,還需要學(xué)習(xí)的知識(shí)還有很多很多.......推薦: 你不得不讀的好書 ——《此生未完成》讀后感 有時(shí)間嗎?看本書吧 《一年頂十年》干貨讀書筆記 哎!如果早十年讀這本書…… 認(rèn)知升級(jí)——不做開始愛好者! 爭(zhēng)當(dāng) 2% 的人——《智能時(shí)代 · 大數(shù)據(jù)與智能革命重新定義未來》讀書筆記 中國(guó)最大的 Elastic 非官方公眾號(hào)
|