Ruby(開始入水)

2017/06/18 version 0.1
原文地址:致未來的程序猿

Fall in love

故事應該從2002年說起,那時我正在思考如何教人們學習編程的事,一種堪稱偉大的計算機語言Ruby正好適合去教如何學習編程。我是想說那時整個IT界都為Ruby這門強大、優(yōu)雅卻又不失趣味性的語言所振奮,同時在我看來Ruby也不失為學習編程的入門語言。

不過有一絲不便的是,那時還沒有太多為新手入門的Ruby相關資料,我們計算機團隊中一些組員就在討論想做些入門指導所需的參考書,同時這樣更有便于關于編程知識的教學。我想得很多關于入門指導資料的事,所以討論的時候我說的也越來越多,一個組員就向我提議,“克里斯,與其你說了那么多想法,為什么不直接寫個入門指導出來?” 因此我還真就這樣做了。

但現(xiàn)實是沒那么豐滿的。理論上那些好的想法我都有,但實際上對我這類已經(jīng)會編程的人來說很容易,但為一點從未沒學過程序的新人做一個指導書的確是個比我以為大得多的挑戰(zhàn)。

所幸有一點幫助了我,那些編程新人很容易聯(lián)系到我,同時我也經(jīng)常在他們編程遇到難題的時候幫助他們。我發(fā)現(xiàn)有許多新手都卡在了同一個問題上,我都要向他們再解釋一遍,重復工作很大,但值得欣慰的是那些新人編程能力變得越來越好。

幾年之后,我為新手們寫的入門指導資料逐步完善,所以今天我可以很開心得宣布這個任務已經(jīng)完成,之后我可以繼續(xù)把重點轉(zhuǎn)移到其他事情上去。不久遇到一個能將我所做的這些入門資料編成書籍出版的機會,我考慮到指導資料已經(jīng)基本上齊全了,應該沒有什么問題了。稍后我修改了幾處瑕疵,增加了更多練習內(nèi)容和教學例題,增加了幾個章節(jié),最后還發(fā)給50多個組員審核……

修編過程又經(jīng)過了一年,現(xiàn)在我認為這個指導資料可謂相當完善了,我想主要是因為在寫這本資料期間幫助過我的幾百個無私的人們……

這個網(wǎng)頁上的指導資料是最原始的版本,自從2004年沒有再變動,如果想找最新和最完善的,你可以去查詢已經(jīng)出版的書籍

—————————————————————————————————————

致教師們的教學思考

這里有幾個我一直堅持的指導原則,這些原則使得學習編程的過程更加自然順暢,盡管學習編程本身有一定難度。如果你們正在教育或者指導一些學生學習編程,下面這些原則可能會幫助到你們。

第一個原則是:我試著盡可能區(qū)分各種不同的概念和定義,這樣學生們將每次只需要記住一個概念。這種方法起初是挺困難的,但是當我做過幾次練習后開始慢慢變的容易。有些概念必須在教其他學習內(nèi)容之前就要提前告訴學生,當然我也知道這些概念的優(yōu)先差異有多么小。我的原則是提前編排好教學概念的順序,所以指導資料里每個新章節(jié)都會和之前的章節(jié)相關聯(lián)。

另一個我一直謹記于心的原則是只教一種解決某個問題的辦法。做為一個給從未學過編程的指導書來說這是一個明顯的好處。某種程度上只學會做一件事情的一種方法比學會兩種方法要簡單得多,可能另外一個更重要的好處是你教給新手越少的東西,他們越會在編程過程中更加有創(chuàng)造性和更聰明。本來編程就是為了解決某個問題,能夠在每個階段鼓勵他們想出更多解決問題的方法是很重要的。

我已經(jīng)強調(diào)了新手學習編程過程中了解不同概念的重要性,讓學生們用他們的直覺來引導你想表述的想法,而不只是靠這本指導書。面向?qū)ο蟮木幊虨榇颂峁┮粋€好的途徑。我在指導書前面幾章以“對象”和不同“種類的對象”來開始介紹,跳過那些無用的習慣用語。我不會說類似“Ruby中所有東西都是一個對象”或“數(shù)字和字符串是某種對象”,因為這些說法對一個新手來說沒任何意義。相反的,我會說成“字符串”(而不說成是“字符串對象”),而有時我更偏于將程序中某個類型說成“對象”。因此鑒于Ruby中所有類型都是對象,這使得我的一些工作方便了許多。

盡管我盡可能避免類似“00”(Object-Oriented)這樣術語的使用,我只是想確保如果新手們的確需要學一個新的術語,他們應該學習正確的那個(我不想讓他們再學一回,是吧?),因此我會使用“字符串”來稱呼相應的對象,而不是用“文本”,做到正確地稱呼相應的對象。

就指導書中的練習內(nèi)容而言,我自認為我能想到的就已經(jīng)是一些不錯的練習內(nèi)容了,但是這些練習越多越好。老實得說,我用了一半的時間試著想出這些有趣好玩的練習資料,令人厭煩的練習完全會扼殺掉任何對于編程的欲望,相應的好的練習資料會引發(fā)新手難以抑制的熱情。簡而言之,教師們在思考好的習題方面花費再多的時間也是值得的。

—————————————————————————————————————

關于本書原始資料

本指導資料的頁面(甚至包括本頁面)都是由一個大的Ruby程序自動生成的,所有代碼示例是自動運行的,而且顯示的輸出也是自動生成的。我想這是最好最簡單同時也是最酷的方式確保所有我呈現(xiàn)的代碼示例就是我所演示的那樣。你不需要擔心我可能只是復制了某個錯誤的示例的輸出,或者忘了測試某些代碼,所有代碼都已經(jīng)測試過了。


—————————————————————————————————————

致謝

最后我想感謝在Ruby討論組內(nèi)每個人貢獻的想法和對我的鼓勵,所有使得本書更加完善的審核者,我親愛的妻子,特別要感謝的是我主要的審核人,創(chuàng)造了這么優(yōu)秀語言的作者Matz(松本行弘),以及Pragmatic程序出版社!

如果你發(fā)現(xiàn)任何錯誤或拼寫問題,或者有評論、建議以及好的程序示例,請聯(lián)系我。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、異同對比選擇1、Python和ruby的相同點: * 都強調(diào)語法簡單,都具有更一般的表達方式。python是縮...
    沃倫蓋茨閱讀 4,297評論 2 24
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,932評論 25 709
  • 通常去電影院看電影周圍都會有很多人,花錢多,時間檔期有時候也不合適,甚至還會出現(xiàn)吵吵鬧鬧的情況,而在家看高清電影買...
    Shirley_1d8e閱讀 1,964評論 0 0
  • 今天是2017考研筆試結束的日子,距離我考研的那段日子已經(jīng)有兩年了。時隔這么長的時間,再次看到自己考完試之后在20...
    卡卡陽閱讀 550評論 5 6
  • l was a fear girl, full of concern about future before. W...
    江南佳人閱讀 469評論 0 0

友情鏈接更多精彩內(nèi)容