A lot of the buzz around Node.js is focused on the web. In truth, Node.js serves a bigger purpose that people often miss. Let’s use a map to see where Node.js fits in the broader scheme of things.
Imagine the set of all possible programs as the inhabitants of a vast sea. Programs that have similar purposes are near each other, and programs that differ are further apart. With that picture in mind, take a look at this map. It shows a close-up of one particular outcrop in this sea, the Island of I/O-Bound Programs.

I/O-bound programs are constrained by data access. These are programs where adding more processing power or RAM often makes little difference.
East of the mountain range, we find the client-side programs. These include GUI tools of all stripes, consumer applications, mobile apps, and web apps. Client-side programs interact directly with human beings, often by waiting patiently for their input.
West of the mountains are the server-side programs. This vast expanse is Node.js territory.
Deep within the server-side region lies the web—that old guard of HTTP, Ajax, and REST, communicating with JSON. The websites, apps, and APIs that consume so much of our collective mental energy live here.
Because we spend so much time thinking about the web, we often overemphasize Node.js’s use in developing web applications. People ask, “How is Node.js better for making web apps?” or “How can I make a REST service with Node.js?”
These are good questions, but they miss the point. Node.js is great for a wider range of things, and this book explores that larger area.