CHAPTER 1
Computers Are Everywhere
I do not fear computers. I fear the lack of them.
ISAAC ASIMOV
INTRODUCTION
Depending on your perspective, computers are either the bane or the blessing of modern life. They help us file our taxes, guide doctors through sophisticated surgeries, and deliver entertainment on demand. Unfortunately, they can also overwhelm us with techno-jargon, drown us in a tsunami of spam and unwanted advertising, and serve as targets for identity theft. Nonetheless, can you envision life without them?
Like any other tool, the more you learn about computers, the more useful they become. However, most of us have neither the time nor the inclination to become computer programmers or software architects. Nonetheless, we certainly don’t want to remain wholly uninformed so that every mouse click seems like “magic.” Thus, that begs the question: How much technology does someone need to understand to harness the power of the electronic world?
That is the very intent of this book: to arm you, the reader, with enough information to remove the mystique and apprehension associated with computers and replace it with a broad understanding of their inner workings so that your interaction with them becomes more rewarding and less frustrating.
MODERN TECHNOLOGY
I’m sure everyone reading this book owns or is familiar with many of the following products:
Smartphone
Smartwatch
Smart TV
eBooks/eReaders (e.g., Kindle)
Smart Thermostats
Navigation Systems (GPS)
Smart Assistants (e.g., Alexa, Google Home)
Smart devices like those listed above have all found hooks on the toolbelts of modern life. Consider: When was the last time you asked for driving directions or “looked up a word” in a printed dictionary? Do you ask Alexa or Google Home for the weather report or a daily news briefing? Does your refrigerator automatically order milk from your online grocer when you’re running low?
As the previous examples demonstrate, interaction with computers is unavoidable in today's world. Sometimes it's obvious. For instance, it's clear that you’re using an “intelligent” device when you power up your laptop. But how about when you press a button on an elevator? Or when you change gears in your car?
Whether we’re comfortable with computers or not, we need to accept them—even embrace them. Still, many folks opt to remain ignorant of what is a fundamental aspect of modern living. Such an approach is not consistent with other facets of our lives, however.
For example, most car owners don’t know how to design automobiles. Yet, even if they don’t understand the details, they are familiar with an automobile’s major components: engine, transmission, suspension, etc. Though minimal, such familiarity with automotive design makes drivers more comfortable sitting behind the wheel. Nonetheless, despite our general acceptance of technology, many of us turn our heads and wave our hands when computers are the topic of discussion.
Unfortunately, in the world of technology, ignorance is not bliss. What you don’t know might wind up hurting you.
OBJECTIVES OF THIS BOOK
I’m sure many readers of this book have no desire to become electrical engineers or software developers—you’d be reading different types of books. That's good because this text aims to help layfolk and students understand—at a conceptual level—the inner workings of computer systems. As we progress, we’ll learn what this incredible technology can do for us. Additionally, in Chapter 13, we’ll also discover what it can do to us.
Throughout the text, we’ll use plain everyday language. Nonetheless, to become conversant in the world of computing, you’ll need to understand some basic terminology. However, whenever jargon is unavoidable, we’ll introduce it delicately and explain it thoroughly.
ORGANIZATION
From a pedagogical perspective, the book will introduce each main subject (hardware, software, networking, etc.) with an introductory chapter that presents the material in broad strokes. Subsequent chapters will dive deeper into the subject matter.
Our journey begins with a brief history of the evolution of computers, followed by an overview of digitization—one of the most fundamental facets of this technology. After that, we’ll describe the hardware components used in modern-day computers and discuss how systems “talk to each other” (i.e., networking).
Given that foundation, we’ll address the most challenging subject in computer science: software. After reading those chapters, you’ll have a solid understanding of what software is (and what it's not!).
Once we understand how hardware and software work together, we’ll describe how computer programs execute and how software developers build them. Then, we’ll put all this knowledge to work and write some code. After completing this section, you’ll feel much more comfortable working with new applications in the future.
Unfortunately, no discussion of the modern computing world would be complete without reviewing its darker side. Thus, this book will inform you about the dangers that lurk behind the lure of the Internet, the risks behind the façade of free software, and the precautions you can adopt to protect yourself.
All technical chapters will include an Advanced Topic section, which presents the chapter's main ideas in ways that are, well, more advanced. And there's also a glossary of terms containing definitions for all the terms and acronyms used throughout the text.
So, hop on the train—but leave the baggage of your apprehensions behind—because we are about to embark on an enjoyable journey of discovery.
FORMATTING CONVENTIONS
To simplify the presentation of this material, we’ve adopted the following formatting conventions:
When introduced, all technical jargon will appear in italics.
All computer-related terms—file names, command-line text, and program output—will appear in THIS FONT
.
We’ll highlight formal definitions using centered text highlighted in gray.
This is an example of a formal definition.
All program listings are highlighted in gray contain numbered lines, and the code will appear in THIS FONT
.
001 // THIS IS A SAMPLE CODE LISTING
002 #INCLUDE <STDIO.H>
003 MAIN()
004 {
005 PRINTF( “HELLO WORLD\N”);
006 }