我一直擔(dān)任著公司游泳協(xié)會(huì)的教練啼染。主要負(fù)責(zé)教會(huì)員學(xué)習(xí)蛙泳和自由泳。夏天要到了焕梅,最近收到了一些新會(huì)員學(xué)游泳的咨詢迹鹅。
今年的新會(huì)員比較特殊,很多壓根不會(huì)游泳但說起游泳的要領(lǐng)都是如數(shù)家珍贞言,對(duì)蛙泳腿的“收翻蹬夾”四要領(lǐng)斜棚,自由泳的最優(yōu)劃水線路這些知識(shí)的了解程度甚至超過很多老會(huì)員。也許無數(shù)個(gè)無聊的夜晚该窗,他們通過網(wǎng)絡(luò)學(xué)習(xí)了整套的教學(xué)視頻弟蚀,也曾在床墊上練習(xí)過多次基礎(chǔ)動(dòng)作,唯一的問題就是沒有勇氣下水試試酗失。
我總開玩笑對(duì)他們說:“難道你們要等到在床墊上學(xué)會(huì)了游泳再下水嗎义钉?”
這些人實(shí)在是匪夷所思,但他們卻活生生地出現(xiàn)在我身邊规肴,IT怪咖的思維方式有時(shí)候就是這么奇葩捶闸。
不過夜畴,這件事讓我聯(lián)想到了很多簡書的朋友問我學(xué)習(xí)編程有什么捷徑。我總說最好的捷徑就是多敲代碼删壮。這就好像學(xué)游泳最好的捷徑就是下水去游斩启。其中的各種好處也只有親身體會(huì)過的人才能了解∽砉總結(jié)一下主要有四個(gè)功效兔簇。
1. 在敲代碼中記憶
我本人剛學(xué)C語言的時(shí)候,自己還沒有電腦硬耍。由于是利用寒假自學(xué)垄琐,也沒有實(shí)驗(yàn)室的機(jī)器可以用。你能想象我當(dāng)時(shí)有多痛苦经柴。死記硬背32個(gè)關(guān)鍵字都讓我頗費(fèi)了一番功夫狸窘。在沒有計(jì)算機(jī)的情況下學(xué)編程和學(xué)馬經(jīng)差別不大,除了死記硬背做選擇填空題之外沒有什么太好的方法坯认,我一度有了放棄的打算翻擒,因?yàn)橥耆珱]有樂趣可言。
后來有了電腦牛哺,我第一次把自己寫在紙上的代碼敲在計(jì)算機(jī)上運(yùn)行的時(shí)候陋气,那感覺變得完全不一樣了。雖然我在教科書里已經(jīng)見過Turbo C那個(gè)丑丑的黑框無數(shù)次了引润,但當(dāng)它出現(xiàn)在我眼前的顯示器上的一剎那我還是激動(dòng)得不行巩趁。那種感覺不能簡單地用一個(gè)“神奇”來形容,它充滿著神秘感淳附,讓我一下?lián)碛辛撕闷嫘南胍剿飨氯ァ?/p>
有了這份動(dòng)力议慰,對(duì)我而言學(xué)習(xí)C語言不再是痛苦而是享受。每次上機(jī)練習(xí)的時(shí)候我都感覺自己狀態(tài)特別好奴曙。之前記不住的關(guān)鍵字敲兩遍就自然記住了别凹。自己做過的每一個(gè)練習(xí)被深深地烙在了腦海里,想忘也忘不掉洽糟。仔細(xì)想想炉菲,敲代碼與閱讀教材最大的不同就是它是以試錯(cuò)為基礎(chǔ)的。在你不斷地輸入調(diào)試的過程中脊框,你所有的精力都被用到了你最容易出錯(cuò)的地方颁督,因此這樣的學(xué)習(xí)特別有效践啄。
2. 讓IDE幫你檢查代碼
為什么試錯(cuò)能提高學(xué)習(xí)效率呢浇雹?很多同學(xué)有這樣的精力,信心滿滿地輸入了一段代碼屿讽,覺得肯定不會(huì)有任何問題昭灵,結(jié)果IDE告訴編譯失敗吠裆。最郁悶的是報(bào)錯(cuò)信息還看不懂,你很抓狂烂完。這時(shí)候你能做的就是用自己僅有的知識(shí)進(jìn)行排查试疙。是不是什么地方少了個(gè)分號(hào)?是不是大括號(hào)沒有匹配抠蚣?是不是關(guān)鍵字寫錯(cuò)了祝旷?是不是頭文件沒有包含?是不是...?
也許最終你花了半個(gè)小時(shí)的時(shí)間終于發(fā)現(xiàn)是有個(gè)變量沒有初始化導(dǎo)致的錯(cuò)誤嘶窄。成功運(yùn)行之后你真想說臟話怀跛,但這半個(gè)小時(shí)讓你這輩子都不會(huì)再忘記變量要先初始化。
有時(shí)候編譯器告訴你代碼編譯成功柄冲,你很開心吻谋。可是運(yùn)行的時(shí)候卻彈出了錯(cuò)誤信息现横。一堆你根本看不懂得提示信息漓拾。你又郁悶了。你盯著IDE指出的錯(cuò)誤位置發(fā)呆戒祠,心想它究竟又在鬧什么脾氣骇两。最后實(shí)在想不到,你只能求助老師姜盈,結(jié)果是你的數(shù)組訪問越界了脯颜。從此你學(xué)會(huì)了要規(guī)范地使用for語句的條件控制。
這些就是上機(jī)練習(xí)的意義贩据。
3. 在調(diào)試中培養(yǎng)邏輯性思維
最難的還不是這些栋操。有時(shí)候你的代碼能夠成功運(yùn)行,沒有任何問題饱亮。當(dāng)你剛舒一口氣的時(shí)候矾芙,突然發(fā)現(xiàn)結(jié)果并不是你想要的。上機(jī)練習(xí)時(shí)常聽到這樣的自言自語:“怎么是3近上,應(yīng)該是5呀...”剔宪。
這個(gè)時(shí)候,你該發(fā)揮IDE的優(yōu)勢(shì)調(diào)試你的代碼了壹无。最常用的方法就是通過打斷點(diǎn)葱绒、單步調(diào)試的辦法跟著代碼的邏輯一步一步走,過程中要監(jiān)視著各個(gè)變量是如何變化的斗锭。這樣地淀,你就會(huì)在某一次循環(huán)中突然發(fā)現(xiàn)原來你有個(gè)環(huán)節(jié)沒有考慮周全。
不斷地這樣練習(xí)會(huì)讓你的邏輯思維能力越來越好岖是,而這個(gè)恰恰是編程能力最重要的組成部分帮毁。
4. 成就感就是動(dòng)力
這些過程是痛苦的实苞,很多人都倒在了這條痛苦的路上。但正因?yàn)檫^程痛苦烈疚,成功后才格外的喜悅黔牵。每當(dāng)看到自己千辛萬苦調(diào)試的程序成功地顯示出正確的結(jié)果,你一定想大聲歡呼出來爷肝。
工作多年的程序員們每次提交代碼的瞬間都是喜悅的猾浦,這一點(diǎn)從他們的表情和話語中就能感受得淋漓盡致。如果說什么讓這些程序員們對(duì)繁重的編碼工作欲罷不能的話灯抛,那一定是這些星星點(diǎn)點(diǎn)來之不易的成功的喜悅跃巡。
程序員們心中最大的優(yōu)越感就是覺得自己的工作是在改變世界。我想牧愁,改變世界的成就感足以讓任何人有毅力完成繁重而枯燥的編程學(xué)習(xí)素邪。不過你要習(xí)慣從現(xiàn)在的上機(jī)練習(xí)開始尋找這份成就感。
5. 最后
不要再糾結(jié)于教程上的某一個(gè)小小的知識(shí)點(diǎn)猪半,也許它并不影響你掌握一門能夠改變世界的軟件開發(fā)語言兔朦。當(dāng)你開始用鍵盤敲代碼的時(shí)候,每敲一個(gè)字符你就離成功更近了一步磨确,因?yàn)槟阕叩氖菍W(xué)習(xí)編程唯一的一條捷徑沽甥。
我是天花板,讓我們一起在軟件開發(fā)中自我迭代乏奥。
如有任何問題摆舟,歡迎與我聯(lián)系。