這本小書的目的是讓你起步編程。雖然書名說是“笨辦法”,但其實并非如此. 所謂的“笨辦法”是指本書教授的方式。在這本書的幫助下,你將通過非常簡單的練習學會一門編程語言。做練習 是每個程序員的必經(jīng)之路:
就是這樣了。剛開始這對你來說會非常難,但你需要堅持下去。如果你通讀了這本書,每晚花個一兩小時做做習題,你可以為自己讀下一本編程書籍打下良好的基礎。通過這本書你學到的可能不是真正的編程,但你會學到最基本的學習方法。
這本書的目的是教會你編程新手所需的三種最重要的技能:讀和寫、注重細節(jié)、發(fā)現(xiàn)不同。
很顯然,如果你連打字都成問題的話,那你學習編程也會成問題。尤其如果你連程序源代碼中的那些奇怪字符都打不出來的話,就根本別提編程了。沒有這樣基本技能的話,你將連最基本的軟件工作原理都難以學會。
為了讓你記住各種符號的名字并對它們熟悉起來,你需要將代碼寫下來并且運行起來。這個過程也會讓你對編程語言更加熟悉。
區(qū)分好程序員和差程序員的最重要的一個技能就是對于細節(jié)的注重程度。事實上這是任何行業(yè)區(qū)分好壞的標準。如果缺乏對于工作的每一個微小細節(jié)的注意,你的工作成果將缺乏重要的元素。以編程來講,這樣你得到的結(jié)果只能是毛病多多難以使用的軟件。
通過將本書里的每一個例子一字不差地打出來,你將通過實踐訓練自己,讓自己集中精力到你作品的細節(jié)上面。
程序員長年累月會的工作培養(yǎng)出一個重要技能,那就是對于不同點的區(qū)分能力。有經(jīng)驗的程序員拿著兩份僅有細微不同的程序,可以立即指出里邊的不同點來。程序員甚至造出工具來讓這件事更加容易,不過我們不會用到這些工具。你要先用笨辦法訓練自己,等你具備一些相關(guān)能力的是偶才可以使用這些工具。
在你做這些練習并且打字進去的時候,你一定會寫錯東西。這是不可避免的,即使有經(jīng)驗的程序員也會偶爾寫錯。你的任務是把自己寫的東西和要求的正確答案對比,把所有的不同點都修正過來。這樣的過程可以讓你對于程序里的錯誤和 bug 更加敏感。
你必須手動將每個練習打出來。復制粘貼會讓這些練習變得毫無意義。這些習題的目的是訓練你的雙手和大腦思維,讓你有能力讀代碼、寫代碼、觀察代碼。如果你復制粘貼的話,那你就是在欺騙自己,而且這些練習的效果也將大打折扣。
在你通過這本書學習編程時,我正在學習彈吉他。我每天至少訓練 2 小時,至少花一個小時練習音階、和聲、和琶音,剩下的時間用來學習音樂理論和歌曲演奏以及訓練聽力等。有時我一天會花 8 個小時來練習,因為我覺得這是一件有趣的事情。對我來說,要學好一樣東西,每天的練習是必不可少的。就算這天個人狀態(tài)很差,或者說學習的課題實在太難,你也不必介意,只要堅持嘗試,總有一天困難會變得容易,枯燥也會變得有趣了。
在你通過這本書學習編程的過程中要記住一點,就是所謂的“萬事開頭難”,對于有價值的事情尤其如此。也許你是一個害怕失敗的人,一碰到困難就想放棄。也許你是一個缺乏自律的人,一碰到“無聊”的事情就不想上手。也許因為有人夸你“有天分”而讓你自視甚高,不愿意做這些看上去很笨拙的事情,怕有負你”神童”的稱號。也許你太過激進,把自己跟有20多年經(jīng)驗的編程老手相比,讓自己失去了信心。
不管是什么原因,你一定要堅持下去。如果你碰到做不出來的加分習題,或者碰到一節(jié)看不懂的習題,你可以暫時跳過去,過一陣子回來再看。只要堅持下去,你總會弄懂的。
一開始你可能什么都看不懂。這會讓你感覺很不舒服,就像學習人類的自然語言一樣。你會發(fā)現(xiàn)很難記住一些單詞和特殊符號的用法,而且會經(jīng)常感到很迷茫,直到有一天,忽然一下子你會覺得豁然開朗,以前不明白的東西忽然就明白了。如果你堅持練習下去,堅持去上下求索,你最終會學會這些東西的。也許你不會成為一個編程大師,但你至少會明白程序是怎么工作的。
如果你放棄的話,你會失去達到這個程度的機會。你會在第一次碰到不明白的東西時(幾乎是所有的東西)放棄。如果你堅持嘗試,堅持寫習題,堅持嘗試弄懂習題的話,你最終一定會明白里邊的內(nèi)容的。
如果你通讀了這本書,卻還是不知道編程是怎么回事。那也沒關(guān)系,至少你嘗試過了。你可以說你已經(jīng)盡過力但成效不佳,但至少你嘗試過了。這也是一件值得你驕傲的事情。
你可以在不收取任何費用,而且不修改任何內(nèi)容的前提下自由分發(fā)這本書給任何人。但是本書的內(nèi)容只允許完整原封不動地進行分發(fā)和傳播。
Copyright (C) 2010 by Zed A. Shaw.