基友寫代碼總有一個想法辨萍,“這題我不會棋恼,讓我先看!飽锈玉!書爪飘!再寫代碼”。
這個觀念很難扭轉拉背,但是事實是师崎,任何時候,靠看書都是學不會代碼的椅棺。
最好的方法就是稍微看一下語言的特性和直觀外表犁罩,就著手寫代碼,肝肝肝淦淦淦两疚。
讓不才兼劣生逐條說出理由床估。
1.編程最需要的能力是什么?
是對計算機相關的知識儲備嗎诱渤?是XX年編程經(jīng)驗嗎顷窒?
都不是。編程最重要的,是解決未知鞋吉、復雜問題 的能力鸦做。
面對未知領域需要不發(fā)怵,能慢慢思考分析出一些切入點谓着,整理整個問題的脈絡泼诱。
面對復雜問題,能簡化它赊锚,先從整體審視治筒,再進入細節(jié)。一步步地完善解決方案舷蒲。
從認知心理學的角度講耸袜,就是通過編程的鍛煉,提高認知的復雜度牲平〉炭颍“復雜度越高,接觸新的纵柿、復雜的事物的時候蜈抓,就能與已有的認知結構點(知識點)產(chǎn)生鏈接,通過這些鏈接的指引昂儒,掌握新事物就變得容易沟使,也不易產(chǎn)生認知失調≡ò希”
做程序開發(fā)腊嗡,總是面臨新的需求,新的技術拾酝,新的框架燕少,新的語言,新的項目微宝。無論技術怎么更新棺亭,解決問題的能力總是能讓你快速適應,快速走入正軌蟋软。
很明顯镶摘,看書沒法鍛煉這個能力喔。
2.教科書并不擅長教學
教科書很大的缺點就是岳守,需要嚴謹凄敢,需要嚴格定義,易讀性可以隨意犧牲湿痢。
你可能在C語言的教科書上看過對形參這樣的定義:全稱為“形式參數(shù)”涝缝,是在定義函數(shù)名和函數(shù)體的時候使用的參數(shù)扑庞,目的是用來接收調用該函數(shù)時傳遞的參數(shù)。
渦則發(fā)拒逮?
這是教初學者的態(tài)度嗎罐氨?
這個說法,太形式化了滩援,太嚴謹了栅隐,人們去獲得一個初步的理解就需要思考很久了。文縐縐的名字很難靠直覺去理解玩徊,形式化的描述又不親民租悄,與其說是在教學,不如說在勸退恩袱,用艱澀的名詞把人嚇跑:“程序員這種月薪過萬的職業(yè)泣棋,不是你們這種弱鳥可以染指的∨纤”
這些文縐縐的名詞和形式化的描述聯(lián)合起來潭辈,光理解就非常困難了,要怎樣記住呢俩檬?就算你記住了萎胰,對你編程的幫助又有多大呢碾盟?
更何況棚辽,這些名詞的選取都是出于最初的編者、譯者的翻譯冰肴。受限于編者屈藐、譯者水平,這些名詞的選取未必是最好的熙尉。舉個例子联逻,還是“形參”和“實參”這兩個名詞,我覺得更好的描述是“綁定(到函數(shù)的)變量”和“自由變量”检痰。
總之包归,看書學不到編程思維,還容易把精力花在無關緊要的記憶和理解上铅歼。
3. 書太厚了
我曾聽聞一個傳聞公壤,IT出版社對書的厚度有一定的要求,必須要夠厚椎椰,夠充實厦幅。否則不允出版。動輒數(shù)百頁慨飘,十余萬字的書确憨,如何看完呢?如何記住呢?如何靈活運用呢休弃?
對于老手來說吞歼,有辦法。把自己的大腦當成一個解釋器塔猾,用自己運行代碼浆熔。如果能運行得通,那么這一章節(jié)的內容就算是掌握了桥帆。自然語言是模糊的歧義的医增,但是計算機的語言是精確的無二義的。十行代碼能描述的老虫,也許比千言萬語還多叶骨。
但是新手太難抓住重點了,眉毛胡子一把抓祈匙,看來看去看懵自己忽刽,也許只記住了非重點的只言片語。
4. 書的表述能力有限夺欲。
就算IT大牛寫的書跪帝,真的就是好書嗎?這又雙叒叕不一定了些阅。
對于新手來說伞剑,一本書要好好的分章節(jié),分解成許許多多小的問題仔細敘述市埋。
但是一個完全未知的問題黎泣,你最少要解釋清除以下5部分的內容:
a, 這是什么情況下會出現(xiàn)的問題?
b, 造成這個問題的(直接缤谎,間接)因素是什么抒倚?
c, 這個問題的表現(xiàn)(表象)是什么?
d, 這個問題的解決方案是什么坷澡?
e, 這個問題的特殊情況有哪些托呕?
教科書會把后兩個問題解釋得非常嚴格、標準频敛。
然后讀者懵逼于:這塔碼到底是在干什么项郊?這樣做有啥意義呢?學不會呀姻政!
結論
還是直接寫代碼吧呆抑!多思考,多谷歌汁展,不會了稍微查一查書鹊碍,抓住重點記憶厌殉。這比看書省時省力多了。
PS:以個人經(jīng)驗侈咕,我一開始就沒有糾結過高大上的名詞公罕。我大三都不知道什么是實參,什么是形參耀销,一切都是自然而然的運用和理解楼眷。我也不管是“面向對象的”,“面向過程的”熊尉,“命令式的”罐柳,“函數(shù)式的”。我也不管“設計模式”狰住。但是我對“面向對象編程的理解”张吉,起碼不弱于自夸XX年開發(fā)經(jīng)驗的老手了。