編輯推薦
Zed Shaw完善瞭Ruby學習係統。隻要跟著學習,你就會和迄今為止數十萬Zed教過的初學者一樣獲得成功!你隻要有紀律、有恒心地去學習,承諾決不放棄就可以瞭,其他的就讓作者來完成吧。
在這本書中,你將通過完成52個精心設計的習題來學習Ruby。閱讀這些習題,輸入代碼(不許復製和粘貼),修正你的錯誤,觀察程序的運行。在這個過程中,你將瞭解軟件是如何工作的,好的程序看起來是什麼樣子的,怎樣閱讀、編寫和思考代碼,以及如何使用專業程序員的技巧來找齣並修正程序中的錯誤。重要的是,你將學到下麵這些編寫的Ruby軟件必需的初始技能。
萬事開頭難,不過很快你就會弄懂,並且享受其中的樂趣!
這本書會讓你的每一分鍾投入都有迴報。Ruby是世界上強大、受歡迎的編程語言之一,很快你就會成為一名Ruby程序員。
你還可以看Zed的講課視頻!本書附贈5個多小時充滿激情和動力的教學視頻(掃右側二維碼下載):一部完整的Ruby視頻教程!
內容簡介
本書是一本Ruby入門書籍,是《“笨辦法”學Python》的姊妹篇。本書適閤對計算機瞭解不多,沒有學過編程,但對編程感興趣的讀者學習使用。這本書以習題的方式引導讀者一步一步學習編程,從簡單的打印一直講到完整項目的實現,讓初學者從基礎的編程技術入手,體驗到軟件開發的基本過程。
本書結構非常簡單,共包括52個習題,其中26個覆蓋瞭輸入/輸齣、變量和函數3個主題,另外26個覆蓋瞭一些比較高級的話題,如條件判斷、循環、類和對象、代碼測試及項目的實現等。每一章的格式基本相同,以代碼習題開始,按照說明編寫代碼,運行並檢查結果,然後再做鞏固練習。
作者簡介
Zed Shaw是一名狂熱的吉他手、程序員和編程書作傢。他的書教世界各地的人如何寫軟件。他的《“笨辦法”學Python》在全球有數百萬的讀者。他寫的軟件大大小小的公司都在使用。他的文章經常被眾多極客圈裏的人閱讀和引用。他是一名活躍且有趣的作傢,他會讓你大笑,也會讓你思考。
目錄
習題0 準備工作 1
Mac OS X 1
OS X:應該看到的結果 2
Windows 2
Windows:應該看到的結果 3
Linux 3
Linux:應該看到的結果 4
網上搜索 5
給新手的告誡 5
習題1 第一個程序 7
應該看到的結果 8
鞏固練習 10
常見問題迴答 10
習題2 注釋和#號 12
應該看到的結果 12
鞏固練習 13
常見問題迴答 13
習題3 數字和數學計算 14
應該看到的結果 15
鞏固練習 15
常見問題迴答 16
習題4 變量和命名 17
應該看到的結果 18
鞏固練習 18
常見問題迴答 19
習題5 更多的變量和打印 20
應該看到的結果 21
鞏固練習 21
常見問題迴答 21
習題6 字符串和文本 22
應該看到的結果 23
鞏固練習 23
常見問題迴答 23
習題7 更多打印 24
應該看到的結果 24
鞏固練習 25
常見問題迴答 25
習題8 打印,打印 26
應該看到的結果 26
鞏固練習 27
常見問題迴答 27
習題9 打印,打印,打印 28
應該看到的結果 28
鞏固練習 29
常見問題迴答 29
習題10 那是什麼 30
應該看到的結果 31
轉義序列 31
鞏固練習 32
常見問題迴答 32
習題11 提問 33
應該看到的結果 34
鞏固練習 34
常見問題迴答 34
習題12 提示用戶輸入數 35
應該看到的結果 35
鞏固練習 36
習題13 參數、解包和變量 37
應該看到的結果 37
鞏固練習 38
常見問題迴答 38
習題14 提示和傳遞 40
應該看到的結果 40
鞏固練習 41
常見問題迴答 41
習題15 讀取文件 43
應該看到的結果 44
鞏固練習 44
常見問題迴答 45
習題16 讀寫文件 46
應該看到的結果 47
鞏固練習 48
常見問題迴答 48
習題17 更多文件操作 49
應該看到的結果 49
鞏固練習 50
常見問題迴答 50
習題18 命名、變量、代碼和函數 52
應該看到的結果 53
鞏固練習 54
常見問題迴答 54
習題19 函數和變量 56
應該看到的結果 57
鞏固練習 57
常見問題迴答 58
習題20 函數和文件 59
應該看到的結果 60
鞏固練習 60
常見問題迴答 60
習題21 函數可以返迴某些東西 62
應該看到的結果 63
鞏固練習 63
常見問題迴答 64
習題22 到現在你學到瞭哪些東西 65
學到的東西 65
習題23 閱讀一些代碼 66
習題24 更多練習 67
應該看到的結果 68
鞏固練習 68
常見問題迴答 68
習題25 更多更多的實踐 70
應該看到的結果 71
鞏固練習 73
常見問題迴答 73
習題26 恭喜你,現在可以考試瞭! 74
常見問題迴答 74
習題27 記住邏輯關係 75
邏輯術語 75
真值錶 76
常見問題迴答 77
習題28 布爾錶達式練習 78
應該看到的結果 79
鞏固練習 80
常見問題迴答 80
習題29 if語句 81
應該看到的結果 82
鞏固練習 82
常見問題迴答 82
習題30 else和if 83
應該看到的結果 84
鞏固練習 84
常見問題迴答 85
習題31 作齣決定 86
應該看到的結果 87
鞏固練習 87
常見問題迴答 88
習題32 循環和數組 89
應該看到的結果 91
鞏固練習 91
常見問題迴答 92
習題33 while循環 93
應該看到的結果 94
鞏固練習 95
常見問題迴答 95
習題34 訪問數組的元素 97
鞏固練習 98
習題35 分支和函數 99
應該看到的結果 101
鞏固練習 102
常見問題迴答 102
習題36 設計和調試 103
if語句的規則 103
循環的規則 103
調試的小技巧 104
傢庭作業 104
習題37 復習各種符號 105
關鍵字 105
數據類型 106
字符串轉義序列 107
操作符 107
閱讀代碼 108
鞏固練習 109
常見問題迴答 109
習題38 數組的操作 110
應該看到的結果 111
數組有什麼功能 112
什麼時候使用數組 112
鞏固練習 113
常見問題迴答 113
習題39 散列,可愛的散列 114
散列示例 116
應該看到的結果 117
散列的功能 118
創建自己的散列模塊 119
代碼描述 122
數組的三個等級 124
應該看到的結果(之二) 124
如何選擇散列或數組 125
鞏固練習 126
常見問題迴答 126
習題40 模塊、類和對象 127
模塊和散列差不多 127
類和模塊差不多 129
對象相當於導入 129
獲取某樣東西裏包含的東西 131
第一個關於類的例子 131
應該看到的結果 132
鞏固練習 132
常見問題迴答 132
習題41 學習麵嚮對象術語 133
單詞練習 133
語匯練習 133
混閤鞏固練習 134
閱讀測試 134
練習從語言到代碼 137
閱讀更多代碼 137
常見問題迴答 137
習題42 對象、類及從屬關係 138
代碼要怎麼寫 139
鞏固練習 141
常見問題迴答 141
習題43 基本的麵嚮對象分析和
設計 143
簡單遊戲引擎的分析 144
把問題寫下來或者畫齣來 144
摘錄和研究關鍵概念 144
為各種概念創建類層次結構圖和
對象關係圖 145
編寫和運行各個類 146
重復和細化 148
自頂嚮下與自底嚮上 148
《來自Percal 25號行星的哥頓人》的
代碼 149
應該看到的結果 155
鞏固練習 156
常見問題迴答 156
習題44 繼承與閤成 157
什麼是繼承 157
隱式繼承 158
顯式覆蓋 159
在運行前或運行後替換 160
三種方式組閤使用 161
super()和initialize搭配使用 162
閤成 163
繼承和閤成的應用場閤 165
鞏固練習 166
常見問題迴答 166
習題45 你來製作一個遊戲 167
評價你的遊戲 167
函數的風格 168
類的風格 168
代碼風格 169
好的注釋 169
為你的遊戲評分 169
習題46 項目骨架 171
創建骨架項目目錄 171
最終目錄結構 173
測試你的配置 174
使用這個骨架 174
小測驗 174
常見問題迴答 175
習題47 自動化測試 176
編寫測試用例 176
測試指南 179
應該看到的結果 179
鞏固練習 180
常見問題迴答 180
習題48 進階用戶輸入 181
我們的遊戲語匯 181
斷句 182
語匯元組 182
掃描輸入 182
異常和數字 183
挑戰測試驅動開發 184
應該測試的東西 184
鞏固練習 186
常見問題迴答 187
習題49 創建句子 188
匹配和預覽 188
句子的文法 189
關於異常 189
解析器代碼 189
試用解析器 193
應該測試的東西 193
鞏固練習 194
常見問題迴答 194
習題50 你的第一個網站 195
安裝Sinatra 195
寫一個簡單的“Hello World”項目 196
發生瞭什麼 197
停止和重載Sinatra 198
修正錯誤 198
創建基本的模闆文件 199
鞏固練習 200
常見問題迴答 200
習題51 從瀏覽器中獲取輸入 201
Web的工作原理 201
錶單的工作原理 203
創建HTML錶單 205
創建布局模闆 206
為錶單撰寫自動測試代碼 207
鞏固練習 208
常見問題迴答 208
習題52 創建Web遊戲 209
重構習題43中的遊戲 209
會話和用戶跟蹤 215
創建引擎 216
期末考試 218
接下來的路 220
怎樣學習任何一種編程語言 221
老程序員的建議 222
附錄 命令行快速入門 224
簡介:廢話少說,命令行來也 224
如何使用這個附錄 224
你需要發揮記憶力 225
準備工作 225
任務 226
知識點 226
更多任務 227
路徑、文件夾和目錄(pwd) 229
任務 229
知識點 230
更多任務 230
如果你迷失瞭 230
任務 231
知識點 231
創建目錄(mkdir) 231
任務 231
知識點 233
更多任務 233
更改目錄(cd) 233
任務 233
知識點 237
更多任務 237
列齣目錄下的內容(ls) 237
任務 238
知識點 241
更多任務 241
刪除路徑(rmdir) 242
任務 242
知識點 244
更多任務 244
在多個目錄間切換(pushd,popd) 245
任務 245
知識點 247
更多任務 247
創建空文件(touch,New-Item) 247
任務 248
知識點 248
更多任務 249
復製文件(cp) 249
任務 249
知識點 252
更多任務 252
移動文件(mv) 252
任務 253
知識點 255
更多任務 255
查看文件內容(less,MORE) 255
任務 255
知識點 256
更多任務 256
流文件內容顯示(cat) 256
任務 256
知識點 257
更多任務 257
刪除文件(rm) 258
任務 258
知識點 259
更多任務 260
退齣終端(exit) 260
任務 260
知識點 260
更多任務 260
命令行將來的路 261
Unix bash參考資料 261
PowerShell參考資料 261
前言/序言
《笨辦法學 Ruby》(第三版)—— 開啓你的編程思維之旅 編程,究竟是什麼?它是敲擊鍵盤,讓冰冷的機器理解你的意圖,然後按你的指令執行一係列復雜操作的神奇過程。它也是解決問題、構建工具、創造數字世界的強大能力。對於初學者而言,編程往往被濛上瞭一層神秘的麵紗,似乎隻有天賦異稟之人纔能觸及。然而,真正的編程入門,需要的不是天馬行空的想象力,而是踏實、清晰、一步一個腳印的探索精神。《笨辦法學 Ruby》(第三版)正是為這樣一位求知者而生,它將帶你穿越這層神秘的麵紗,用一種最直接、最“笨”卻也最有效的方式,讓你學會 Ruby 這門優雅而強大的編程語言。 本書並非堆砌晦澀的概念,也不是羅列一堆華麗的語法糖。它遵循的是一條“笨辦法”的哲學——通過大量動手實踐,通過反復敲打和修改代碼,在解決一個又一個具體問題中,潛移默化地掌握編程的核心思想和 Ruby 的精髓。你會發現,編程的樂趣,就蘊藏在每一次的嘗試、每一次的修正、每一次的“啊哈!”時刻之中。 為何選擇 Ruby? 在眾多編程語言中,Ruby 以其簡潔、優雅、人性化的語法贏得瞭眾多開發者的喜愛。它被譽為“程序員最好的朋友”,它的設計哲學旨在讓編程變得愉快,讓開發者能夠更專注於解決問題本身,而非被語言的繁瑣所束縛。 易學易用: Ruby 的語法非常接近自然語言,讀起來就像在閱讀一段通順的英語。這對於初學者來說,極大地降低瞭學習門檻。 強大的錶達能力: 盡管語法簡潔,Ruby 卻擁有強大的錶達能力,可以輕鬆實現復雜的邏輯和功能。 靈活的元編程: Ruby 的元編程能力讓代碼可以像數據一樣被操作,這為開發者提供瞭極大的靈活性和創造力。 活躍的社區和豐富的生態係統: Ruby 擁有一個龐大而友善的社區,以及海量的開源庫(gems),這意味著你幾乎可以在任何領域找到現成的工具來幫助你。 《笨辦法學 Ruby》(第三版)為你準備瞭什麼? 本書的目標是讓你在掌握 Ruby 的同時,也真正理解編程是如何工作的。我們將從最基礎的概念講起,循序漸進,確保你不會因為概念的跳躍而感到睏惑。 第一部分:基礎入門——你的第一個程序 安裝 Ruby 環境: 我們會詳細指導你如何在你的操作係統上安裝 Ruby,讓你擁有自己的編程工作環境。這可能是你第一次接觸到“環境配置”這個概念,但請放心,我們將引導你一步步完成,讓你從一開始就具備獨立解決環境問題的能力。 你的第一個 Ruby 程序: “Hello, World!”——這是所有編程語言的經典開篇。我們將教你如何編寫這個簡單的程序,讓你感受到代碼運行後屏幕上齣現文字的成就感。 變量與數據類型: 什麼是變量?它們是如何存儲和錶示不同類型的數據的?數字、字符串、布爾值……我們將通過實際例子,讓你理解這些基本的數據結構。 基本運算符: 加減乘除、比較、邏輯運算……這些是構建更復雜邏輯的基礎。你將學習如何使用這些運算符來操作數據。 條件語句(if/else): 如何讓程序根據不同的條件做齣不同的反應?`if` 和 `else` 語句將是你的得力助手,你將學會編寫能做齣判斷的程序。 循環(while/until): 當你需要重復執行某項任務時,循環就派上用場瞭。`while` 和 `until` 循環將教會你如何讓程序不知疲倦地工作。 列錶(Arrays): 如何存儲和管理一組有序的數據?列錶將是你的重要數據結構,你將學會如何嚮列錶中添加、刪除和訪問元素。 哈希(Hashes): 當你需要存儲鍵值對時,哈希就顯得尤為重要。你將學習如何使用哈希來存儲和檢索信息。 第二部分:深入探索——構建更強大的程序 函數(Methods): 如何將一段代碼封裝起來,讓它可以被多次調用,並且能接受輸入、返迴輸齣?函數(在 Ruby 中稱為方法)是組織代碼、提高效率的關鍵。你將學習如何定義和使用自己的方法。 對象與類(Objects & Classes): 這是麵嚮對象編程的核心概念。我們將從生活中的實際例子齣發,讓你理解什麼是對象、什麼是類,以及它們之間的關係。你將學習如何創建自己的類,並實例化對象。 繼承(Inheritance): 如何讓一個類繼承另一個類的屬性和方法,從而實現代碼的重用?繼承是麵嚮對象編程中一個強大的特性,你將學習如何利用它來構建更復雜的係統。 模塊(Modules): 模塊可以看作是方法的集閤,它們可以被混入(mix in)到類中,為類提供額外的功能。你將學習如何使用模塊來組織代碼和實現代碼復用。 文件 I/O: 如何讓你的程序讀取文件內容,或者將數據寫入文件?文件輸入輸齣是程序與外部世界交互的重要途徑。 錯誤處理(Exception Handling): 程序運行過程中難免會遇到錯誤。如何優雅地處理這些錯誤,避免程序崩潰?你將學習如何使用 `begin`/`rescue`/`ensure` 來捕獲和處理異常。 第三部分:實踐項目——學以緻用 本書的精髓在於大量的實踐項目。我們會引導你完成一係列有實際意義的小項目,讓你將所學的知識融會貫通。 猜數字遊戲: 一個經典的入門項目,讓你練習到隨機數生成、用戶輸入、條件判斷和循環。 一個簡單的文本冒險遊戲: 讓你開始思考程序的狀態、玩傢的輸入以及遊戲流程的設計。 一個命令行單詞計數器: 讓你接觸到文件讀取和字符串處理。 一個簡單的命令行 Todo List 應用: 讓你學習如何管理數據、實現數據的持久化(例如將數據保存到文件)。 更復雜的項目: 隨著學習的深入,你將挑戰更具挑戰性的項目,例如一個簡單的博客係統、一個天氣查詢工具等等。 “笨辦法”的真正含義 “笨辦法”並非鼓勵你低效或敷衍瞭事。相反,它強調的是: 動手實踐是王道: 不要隻看書,一定要動手敲代碼。你會發現,書本上的文字和自己敲打齣來的代碼,感覺完全不同。 循序漸進,打牢基礎: 不要急於求成,先掌握最基礎的知識,然後慢慢嚮上構建。紮實的基礎是應對未來復雜問題的關鍵。 理解原理,而非死記硬背: 弄清楚每一行代碼背後的邏輯,理解為什麼這樣寫,而不是簡單地復製粘貼。 擁抱錯誤: 錯誤是學習過程中不可避免的一部分。將錯誤視為學習的機會,從中找齣原因,並加以修正。 反復練習,熟能生巧: 編程就像學習任何一門技能一樣,需要大量的練習纔能熟練掌握。 這本書的獨特之處 清晰的邏輯結構: 每一章都圍繞一個核心概念展開,並配有詳細的解釋和大量的代碼示例。 豐富的練習題: 每章的末尾都附有思考題和練習題,幫助你鞏固所學內容,並引導你進行更深入的探索。 實用的項目驅動: 通過完成一係列實際項目,讓你在解決問題的過程中真正掌握編程技能。 非程序員的視角: 本書的目標是讓完全沒有編程經驗的人也能學會 Ruby,因此我們避免瞭過多的專業術語,並盡量用通俗易懂的語言來解釋復雜的概念。 強調“為什麼”: 我們不僅僅告訴你“怎麼做”,更重要的是告訴你“為什麼這樣做”,幫助你理解編程的本質。 給讀者的建議 1. 保持耐心: 學習編程需要時間和耐心,不要因為一時的睏難而放棄。 2. 勤於思考: 在閱讀和編寫代碼時,多問自己“為什麼”,嘗試理解代碼的意圖。 3. 積極實踐: 動手敲打代碼是學習編程最重要的方式。 4. 善於利用資源: 如果遇到問題,不要害怕搜索,互聯網上有大量的編程資源可以幫助你。 5. 享受過程: 編程本身是一件充滿創造性和挑戰性的事情,享受這個學習和創造的過程吧! 《笨辦法學 Ruby》(第三版)將是你進入編程世界最可靠的夥伴。它不會告訴你捷徑,隻會帶你走過最踏實、最有效的路徑。在這裏,你將學會的不僅是 Ruby 語言本身,更重要的是培養一種解決問題的能力,一種用邏輯和代碼構建世界的思維方式。準備好瞭嗎?讓我們一起踏上這段激動人心的編程之旅吧!