我所說的一切都可能是錯(cuò)的碟狞!
即使你贊同我的觀點(diǎn)耕姊,你的生活也不會(huì)因此有任何改變!
除非——你采取了相應(yīng)的行動(dòng)棍丐。
(這是書先生在簡書的第64篇文章误辑。本文約2100字,請花5分鐘來閱讀骄酗。)
引子
這是一篇可能改變你學(xué)習(xí)和工作認(rèn)知的短文——此為引子稀余。
何謂算法思維
算法是個(gè)數(shù)學(xué)和計(jì)算機(jī)科學(xué)術(shù)語,指對解題方案的準(zhǔn)確而完整的描述趋翻。對計(jì)算機(jī)來說,算法是一系列清晰的指令盒蟆,使得對于滿足一定規(guī)范的輸入踏烙,計(jì)算機(jī)能在有限時(shí)間內(nèi)給出所要求的的輸出。
提到算法历等,很多人想到的就是其是否有效(是否能解決問題讨惩?)以及其空間復(fù)雜度(運(yùn)行時(shí)需要占用多少內(nèi)存空間?)和時(shí)間復(fù)雜度(能在多長時(shí)間里解決問題寒屯?)荐捻。
能夠設(shè)計(jì)出占用空間小、解決問題快的算法是每一個(gè)程序猿孜孜不倦的追求寡夹。然而处面,在書先生看來,這些都不是算法思維的精髓菩掏。算法思維的精髓是其解決問題的步驟性魂角。
一下就得出結(jié)果的不叫算法。比如我們都背過九九乘法表智绸,這時(shí)有人問你野揪,7*9等于多少访忿,你根據(jù)記憶直接給出答案63。這不是算法斯稳。
什么是算法呢海铆?你發(fā)現(xiàn),每一個(gè)非零的個(gè)位數(shù)和9相乘后的結(jié)果有一定規(guī)律挣惰。假設(shè)這個(gè)數(shù)為n卧斟,則9*n的結(jié)果是一個(gè)這樣的兩位數(shù):它的十位等于n-1,它的個(gè)位等于10-n通熄。掌握了這個(gè)規(guī)律唆涝,只要知道n的值,我們只需要通過兩步就可以得出9*n的值唇辨。這是算法廊酣。
可能有人會(huì)問,第二種方法不是比第一種更麻煩嗎赏枚?第一種直接出答案亡驰,第二種還要經(jīng)過兩步才能出答案。如果只看步數(shù)饿幅,我們可能會(huì)得出這樣錯(cuò)誤的結(jié)論凡辱。但是如果我們把目光移向每一個(gè)步驟的困難程度,算法的優(yōu)勢就出來了栗恩。
第一種方法需要我們記住九九乘法表透乾,這并不是一件容易的事情,它需要我們對加法和乘法的概念都有一定了解磕秤。第二個(gè)方法雖然有兩步乳乌,但兩個(gè)步驟都是簡單的加減法。這意味著市咆,只要我們步驟/路徑安排得當(dāng)汉操,再復(fù)雜的問題都可以分解為有限個(gè)簡單的問題來解決。這就是算法思維的精髓蒙兰,也是只會(huì)識別兩個(gè)數(shù)字的計(jì)算機(jī)能夠完成那么多復(fù)雜任務(wù)的根本原因磷瘤。
讓我們再往前面走一步。算法思維精髓中的精髓是搜变,每個(gè)步驟只為下一步負(fù)責(zé)采缚,而無需為最終結(jié)果負(fù)責(zé)。達(dá)成最終結(jié)果的是步驟的調(diào)度痹雅,而和任何一個(gè)步驟都沒有直接關(guān)系仰担。
明白這一點(diǎn),無論是工作還是學(xué)習(xí),我們都會(huì)少犯很多錯(cuò)誤摔蓝。下面赂苗,請?jiān)试S我分別用一個(gè)例子來闡釋一下這個(gè)理念。
算法思維和求職
你問很多人贮尉,寫求職信是為了什么拌滋,我相信絕大多數(shù)人的回答都是為了找工作。這就是沒有算法思維的體現(xiàn)——從步驟1直接到結(jié)果猜谚。
問題是败砂,現(xiàn)實(shí)世界不是這樣運(yùn)行的。在發(fā)出求職信和求職成功之間還隔著一個(gè)面試魏铅。除非你是名聲在外的行業(yè)精英昌犹,是獵頭挖取的對象,否則這個(gè)步驟是省不了的览芳。
按照算法思維斜姥,每一個(gè)步驟只對下一個(gè)步驟負(fù)責(zé),那么寫求職信的目的應(yīng)該是獲取面試機(jī)會(huì)沧竟。這有什么區(qū)別呢铸敏?區(qū)別大了!
找工作需要的是滿足用人單位的要求悟泵。如果求職信的目的直接瞄向找工作杈笔,那么其內(nèi)容會(huì)是對自身能力的詳細(xì)介紹。
獲取面試機(jī)會(huì)需要的是引起用人單位的好奇心糕非。沖著這個(gè)目的去蒙具,太詳細(xì)可能不見得是件好事,留點(diǎn)懸念或許對你更有利朽肥。比如你可以在求職信里提到自己“通過自創(chuàng)的3C法店量,在兩個(gè)月就完成了228萬3千400元(對,數(shù)字越詳細(xì)越好)的銷售額”鞠呈。點(diǎn)到為止,不要解釋什么叫3C法右钾。如果對方想知道蚁吝,那么恭喜你,你的算法可以進(jìn)入下一個(gè)步驟了舀射。
算法思維和英語學(xué)習(xí)
從教十余年窘茁,校內(nèi)校外教了不少學(xué)生。我喜歡問學(xué)生這樣一個(gè)問題:你跟著我學(xué)英語的目的是什么脆烟?幾乎所有學(xué)生的回答都是:學(xué)好英語山林。
有這個(gè)志向是很值得鼓勵(lì)的,但可惜這個(gè)答案不正確邢羔。為什么呢驼抹?
讓我們用算法思維來捋一遍桑孩。學(xué)好英語是我們要解決的問題。解決這個(gè)問題需要若干個(gè)步驟框冀,比如入門流椒、大量輸入、在輸出中修正提高等明也,而跟著老師學(xué)只是其中一個(gè)步驟宣虾。
在《中國人學(xué)英語最常犯的錯(cuò)誤(方法篇2)》,我提到温数,老師的主要作用就是引導(dǎo)學(xué)生快速入門绣硝,且只有入門階段才需要老師。入門過后的下一個(gè)階段是提高階段撑刺,主要方法是大量輸入鹉胖。
因此,本著每個(gè)步驟只對下一個(gè)步驟負(fù)責(zé)的原則猜煮,在跟著老師學(xué)習(xí)的階段次员,設(shè)定目標(biāo)不應(yīng)是學(xué)好英語,而是盡快獲取能夠獨(dú)立進(jìn)行大量輸入的能力王带。掌握了英語的框架淑蔚,大量輸入的階段是沒有必要跟著老師做的。(這個(gè)階段需要的是知識庫和信息檢索能力愕撰,我以后再專門論述英語學(xué)習(xí)每個(gè)階段不同的要求刹衫。)
這是真正負(fù)責(zé)任的老師應(yīng)該做的事情——讓學(xué)生盡快獲得獨(dú)立學(xué)習(xí)的能力。換句話說搞挣,學(xué)生能越早離開老師獨(dú)立學(xué)習(xí)带迟,這個(gè)老師就越厲害,他所采用的的教學(xué)方法和教學(xué)體系也越有效囱桨。
一般情況下仓犬,學(xué)生不會(huì)在剛離開老師時(shí)就是高手。學(xué)生離開舍肠,只是意味著這個(gè)學(xué)生將來能夠獨(dú)立學(xué)習(xí)和研究了搀继,至于以后的發(fā)展,取決于這個(gè)學(xué)生在后續(xù)階段下的功夫和能夠獲取的資源了翠语。
就像學(xué)開車一樣叽躯,很少有人拿到駕照時(shí)就是高手。更常見的情況是肌括,拿到駕照很久后都不敢上高速点骑。不過,雖然開得不好,但你會(huì)開車了黑滴。這就是本質(zhì)的區(qū)別憨募,這也是你跟著教練或者家人學(xué)車的主要目的——不是直接奔高手去,而是先上路跷跪。
不同的目的決定了不同的行為方式馋嗜。如果直接沖著學(xué)好英語去,你最終可能陷入碎片化學(xué)習(xí)的陷阱吵瞻,因?yàn)椤皩W(xué)好”包含的東西太多了葛菇,且沒有明確的路徑。
但是如果你的目的是為自學(xué)打好基礎(chǔ)橡羞,你的選擇就很明確了:一個(gè)能夠幫助你快速打下基礎(chǔ)眯停、建立框架的老師和課程,讓自己在短時(shí)間內(nèi)具備自學(xué)能力卿泽。這樣做莺债,雖然成為高手還需要積累,但路徑清晰签夭、階段性目標(biāo)明確齐邦、可執(zhí)行性高——這,正是算法思維的威力第租。
思考題
下面是一個(gè)思考題:
如果將算法思維用于撩妹兒措拇,和妄圖一步到位的強(qiáng)撩有什么區(qū)別呢?請舉例說明慎宾。
【作者簡介】
書先生和路夫人丐吓,80后大學(xué)教師一對。
書先生語言老司機(jī)趟据,玩轉(zhuǎn)英語券犁、德語、Python計(jì)算機(jī)編程汹碱;
路夫人旅游達(dá)人粘衬,足跡遍及歐洲、美洲咳促、亞洲和大洋洲色难!
讀萬卷書、行萬里路等缀、過精彩人生!