1.1 Computing Systems

In this book we explore various aspects of computing systems. Note that we use the term computing system, not just computer. A computer is a device. A computing system, by contrast, is a dynamic entity, used to solve problems and interact with its environment. A computing system is composed of hardware, software, and the data that they manage. Computer hardware is the collection of physical elements that make up the machine and its related pieces: boxes, circuit boards, chips, wires, disk drives, keyboards, monitors, printers, and so on. Computer software is the collection of programs that provide the instructions that a computer carries out. And at the very heart of a computer system is the information that it manages. Without data, the hardware and software are essentially useless.

The general goals of this book are threefold:

  • To give you a solid, broad understanding of how a computing system works

  • To help you develop an appreciation for and understanding of the evolution of modern computing systems

  • To give you enough information about computing so that you can decide whether you wish to pursue the subject further

The rest of this section explains how computer systems can be divided into abstract layers and how each layer plays a role. The next section puts the development of computing hardware and software into historical context. This chapter concludes with a discussion about computing as both a tool and a discipline of study.

Layers of a Computing System

A computing system is like an onion, made up of many layers. Each layer plays a specific role in the overall design of the system. These layers are depicted in FIGURE 1.1 and form the general organization of this book. This is the “big picture” that we will continually return to as we explore different aspects of computing systems.

A figure represents the different layers of a “computing system.” The innermost layer reads, “Information” which is followed by five other layers: Hardware, Programming, Operating systems, Applications, and Communications (the outermost layer).

FIGURE 1.1 The layers of a computing system

You rarely, if ever, take a bite out of an onion as you would an apple. Rather, you separate the onion into concentric rings. Likewise, in this book we explore aspects of computing one layer at a time. We peel each layer separately and explore it by itself. Each layer, in itself, is not that complicated. In fact, a computer actually does only very simple tasks—it just does them so blindingly fast that many simple tasks can be combined to accomplish larger, more complicated tasks. When the various computer layers are all brought together, each playing its own role, amazing things result from the combination of these basic ideas.

Let’s discuss each of these layers briefly and identify where in this book these ideas are explored in more detail. We essentially work our way from the inside out, which is sometimes referred to as a bottom-up approach.

The innermost layer, information, reflects the way we represent information on a computer. In many ways this is a purely conceptual level. Information on a computer is managed using binary digits, 1 and 0. So to understand computer processing, we must first understand the binary number system and its relationship to other number systems (such as the decimal system, the one humans use on a daily basis). Then we can turn our attention to how we take the myriad types of information we manage—numbers, text, images, audio, and video—and represent them in a binary format. Chapters 2 and 3 explore these issues.

The next layer, hardware, consists of the physical hardware of a computer system. Computer hardware includes devices such as gates and circuits, which control the flow of electricity in fundamental ways. This core electronic circuitry gives rise to specialized hardware components such as the computer’s central processing unit (CPU) and memory. Chapters 4 and 5 of the book discuss these topics in detail.

The programming layer deals with software, the instructions used to accomplish computations and manage data. Programs can take many forms, be performed at many levels, and be implemented in many languages. Yet, despite the enormous variety of programming issues, the goal remains the same: to solve problems. Chapters 6 through 9 explore many issues related to programming and the management of data.

Every computer has an operating system (OS) to help manage the computer’s resources. Operating systems, such as Windows, Mac OS, or Linux, help us interact with the computer system and manage the way hardware devices, programs, and data interact. Knowing what an operating system does is key to understanding the computer in general. These issues are discussed in Chapters 10 and 11.

The previous (inner) layers focus on making a computer system work. The applications layer, by contrast, focuses on using the computer to solve specific real-world problems. We run application programs to take advantage of the computer’s abilities in other areas, such as helping us design a building or play a game. The spectrum of area-specific computer software tools is far-reaching and involves specific subdisciplines of computing, such as information systems, artificial intelligence, and simulation. Application systems are discussed in Chapters 12, 13, and 14.

Of course, computers no longer exist in isolation on someone’s desktop. We use computer technology to communicate, and that communication is a fundamental layer at which computing systems operate. Computers are connected into networks so that they can share information and resources. The Internet evolved into a global network, so there is now almost no place on Earth you can’t reach with computing technology. The World Wide Web makes that communication easier; it has revolutionized computer use and made it accessible to the general public. Cloud computing is the idea that our computing needs can be handled by resources at various places on the Internet (in the cloud), rather than on local computers. Chapters 15 and 16 discuss these important issues of computing communication.

The use of computing technology can result in increased security hazards. Some issues of security are dealt with at low levels throughout a computer system. Many of them, though, involve keeping our personal information secure. Chapter 17 discusses several of these issues.

Most of this book focuses on what a computer can do and how it does it. We conclude the book with a discussion of what a computer cannot do, or at least cannot do well. Computers have inherent limitations on their ability to represent information, and they are only as good as their programming makes them. Furthermore, it turns out that some problems cannot be solved at all. Chapter 18 examines these limitations of computers.

Sometimes it is easy to get so caught up in the details that we lose perspective on the big picture. Try to keep that in mind as you progress through the information in this book. Each chapter’s opening page reminds you of where we are in the various layers of a computing system. The details all contribute a specific part to a larger whole. Take each step in turn and you will be amazed at how well it all falls into place.

Abstraction

The levels of a computing system that we just examined are examples of abstraction. An abstraction is a mental model, a way to think about something, that removes or hides complex details. An abstraction includes the information necessary to accomplish our goal, but leaves out information that would unnecessarily complicate matters. When we are dealing with a computer on one layer, we don’t need to be thinking about the details of the other layers. For example, when we are writing a program, we don’t have to concern ourselves with how the hardware carries out the instructions. Likewise, when we are running an application program, we don’t have to be concerned with how that program was written.

Two characters from bizarro comics are shown with a callout that reads: “Abstraction” is the concept of not representing objects as they are, but breaking them down to their basic shapes and colors. It's how I designed those giant camel statues.

Reprinted by permission of Dan Piraro. Visit, https://bizarro.com/

Numerous experiments have shown that a human being can actively manage about seven (plus or minus two, depending on the person) pieces of information in short-term memory at one time. This is called Miller’s Law, based on the psychologist who first investigated it.1 Other pieces of information are available to us when we need them, but when we focus on a new piece, something else falls back into secondary status.

This concept is similar to the number of balls a juggler can keep in the air at one time. Human beings can mentally juggle about seven balls at once, and when we pick up a new one, we have to drop another. Seven may seem like a small number, but the key is that each ball can represent an abstraction, or a chunk of information. That is, each ball we are juggling can represent a complex topic as long as we can think about it as one idea.

We rely on abstractions every day of our lives. For example, we don’t need to know how a car works to drive one to the store. That is, we don’t really need to know how the engine works in detail. We need to know only some basics about how to interact with the car: how the pedals and knobs and steering wheel work. And we don’t even have to be thinking about all of those things at the same time. See FIGURE 1.2.

Two photographs showing a car engine’s front view and a man driving a car.

FIGURE 1.2 A car engine and the abstraction that allows us to use it

© aospan/Shutterstock; © Syda Productions/Shutterstock

Even if we do know how an engine works, we don’t have to think about it while driving. Imagine if, while driving, we had to constantly think about how the spark plugs ignite the fuel that drives the pistons that turn the crankshaft. We’d never get anywhere! A car is much too complicated for us to deal with all at once. All the technical details would be too many balls to juggle at the same time. But once we’ve abstracted the car down to the way we interact with it, we can deal with it as one entity. The irrelevant details are ignored, at least for the moment.

Information hiding is a concept related to abstraction. A computer programmer often tries to eliminate the need or ability of one part of a program to access information located in another part. This technique keeps the pieces of the program isolated from each other, which reduces errors and makes each piece easier to understand. Abstraction focuses on the external view—the way something behaves and the way we interact with it. Information hiding is a design feature that gives rise to the abstractions that make something easier to work with. Information hiding and abstraction are two sides of the same coin.

Abstract art, as the term implies, is another example of abstraction. An abstract painting represents something but doesn’t get bogged down in the details of reality. Consider the painting shown in FIGURE 1.3, entitled Nude Descending a Staircase. You can see only the basic hint of the woman and the staircase, because the artist is not interested in the details of exactly how the woman or the staircase looks. Those details are irrelevant to the effect the artist is trying to create. In fact, the realistic details would get in the way of the issues that the artist thinks are important.

A photograph shows Marcel Duchamp and a person discussing his abstract painting.

FIGURE 1.3 Marcel Duchamp discussing his abstract painting Nude Descending a Staircase

© CBS/Landov

Abstraction is the key to computing. The layers of a computing system embody the idea of abstraction. And abstractions keep appearing within individual layers in various ways as well. In fact, abstraction can be seen throughout the entire evolution of computing systems, which we explore in the next section.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.143.168.172