HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
You Will Learn Ruby!
Zed Shaw has perfected the world’s best system for learning Ruby. Follow it and you will succeed–just like the hundreds of thousands of beginners Zed has taught to date! You bring the discipline, commitment, and persistence; the author supplies everything else.
In Learn Ruby the Hard Way, Third Edition, you’ll learn Ruby by working through 52 brilliantly crafted exercises. Read them. Type their code precisely. (No copying and pasting!) Fix your mistakes. Watch the programs run. As you do, you’ll learn how software works; what good programs look like; how to read, write, and think about code; and how to find and fix your mistakes using tricks professional programmers use. Most importantly, you’ll learn the following, which you need to start writing excellent Ruby software of your own:
• Installing your Ruby environment
• Organizing and writing code
• Ruby symbols and keywords
• Basic mathematics
• Variables and printing
• Strings and text
• Interacting with users
• Working with files
• Using and creating functions
• Looping and logic
• Arrays and elements
• Hashmaps
• Program design
• Object-oriented programming
• Inheritance and composition
• Modules, classes, and objects
• Project “skeleton” directories
• Debugging and automated testing
• Advanced user input
• Text processing
• Basic game development
• Basic web development
It’ll Be Hard At First. But Soon, You’ll Just Get It–And That Will Feel Great!
This tutorial will reward you for every minute you put into it. Soon, you’ll know one of the world’s most powerful, popular programming languages. You’ll be a Ruby programmer.
Watch Zed, too! The accompanying DVD contains 5+ hours of passionate, powerful teaching: a complete Ruby video course!
Zed Shaw is an avid guitar player, programmer, and writer whose books teach people all over the world how to write software. His book Learn Python the Hard Way has been read by millions of people around the world. His software has been used by many large and small companies. His essays are often quoted and read by members of many geek communities. He is an entertaining and lively writer, who is sure to keep you laughing and make you think.
Preface 1
Acknowledgments 1
The Hard Way Is Easier 2
Reading and Writing 2
Attention to Detail 2
Spotting Differences 3
Do Not Copy-Paste 3
Using the Included Videos 3
A Note on Practice and Persistence 3
A Warning for the Smarties 4
Exercise 0: The Setup 6
Mac OS X 6
Windows 7
Linux 8
Finding Things on the Internet 10
Warnings for Beginners 10
Exercise 1: A Good First Program 12
What You Should See 14
Study Drills 16
Common Student Questions 17
Exercise 2: Comments and Pound Characters 18
What You Should See 18
Study Drills 18
Common Student Questions 19
Exercise 3: Numbers and Math 20
What You Should See 21
Study Drills 21
Common Student Questions 22
Exercise 4: Variables and Names 24
What You Should See 25
Study Drills 25
Common Student Questions 25
Exercise 5: More Variables and Printing 28
What You Should See 28
Study Drills 29
Common Student Questions 29
Exercise 6: Strings and Text 30
What You Should See 31
Study Drills 31
Common Student Question 31
Exercise 7: More Printing 32
What You Should See 32
Study Drills 33
Common Student Questions 33
Exercise 8: Printing, Printing 34
What You Should See 34
Study Drills 35
Common Student Questions 35
Exercise 9: Printing, Printing, Printing 36
What You Should See 36
Study Drills 37
Common Student Questions 37
Exercise 10: What Was That? 38
What You Should See 39
Escape Sequences 39
Study Drills 40
Common Student Questions 40
Exercise 11: Asking Questions 42
What You Should See 42
Study Drills 43
Common Student Question 43
Exercise 12: Prompting People for Numbers 44
What You Should See 44
Study Drills 44
Exercise 13: Parameters, Unpacking, Variables 46
What You Should See 46
Study Drills 47
Common Student Questions 47
Exercise 14: Prompting and Passing 50
What You Should See 50
Study Drills 51
Common Student Questions 51
Exercise 15: Reading Files 52
What You Should See 53
Study Drills 53
Common Student Questions 54
Exercise 16: Reading and Writing Files 56
What You Should See 57
Study Drills 57
Common Student Questions 58
Exercise 17: More Files 60
What You Should See 60
Study Drills 61
Common Student Questions 61
Exercise 18: Names, Variables, Code, Functions 62
What You Should See 63
Study Drills 64
Common Student Questions 65
Exercise 19: Functions and Variables 66
What You Should See 67
Study Drills 67
Common Student Questions 67
Exercise 20: Functions and Files 70
What You Should See 71
Study Drills 71
Common Student Questions 71
Exercise 21: Functions Can Return Something 74
What You Should See 75
Study Drills 75
Common Student Questions 76
Exercise 22: What Do You Know So Far? 78
What You Are Learning 78
Exercise 23: Read Some Code 80
Exercise 24: More Practice 82
What You Should See 83
Study Drills 83
Common Student Questions 83
Exercise 25: Even More Practice 84
What You Should See 85
Study Drills 87
Common Student Questions 87
Exercise 26: Congratulations, Take a Test! 88
Common Student Questions 88
Exercise 27: Memorizing Logic 90
The Truth Terms 90
The Truth Tables 91
Common Student Question 92
Exercise 28: Boolean Practice 94
What You Should See 96
Study Drills 96
Common Student Questions 96
Exercise 29: What If 98
What You Should See 99
Study Drills 99
Common Student Question 99
Exercise 30: Else and If 100
What You Should See 101
Study Drills 101
Common Student Question 101
Exercise 31: Making Decisions 102
What You Should See 103
Study Drills 103
Common Student Questions 103
Exercise 32: Loops and Arrays 106
What You Should See 108
Study Drills 108
Common Student Questions 108
Exercise 33: While Loops 110
What You Should See 111
Study Drills 112
Common Student Questions 112
Exercise 34: Accessing Elements of Arrays 114
Study Drills 115
Exercise 35: Branches and Functions 116
What You Should See 118
Study Drills 118
Common Student Questions 118
Exercise 36: Designing and Debugging 120
Rules for If-Statements 120
Rules for Loops 120
Tips for Debugging 121
Homework 121
Exercise 37: Symbol Review 122
Keywords 122
Data Types 124
String Escape Sequences 124
Operators 125
Reading Code 126
Study Drills 126
Common Student Question 127
Exercise 38: Doing Things to Arrays 128
What You Should See 129
What Arrays Can Do 129
When to Use Arrays 130
Study Drills 131
Common Student Questions 131
Exercise 39: Hashes, Oh Lovely Hashes 132
A Hash Example 133
What You Should See 135
What Hashes Can Do 136
Making Your Own Hash Module 136
The Code Description 140
Three Levels of Arrays 142
What You Should See (Again) 142
When to Use Hashes or Arrays 143
Study Drills 143
Common Student Questions 144
Exercise 40: Modules, Classes, and Objects 146
Modules Are Like Hashes 146
What You Should See 151
Study Drills 151
Common Student Question 151
Exercise 41: Learning to Speak Object Oriented 152
Word Drills 152
Phrase Drills 152
Combined Drills 153
A Reading Test 153
Practice English to Code 156
Reading More Code 156
Common Student Questions 156
Exercise 42: Is-A, Has-A, Objects, and Classes 158
How This Looks in Code 159
Study Drills 161
Common Student Questions 161
Exercise 43: Basic Object-Oriented Analysis and Design 164
The Analysis of a Simple Game Engine 165
Top Down Versus Bottom Up 170
The Code for ”Gothons from Planet Percal #25” 170
What You Should See 176
Study Drills 177
Common Student Question 177
Exercise 44: Inheritance Versus Composition 178
What Is Inheritance? 178
Composition 183
When to Use Inheritance or Composition 185
Study Drills 186
Common Student Questions 186
Exercise 45: You Make a Game 188
Evaluating Your Game 188
Function Style 189
Class Style 189
Code Style 190
Good Comments 190
Evaluate Your Game 191
Exercise 46: A Project Skeleton 192
Creating the Skeleton Project Directory 192
Testing Your Setup 195
Using the Skeleton 195
Required Quiz 195
Common Student Questions 196
Exercise 47: Automated Testing 198
Writing a Test Case 198
Testing Guidelines 201
What You Should See 201
Study Drills 202
Common Student Questions 202
Exercise 48: Advanced User Input 204
Our Game Lexicon 204
A Test First Challenge 206
What You Should Test 207
Study Drills 209
Common Student Questions 210
Exercise 49: Making Sentences 212
Match and Peek 212
The Sentence Grammar 213
A Word on Exceptions 213
The Parser Code 213
Playing with the Parser 216
What You Should Test 217
Study Drills 217
Common Student Question 217
Exercise 50: Your First Website 218
Installing Sinatra 218
Make a Simple ”Hello World” Project 219
What’s Happening Here? 220
Stopping and Reloading Sinatra 221
Fixing Errors 221
Create Basic Templates 222
Study Drills 223
Common Student Questions 223
Exercise 51: Getting Input from a Browser 224
How the Web Works 224
How Forms Work 226
Creating HTML Forms 227
Creating a Layout Template 228
Writing Automated Tests for Forms 229
Study Drills 230
Common Student Question 231
Exercise 52: The Start of Your Web Game 232
Refactoring the Exercise 43 Game 232
Sessions and Tracking Users 237
Creating an Engine 238
Your Final Exam 240
Next Steps 242
How to Learn Any Programming Language 243
Advice from an Old Programmer 246
Appendix: Command Line Crash Course 249
Introduction: Shut Up and Shell 249
The Setup 251
Paths, Folders, and Directories (pwd) 254
If You Get Lost 256
Make a Directory (mkdir) 257
Change Directory (cd) 260
List Directory (ls) 264
Remove Directory (rmdir) 269
Moving Around (pushd, popd) 273
Making Empty Files (Touch, New-Item) 276
Copy a File (cp) 277
Moving a File (mv) 281
View a File (less, MORE) 283
Stream a File (cat) 285
Removing a File (rm) 286
Exiting Your Terminal (exit) 289
Command Line Next Steps 290
Index 291