背景
編碼套路 這個(gè)概念是《程序員修煉之道:從小工到專(zhuān)家》的作者之一Dave Thomas提出的。Ruby開(kāi)始盛行的時(shí)候,Dave也成為了該語(yǔ)言的最重要的傳播者之一破托。那時(shí)他寫(xiě)了很多關(guān)于Ruby和Rails起源的哲學(xué)和市場(chǎng)語(yǔ)境的文章。他也因此學(xué)習(xí)了很多敏捷方法和概念。正是在這種背景下擂红,Dave提出了編碼套路的代碼學(xué)習(xí)技巧,并開(kāi)始推廣围小。
這個(gè)概念主要指的是昵骤,針對(duì)某一種特定技術(shù)或技能進(jìn)行重復(fù)性的練習(xí),從而將其熟練掌握肯适。套路(招式)這個(gè)概念借鑒于武術(shù)涉茧,指的是可以獨(dú)自或多人共同練習(xí)的一系列動(dòng)作、招式疹娶。當(dāng)然伴栓,這個(gè)詞還可以用來(lái)描述武術(shù)中的其他動(dòng)作,比如高度模擬實(shí)戰(zhàn)的練習(xí)等雨饺。
據(jù)維基百科介紹:
起初钳垮,套路是教授和練習(xí)武術(shù)的方法,通過(guò)這種途徑得以保存和傳承許多成功的戰(zhàn)斗技巧额港。練習(xí)套路饺窿,可以讓一組人通過(guò)系統(tǒng)的方式,而不是單人移斩、無(wú)序的方式肚医,進(jìn)行艱苦的武術(shù)訓(xùn)練。
武術(shù)中使用套路(招式)的主要目的向瓷,在于傳遞行之有效的技巧肠套,并且重復(fù)地訓(xùn)練。這可以讓學(xué)習(xí)者練成條件反射式地猖任、自然而然地做出這些動(dòng)作你稚。而要達(dá)到這個(gè)目的,關(guān)鍵不在于系統(tǒng)地練習(xí)朱躺,而是將動(dòng)作和技巧內(nèi)化刁赖,做到根據(jù)不同的需要進(jìn)行變化。
對(duì)編碼套路的態(tài)度
關(guān)于用這個(gè)方法來(lái)練習(xí)編程技巧长搀,人們對(duì)此有三種看法:鄙視宇弛,中立,贊成欣賞源请。中立的人群認(rèn)為并不能從這種反復(fù)編寫(xiě)同樣一個(gè)問(wèn)題的方法中學(xué)到什么枪芒,鄙視這種方法的人們也這么認(rèn)為轿钠,不過(guò)反對(duì)的程度更深。剩下來(lái)的便是欣賞這種方法的人了病苗,他們認(rèn)為反復(fù)編寫(xiě)同一個(gè)問(wèn)題疗垛,或者編寫(xiě)很多小的代碼程序例子,是有一定用處的硫朦。
我也贊成這種方法贷腕。我從去年開(kāi)始斷斷續(xù)續(xù)學(xué)習(xí)編程,中間犯的一個(gè)錯(cuò)誤就是練習(xí)少咬展,沒(méi)有及早的認(rèn)識(shí)到這是一門(mén)要在“干中學(xué)”的學(xué)科泽裳。第一次了解編碼套路,還是在猿助猿網(wǎng)站破婆,而接觸這種技巧的時(shí)候涮总,我已經(jīng)磕磕碰碰學(xué)習(xí)編程有大半年的時(shí)間了。
練習(xí)的重要性
練習(xí)祷舀,作為一種學(xué)習(xí)方法是適用各個(gè)領(lǐng)域的瀑梗,不僅僅限于武術(shù),還包括彈奏樂(lè)器裳扯、提升體育競(jìng)技水平抛丽、準(zhǔn)備演講和提升對(duì)語(yǔ)法和書(shū)寫(xiě)的掌握。業(yè)界知名程序員饰豺、《程序員的吶喊》的作者Steve Yegge亿鲜,就曾經(jīng)在一篇文章中提到了練習(xí)(鍛煉)的重要性。
如何練習(xí)編碼套路
Dave Thomas認(rèn)為可以將套路作為學(xué)習(xí)編程的一種技巧冤吨。方法很簡(jiǎn)單:每一個(gè)編碼套路蒿柳,都是一個(gè)簡(jiǎn)單的編碼難題,容易解決漩蟆,可以讓練習(xí)者不斷的嘗試垒探,直到完美。這樣做的目的爆安,就是幫助練習(xí)者每一次都能夠找到更好的解決方法叛复。練習(xí)者甚至可以對(duì)套路定下各種限制,比如說(shuō)要使用一種自己不常用的語(yǔ)言扔仓。
幫助編程學(xué)習(xí)者進(jìn)行套路練習(xí)的網(wǎng)站有很多。知道這類(lèi)編程練習(xí)網(wǎng)站之后咖耘,我做了一些搜索翘簇,收藏了一些國(guó)外程序員推薦的站點(diǎn),在這里推薦給大家儿倒。
- 賽馬網(wǎng)
- 虐姹#客網(wǎng)
- 杭電OJ
- LeetCode
- 猿助猿DAD:知乎上的朋友說(shuō)呜笑,這個(gè)網(wǎng)站的體驗(yàn)最好。
練習(xí)編碼套路彻犁,貴在堅(jiān)持叫胁、專(zhuān)注。當(dāng)然汞幢,練習(xí)到了一定的水平之后驼鹅,確實(shí)再做一些簡(jiǎn)單的題目,很難有較大的提高森篷。建議高水平的朋友输钩,往人工智能、大數(shù)據(jù)仲智、自然語(yǔ)言處理這些高階話(huà)題練習(xí)买乃。
編程派會(huì)怎么做
我還是一個(gè)初學(xué)者,所以我會(huì)繼續(xù)堅(jiān)持做編碼套路練習(xí)钓辆。每一個(gè)我覺(jué)得有一定難度剪验、可以延伸的套路,我都會(huì)詳細(xì)記錄下我的解法前联,或者找到網(wǎng)絡(luò)上更好的解法碉咆,與大家分享,一同學(xué)習(xí)編程蛀恩,一起進(jìn)步疫铜,爭(zhēng)取能夠成為黑段高手。這也是猿助猿開(kāi)設(shè)練習(xí)板塊的初衷双谆。