This is a book about getting computers to do what you want them to do.
Computers are about as common as screwdrivers today, but contain a lot
more hidden complexity, and thus are harder to operate and understand.
To many, they remain alien, slightly threatening things.
We’ve found two effective ways of bridging the communication gap between
us, squishy biological organisms with a talent for social and spatial
reasoning, and the computer, unfeeling manipulator of meaningless data.
The first is to appeal to our sense of the physical world, and build interfaces
that mimic that world, and allow us to manipulate shapes on a
screen with our fingers. This works very well for casual machine interaction.
But we have not yet found a good way to use the point-and-click approach
to communicate things to the computer that the designer of the
interface did not anticipate. For open-ended interfaces, such as instructing
the computer to perform arbitrary tasks, we’ve had more luck with
an approach that makes use of our talent for language: teaching the
machine a language.
Casual computing has become much more widespread in the past
twenty years, and language-based interfaces, which once were the default
way in which people interacted with computers, have largely been
replaced with graphical interfaces. But they are still there, if you know
every web browser, and thus available on just about every consumer
1 Values, Types, and Operators
2 Program Structure
4 Data Structures: Objects and Arrays
5 Higher-Order Functions
6 The Secret Life of Objects
7 Project: Electronic Life
8 Bugs and Error Handling
9 Regular Expressions
11 Project: A Programming Language
13 The Document Object Model
14 Handling Events
15 Project: A Platform Game
16 Drawing on Canvas
18 Forms and Form Fields
19 Project: A Paint Program
21 Project: Skill-Sharing Website
22 Exercise Hints