A Computer Science Tapestry Exploring Computer Science With C 2nd Edition Owen L. Astrachan - Own The Complete Ebook Set Now in PDF and DOCX Formats
A Computer Science Tapestry Exploring Computer Science With C 2nd Edition Owen L. Astrachan - Own The Complete Ebook Set Now in PDF and DOCX Formats
com
https://ebookname.com/product/a-computer-science-tapestry-
exploring-computer-science-with-c-2nd-edition-owen-l-
astrachan/
OR CLICK HERE
DOWLOAD EBOOK
https://ebookname.com/product/connecting-with-computer-
science-2nd-edition-greg-anderson/
https://ebookname.com/product/algorithms-in-c-computer-science-
series-1st-edition-sedgewick/
https://ebookname.com/product/computer-science-research-and-
technology-1st-edition-karl-c-verdinand/
https://ebookname.com/product/a-short-history-of-cultural-
studies-1st-edition-john-hartley/
David Buschs Compact Guide for the Nikon D3000 1st
Edition David D. Busch
https://ebookname.com/product/david-buschs-compact-guide-for-the-
nikon-d3000-1st-edition-david-d-busch/
https://ebookname.com/product/perspectives-on-astronomy-media-
edition-michael-a-seeds/
https://ebookname.com/product/windows-azure-web-sites-1st-
edition-james-chambers/
https://ebookname.com/product/a-reading-course-in-homeric-greek-
book-1-3rd-revised-edition-raymond-v-schoder/
https://ebookname.com/product/central-banking-monetary-policy-
and-the-future-of-money-1st-edition-guillaume-vallet/
Rahul Dravid Timeless Steel Espn Cricinfo
https://ebookname.com/product/rahul-dravid-timeless-steel-espn-
cricinfo/
June 7, 1999 10:10 owltex Sheet number 22 Page number 3 magenta black
Science and technology, and the various forms of art, all unite humanity in a single and
interconnected system.
Zhores Medvedev The Medvedev Papers
In this chapter we introduce you to computer science. Ideally, we would begin with a
simple definition that could be expanded and refined throughout the book. Unfortunately,
computer science, like other disciplines, has no simple definition. For example, we might
say that biology is the study of life. But that doesn’t explain much about the content
of such subdisciplines as animal behavior, immunology, or genetics—all of which are
part of biology. Nor does it explain much about the contributions that these disciplines
make to biology in general. Similarly, is English the study of grammar and spelling, the
reading of Shakespeare’s plays, or the writing of poems and stories? In many cases it
is easier to consider the subfields within an area of study than it is to define the area of
study. So it is with computer science.
3
June 7, 1999 10:10 owltex Sheet number 23 Page number 4 magenta black
This book will guide you through the study of the design, building, and analysis of
computer programs. Although you won’t become an expert by working through this
book, you will lay a foundation on which expertise can be built. Wherever possible,
the programming examples will solve problems that are difficult to solve without a
computer: a program might find the smallest of 10,000 numbers, rather than the smallest
of 2 numbers. Longer examples are taken from various core areas of computer science.
As this is a book about the design and analysis of computer programs, it must be used
in conjunction with a computer. Reading alone cannot convey the same understanding
that using, reading, and writing programs can.
This chapter introduces computer science using a tapestry metaphor. A tapestry has
much in common with computer science. A tapestry has many intricate scenes that
form a whole. Similarly, computer science is a broad discipline with many intricate
subdisciplines. In studying a tapestry, we can step back and view the work as a whole,
move closer to concentrate on some particularly alluring or colorful region, and even
study the quality of the fabric itself. We’ll similarly explore computer science—studying
some things in detail, but stepping back to view the whole when appropriate. We’ll
view programs as tapestries too. You’ll study programs written by others, add to these
programs to make them more useful, and write your own programs. You’ll see that
creating and developing programs is not only useful but is immensely satisfying, and
often entertaining as well.
Several unifying threads run through a tapestry, and the various scenes and sections
originate from and build on these threads. Likewise in computer science, we find basic
themes and concepts on which the field is built and that we use to write programs and
solve problems. In this chapter we introduce the themes of computer science, which are
like the scenes in a tapestry, and the concepts, which are like the unifying threads.
Contexture is a word meaning both “an arrangement of interconnected parts” and
“the act of weaving (assembling) parts into a whole.” It can apply to tapestries and to
computer programming. This book uses a contextural approach in which programming
is the vehicle for learning about computer science. Although it is possible to study
computer science without programming, it would be like studying food and cooking
without eating, which would be neither as enjoyable nor as satisfying.
Computer science is not just programming. Too often this is the impression left after
an initial exposure to the field. I want you to learn something of what a well-read and
well-rounded computer scientist knows. You should have an understanding of what has
been done, what might be done, and what cannot be done by programming a computer.
After a brief preview of what is ahead, we’ll get to it.
June 7, 1999 10:10 owltex Sheet number 24 Page number 5 magenta black
1.2 Algorithms 5
Alan Turing was one of the founders of computer science, studying it before there
were computers! To honor his work, the highest achievement in the field of com-
puter science—and the equivalent in stature to a Nobel prize—is the Turing award,
given by the Association for Computing Ma-
chinery (the ACM).
In 1937, Turing published the paper On
Computable Numbers, with an Application
to the Entscheidungsproblem. In this paper
he invented an abstract machine, now known
as a Turing Machine, that is (theoretically)
capable of doing any calculation that today’s
supercomputers can. He used this abstract
machine to show that there are certain prob-
lems in mathematics whose proofs cannot
be found. This also shows that there are
certain problems that cannot be solved with
any computer. In particular, a program can-
not be written that will determine whether
an arbitrary program will eventually stop. This is called the halting problem.
During World War II, Turing was instrumental in breaking a German coding
machine called the Enigma. He was also very involved with the design of the first
computers in England and the United States. During this time, Turing practiced
one of his loves—long-distance running. A newspaper account said of his second-
place finish (by 1 foot) in a 3-mile race in a time of 15:51: “Antithesis of the popular
notion of a scientist is tall, modest, 34-year-old bachelor Alan M. Turing.…Turing
is the club’s star distance runner…[and] is also credited with the original idea for
the Automatic Computing Engine, popularly known as the Electronic Brain.”
Turing was also fond of playing “running-chess,” in which each player alter-
nated moves with a run around Turing’s garden. Turing was gay and, unfortunately,
the 1940s and 50s were not a welcome time for homosexuals. He was found guilty
of committing “acts of gross indecency” in 1952 and sentenced to a regimen of
hormones as a “cure.” More than a year after finishing this “therapy,” and with no
notice, Turing committed suicide in 1954.
For a full account of Turing’s life see[Hod83].
1.2 Algorithms
To develop an initial understanding of the themes and concepts that make up the computer
science tapestry, we’ll work through an example. Consider two similar tasks of arranging
objects into some predetermined order:
June 7, 1999 10:10 owltex Sheet number 25 Page number 6 magenta black
Arranging Cards
Arrange cards into four groups by suit: spades, hearts, clubs, diamonds
Sort each group. To sort a group:
For each rank (2, 3, 4, …, 10, J, Q, K, A) put the 2 first, followed
by the 3, the 4, …, followed by the 10, J, Q, K, A (if any rank is
missing, skip it)
Card players often do the first task because it makes playing much simpler than if
the cards in their hands are arranged in a random order. The second task is part of
the administration of the Advanced Placement exams given each year to high school
students. Many people are hired to sort the exam booklets by student ID number before
the scores are entered into a computer. In both cases people are doing the arranging. The
differences in the scale of the tasks and the techniques used to solve them will illuminate
the study of computer science and problem solving.
1.2 Algorithms 7
sorted hand of cards or a loaf of bread). Although this analogy is apt, cooking often
allows for a larger margin of error than do algorithms that are to be implemented on a
computer. Phrases like “beat until smooth,” “sauté until tender,” and “season to taste”
are interpreted differently by cooks. A more appropriate analogy may be seen with
the instructions that are used to knit a sweater or make a shirt. In such tasks, precise
instructions are given and patterns must be followed or else a sweater with a front larger
than the back or a shirt with mismatched buttons and buttonholes may result.
You can easily determine that the hand below is sorted correctly, in part because
there are so few cards in a hand and because grouping cards by suit makes it easier to see
if the cards are sorted. Verifying that the algorithm is correct in general is much more
difficult than verifying that one hand of cards is sorted.
7 8 9 7 10 K 3 5 Q A 8 J Q
7 8 9 7 10 K 3 5 Q A 8 J Q
For example, suppose that an algorithm correctly sorts 1,000 hands of cards. Does
this guarantee that the algorithm will sort all hands? No, it’s possible that the next hand
might not be sorted even though the first 1,000 hands were. This points out an important
difference between verifying an algorithm and testing an algorithm. A verified algorithm
has been proved to work in all situations. A tested algorithm has been rigorously tried
with many examples to establish confidence that it works in all situations.
These represent a small fraction of the number of exam booklets that must be arranged.
Consider the algorithmic description in Figure 1.2. If this algorithm is implemented
correctly, it will result in 32 numbers arranged from smallest to largest. If we had a
computer to assist with the task, this might be an acceptable algorithm. (We’ll see later
that there are more efficient methods for use on a computer but that this is a method that
works and is simple to understand.) We might be tempted to use it with 32 exams, but
with 100,000 exams it would be extremely time-consuming and would make inefficient
use of the resources at our disposal since using 40 people to find the smallest exam
number is a literal waste of time.
June 7, 1999 10:10 owltex Sheet number 27 Page number 8 magenta black
Sorting Exams
Repeat the following until all 32 numbers (exams) have been arranged
scan the list of numbers (exams) looking for the smallest exam
move the smallest number (exam) to another pile of exams that are maintained and
arranged from smallest to largest
Theory Language
Architecture
Levels Conceptual
of and formal
abstraction models
Efficiency
and
complexity
tapestry we are studying. In programming and computer science, these terms concern
how difficult a problem is and the computational resources, such as time and memory,
that a problem requires.
We have avoided many of the details inherent in these examples that might be of
concern as rough ideas evolve into detailed algorithms. If 40 people are sorting exams
we might be concerned, for example, with how many are left-handed. This might
affect the arrangement of the exams as they are physically moved about during the
sorting process. Some playing cards are embellished with beautiful designs; it might
be necessary to explain to someone who has never played cards that these designs are
irrelevant in the arrangement process. In general these levels of detail are examples of
levels of abstraction (Figure 1.4). In one sense this entire chapter mirrors the fact that
we are viewing the computer science tapestry at a very high level of abstraction, with
few details. Each subsequent chapter of this book involves a study of some aspect of the
tapestry at a level of greater detail.
Finally, both these tasks involve numbers. We all have an idea of what a number is,
although the concept of number may be different to a mathematician and to an accountant.
In computer science conceptual ideas must often be formalized to be well understood.
For example, telling someone who is playing hide-and-go-seek to start counting from
1 and to stop when they reach the “last number” is an interesting way to teach the
concept of infinity. The finite memory of computers, however, imposes a limit on the
largest number that can be represented. This difference between conceptual and formal
models is a concept that will recur and that completes the three concepts in Figure 1.4,
forming common threads of the computer science tapestry.
Pause to Reflect 1.1 The New Hacker’s Dictionary defines bogo-sort as described here.
Using this “algorithm,” what is the minimum number of “throws” that yields a
sorted hand? What is the danger of using this algorithm?
1.2 In the algorithm for sorting cards, nothing is stated about forming a hand from
each of the separate suits. Does something need to be stated? Is too much left
as “understood by the player” so that someone unfamiliar with cards couldn’t use
the algorithm?
1.3 Write a concise description of the method or algorithm you use to sort a hand of
cards.
1.4 Suppose that the 32 student ID numbers listed in the text are sorted. Is it a simple
matter to verify that the numbers are in the correct order? Consider the same
question for 100,000 numbers.
June 7, 1999 10:10 owltex Sheet number 30 Page number 11 magenta black
Perhaps best known for his invention of the sorting algorithm he modestly named
Quicksort, Hoare has made profound contributions to many branches of computer
science, especially in programming and pro-
gramming languages. Hoare received the
ACM Turing award in 1980. In his award ad-
dress he had this to say about learning from
failure: “I have learned more from my fail-
ures than can ever be revealed in the cold
print of a scientific article and now I would
like you to learn from them, too.
Besides, failures are much more fun to
hear about afterwards; they are not so funny
at the time.” In a collection of essays [Hoa89],
Hoare describes the programmer of the cur-
rent era as part apprentice and part wizard;
he urges that computer science education
should focus on both theoretical foundations
and practical applications. In his last essay
of that collection he states “I salute the brav-
ery of those who accept the challenge of be-
ing the first to try out new ideas; and I also respect the caution of those who prefer
to stick with ideas which they know and understand and trust.”
I think Hoare may not like C++; it is too big, too full of features, and it doesn’t
have a formal foundation. However, according to his web page, he set himself
the following task for his 1993–1994 sabbatical year: to become acquainted with
Visual BasicTM . Of course as other goals for that year he listed:
To complete a work on unification of theories of programming and to start
new work on a range of scientific theories of computational phenomena.
In describing computer science as, in part, an engineering discipline, Hoare
states:
…the major factor in the wider propagation of professional methods is
education, an education which conveys a broad and deep understanding of
theoretical principles as well as their practical application, an education
such as can be offered by our universities and polytechnics.
For more information, see [Hoa89].
June 7, 1999 10:10 owltex Sheet number 31 Page number 12 magenta black
How do computers work? We don’t need to know this to use computers just as we don’t
need to know how internal combustion engines work to drive a car. A little knowledge,
however, can help to demystify what a computer is doing when it executes a program. A
computer can be viewed from many levels, from the transistors that make up its circuits
to the programs that are used to design the circuits.
At the lowest level, computers respond to electric signals at an extremely fast rate.
Computers react to whether electricity is flowing or not; the computer merely responds
to switches that are in one of two states: on or off. This method of using two states
involves what is termed the binary number system, or the base 2 system. This system
is based on counting using only the digits 0 and 1. The base 10 system, with which you
are most familiar, uses the digits 0 through 9.
There are hundreds of different kinds of computers. You may have used Apple
Macintosh computers, which are built using a computer chip called the Power-PC, or
another kind of computer based on the Intel Pentium chip. Pictures of these different
chips are shown at the end of the chapter in Figure 1.9 and 1.11. These chips are the
foundation on which a computer is built. The chip determines how fast the computer
runs and what kinds of software can be used with the computer. Since computers are
constructed from different components and have different underlying architectures, they
may respond differently to the same sequence of zeros and ones. Just as chat means
“to converse informally” in English and means “a small domesticated feline (cat)” in
June 7, 1999 10:10 owltex Sheet number 32 Page number 13 magenta black
French, so might 00010100111010 instruct one computer to add two numbers and another
computer to print the letter q.
Rather than instruct computers at this level of zeros and ones, languages have been
developed that allow ideas to be expressed at a higher level—in a way more easily
understood by people. In addition to being more easily understood, these high-level
languages can be translated into particular sequences of zeros and ones for particular
computers. Just as translators can translate English into both Japanese and Swahili, so can
translating computer programs translate a high-level language into a low-level language
for a particular computer. The concept of higher level programming languages was a
breakthrough. The first computers were “programmed” literally by flipping switches by
hand or physically rewiring the computer to create different on/off states corresponding
to a program. The use of higher level languages made programming easier (although it is
still an intellectually challenging task) and helped to make computer use more prevalent.
The computer language used in this book is called C++.1 This language has its roots
in the C programming language, which was developed in the 1970s. The language C
is a high-level language2 that allows low-level concepts to be expressed more readily
than some other high-level languages. For example, in C it is easy to write a program to
change a single bit (a 0 or a 1) in the computer’s memory. This is hard, if not impossible,
to do in other high-level languages, such as Pascal.
We’re not studying C++ because it permits one bit to be changed. We’re studying
C++ because with it several programming styles are possible. In particular, it can be
used with a style of programming called object-oriented programming, often abbreviated
as OOP. We will use OOP throughout this book, but it will be an aid to our study of
programming and computer science rather than the principal focus. We’ll explore OOP
briefly at the end of this chapter.
The intricacies of C++ are such that mastering the entire language, as well as the
concepts of object-oriented programming, is a task too daunting and difficult for begin-
ning programmers. In this book we present a significant subset of C++ and use it to write
programs that permit the study of essential areas of computer science. At the same time
the power of C++ is exploited where possible to allow you to create more complicated
programs than would be feasible using other languages. Don’t be disheartened that you
won’t learn absolutely all of C++ in this book—you’ll be building a foundation on which
subsequent study can add. The few parts of the language that aren’t covered are mostly
“short-cuts” that can be replaced using features of the language that are in the book.
A Concrete Example. To illustrate the difference between high- and low-level languages,
we’ll study how a C++ program is translated into a low-level language. The low-level
language of 0’s and 1’s that a computer understands is called machine language. Be-
cause different computers have different machine languages, a program is needed to
translate the high-level C++ language into machine language. A compiler is a program
that does this translation. Often the compiling process involves an intermediate step
wherein the code is translated into assembly language.
1
This is pronounced as “see plus plus.”
2
Although some computer scientists might take exception to this statement, C is clearly a much higher-
level language than machine or assembly language.
June 7, 1999 10:10 owltex Sheet number 33 Page number 14 magenta black
main: main:
save %sp,-128,%sp pushl %ebp
mov 7,%o0 movl %esp,%ebp
st %o0,[%fp-20] subl $12,%esp
mov 12,%o0 movl $7,-4(%ebp)
st %o0,[%fp-24] movl $12,-8(%ebp)
ld [%fp-20],%o0 movl -4(%ebp),%eax
ld [%fp-24],%o1 imull -8(%ebp),%eax
call .umul,0 movl %eax,-12(%ebp)
nop xorl %eax,%eax
st %o0,[%fp-28] jmp .L1
mov 0,%i0 .align 4
b .LL1 xorl %eax,%eax
nop jmp .L1
mov 0,%i0 .align 4
b .LL1 .L1:
nop leave
.LL1: ret
ret
restore
Figure 1.5 Assembly code using g++ (Sparc on left, Pentium on right).
To keep the example simple, we’ll use a program that stores two numbers in memory,
then multiplies the numbers storing the product in a different memory location. The
program follows.
int main()
{
int x,y,z;
x = 7; y = 12;
z = x*y;
return 0;
}
We will not discuss the C++ instructions here; we use the program only to illustrate the
differences between high- and low-level languages.
The world is full of C++ compilers. Compilers exist for various kinds of computers,
sizes of programs, and amounts of money. The code in this book has been tested using
four different compilers. Some of these compilers cost hundreds of dollars, some are
less expensive, and one is free.
The assembly code generated by the same compiler running on two different ma-
chines is shown in Figure 1.5. The compiler used is g++ running on two different
machines: a Sun Sparcstation and a Pentium-based computer.3
There is one column of assembly code for each machine. Note that although the programs
are of roughly the same length, there are few similarities in the assembly instructions.
3
The characteristics of these machines are not important, but the same compiler runs on both machines,
which facilitates a comparison.
June 7, 1999 10:10 owltex Sheet number 34 Page number 15 magenta black
Among the instructions are ld, call, and nop for the Sun assembly and pushl, subl, and
xorl for the Pentium. The important point of Figure 1.5 is that you do not need to worry
about assembly code to write programs in C++ or in any other high-level language. It is
comforting to know that we can ignore most of the low-level details in writing programs
and studying computer science and, perhaps, enticing to know that the details are there
for those who are interested.
From Problem to Algorithm. Consider the steps labeled 1 and 2 in Figure 1.7. The
problem of multiplying two specific numbers (1285 and 57) has been generalized to the
problem of multiplying two arbitrary numbers (Y and Z). The two views of the problem,
one concrete and one general, represent two levels of abstraction. A solution to the
general problem will be useful for any two numbers, not just for 1285 and 57. If you
can develop a general solution that is useful in many situations, it is usually worth it.
Sometimes, however, a solution to a specific problem is needed and solving a general
version would take too long or be too difficult.
To write a program for solving this general problem, we must develop an algorithm
for multiplication. Consider multiplying rational numbers (fractions), integers, real
numbers, and complex numbers as illustrated in Figure 1.6.
You may not be familiar with each of these types of numbers, but each uses a different
method for multiplication. If we’re going to write a program to multiply, we’ll need to
determine what type of number is being used. The general form of X × Y can be used
to express multiplication regardless of which type of number is multiplied. One of the
advantages of C++ is that this conceptual similarity in notation is formalized in code:
the same symbol, *, can be used to multiply many types of numbers.
In addition to the type of number, considerations in the development of the algorithm
might include the size of the numbers being multiplied (an efficient algorithm would
1
1,285 Y
x 57 xZ
5
010001100101001000011110010101
ld [%fp+-0x8],%o0
set L8,%o1
7 mov 0xd,%o2
6 mov 0xd, %o3
call
8
73,245
8
73,245
be more important if the numbers were hundreds of digits long as opposed to three
digits long), how many times numbers will be multiplied, and whether the result of
multiplying the numbers can exceed the memory constraints of the computer. Although
it’s impossible for numbers to get “too big” conceptually, the inherent finiteness of a
computer’s memory requires that a formal model of computation take this into account.
From Algorithm to Program. In step 3 we translate the algorithm into the high-level
language C++. The name operator * has been given to the C++ instructions that perform
Another Random Document on
Scribd Without Any Related Topics
"What in the devil—stop that!" Blaine remonstrated. There was a
scuffle beginning. I recall that I shouted,
"Blaine! Take it easy! You'll be killed!"
Amazing power of these squat little men! A claw-like hand was
clapped over Blaine's mouth; his flailing arms and kicking legs were
pinned by the Radak's clutches; and then they picked him up and
carted him away.
"I shall begin with you, Peter Mack," the Radak ruler said quietly.
"Come forward, bend before me."
For a second Mack hesitated, flinging Shorty and me a questioning
glance. But we had nothing to offer. Then the shabby, lanky figure of
the bearded Mack shambled forward, guided by two Radaks until he
was standing with head bent before the Ruler. Down the slope the
murmurs of the crowd of Lei rose into a babble. The milling throng of
slave-people a hundred yards or so from us crowded curiously
forward to see Mack better. There was a sudden, low-voiced
command from the Radak Ruler. A dozen or more of the squat, grey
Radaks ran at the Lei, cuffing them, knocking them back ... I saw a
young Lei girl, slim, with flowing white and tawny hair framing her
face. The little automaton Radak ran at her, struck her in the mouth
so that the blood spurted out.
And through it all, near me a row of Radak children stood stiffly at
attention, motionless, with only their round green eyes turning
sidewise to watch the scene.
Then the ancient Radak Ruler's smouldering gaze was upon Mack's
head. An awed silence fell over the scene as Mack stood motionless.
Who shall say by what weird and gruesome process Mack was now
being sapped! No one on Earth knows what a thought is. No one can
say what is within our brain cells to constitute knowledge. But
something is there, something in our conscious and subconscious
minds upon which our memory can draw. And we do know that
thought is a wave of vibration—an infinitely tiny, infinitely rapid
vibration. A thing that at least has a tangible entity. And this Radak's
mind now was drawing, sapping from Mack.
A minute. Five minutes. In the tense silence, I felt Shorty clutch at
me, heard him mutter: "God, it's weird!"
Mack now was drooping. A mental agony, rasping his nerves now,
drawing vitality from him so that he drooped, swayed, and suddenly
let out a groan. Mental anguish, with screaming nerves translating it
into physical pain.
"It's torture!" Vivian murmured. "Look at him—stop it! Stop it!"
Mack had fallen to the ground, writhing now, mumbling with futile
hands clawing at his face and head as though to pluck away that
damnable, torturing gaze. But still, calmly, inexorably the green-eyed,
monstrous little Radak held him—this shriveled Radak Ruler, avidly,
greedily drawing in the knowledge of Mack's past life—those myriad
little things of Earth-life stored within Mack's brain. Surely it must
have been a torture most horrible.
Shorty and I were starting to leap forward in protest. But Vivian was
ahead of us, raging, rushing heedlessly at the old Radak. She almost
reached him. She was screaming, "You—you rotten damn Thing—you
—"
Her hand went up to strike him. It was all a sudden chaos, just a few
seconds. Radaks caught Shorty and me; with almost machine-like
strength their arms pinned us. I think I yelled at Shorty not to
struggle. In that same second, I saw Vivian's arm with clenched fist
trying to hit the Radak Ruler, but a little squat grey figure standing
guard there, jumped and seized her. It was an amazing tableau. At
the threatened blow, the Ruler shrank back. His whole little body
quivered, pulsated; and on the weird, almost unhuman face, there
was a look, not of fear, but of strange revulsion—as though the threat
of that physical blow were something too horrible to contemplate.
"Vivian! Vivian—you—they'll kill you! Run—Vivian, run—"
Mack was staggering to his feet, stumbling, half falling. But he
reached Vivian, clutched her. Both of them were confused, dazed so
that all they could do was stand there, holding onto each other. I saw
Mack gazing defiantly at the oncoming Radaks—Mack who on Earth
probably wouldn't have lifted a hand to help anyone, ready now to
fight to protect this girl.
"You will all—stand—away from them." It was the Ruler's quiet,
measured voice. And abruptly I saw that his shriveled hand had gone
to his belt. A weapon was hanging there—a little pot-bellied black
cylinder. His fingers shifted it, seemed aiming it at Vivian and Mack.
Shorty and I were struggling, but the Radaks held us. And we were
both shouting. Then there was a soundless, almost invisible flash,
just a vague spitting glow of light from the little cylinder. It leaped
and for a second clung upon Mack and the girl. They seemed to
stiffen. Just that; nothing else. Still clutching each other they stood
transfixed, and on their faces there was a blankness, a strange
emptiness.
"You will walk together, hand in hand," the Ruler's soft voice was
droning. "One of my Radaks will lead you to the upper exit. And then
you will walk together alone—out into the Realm of the Deathless
Things."
He added something in his own language. A little Radak moved in
front of Mack and Vivian now. Hand in hand they were standing
docile, and then they were following the Radak—following him with
slow measured steps, their faces blank, their eyes staring straight
ahead of them. Like somnambulists, walking in their sleep.
"Good Lord," Shorty murmured. "That could be the way we were
abducted on Earth! Do you suppose—"
His words were cut off. The Ruler had given another command. The
Radaks gripping us were pulling us away—shoving us back into the
dim crimson tunnel from which they had brought us. I turned to look
behind me. The stiff figures of Mack and Vivian still were visible,
walking in a trance, following the square, box-like little Radak who
marched silently ahead of them. For a moment they wound along the
edge of the slope; then the crimson murk of radiance enveloped
them and they were gone.
Roughly Shorty and I were shoved along the tunnel by our captors.
Then a rock panel slid aside. We were shoved in, and the panel slid
closed.
"Well," Shorty murmured. "That's that. We're in a jam, Bob—a damn
weird jam."
It was soundless in here, and darker than out in the main open
grotto. But still there was that dim crimson glow. We were in a small
cave-cell now. The air was hot, fetid, earthy. Presently we could see a
little better. There was nothing but black, spongy ground, glowing red
rock walls and a rock ceiling close over us. In the dimness I fumbled,
feeling the wall, trying to find the crevice of the sliding door panel;
but could not.
Time passed. Shorty and I both realized now that we were weak and
faint from hunger—not altogether the hunger from missing a meal or
so, but the depletion of long under-nourishment. Together we lay
down on the fibrous ground. I think at that moment I was more
despairing than ever before in my life. I seemed unable to cope with
even the thought of what we might possibly plan. I closed my eyes. I
seemed just to want to drift into the blessed relief of sleep.
"This is one jam we might not get out of, Bob," Shorty murmured
presently.
"Yes, looks so."
Then suddenly both of us were galvanized into alertness. The door-
panel was sliding open with a little rasp and an influx of brighter red
glow. Outside in the corridor we saw a group of Radaks on guard. But
none of them came in. They moved aside and a figure came past
them—a Lei girl. Her slim body was draped in a bluish garment of
thatch. Her long tawny hair flowed down over her shoulders. She was
carrying a slab on which there was food and drink for us.
Then she set the slab on the ground near us. She was between us
and the door, almost a silhouette but I could see that her hand was
at her lips and her glowing eyes seemed warning us to be silent.
For an instant she leaned close toward me. "I am Tahn—the wife of
Taro, the Lei." Her voice barely whispered it. "You say nothing. I
come again—with Taro's plan to help you! We would save you and
your Earth—if we can!"
Silent, Shorty and I just stared. Then she had turned and was gone.
The rock panel slid closed upon us.
III
I must explain now what was happening to Mack and Vivian as they
afterward told it to me. Mack recalls quite clearly that moment of
dazed, numbed anguish when he writhed on the ground with the
horrible sapping gaze of the Radak Ruler upon him. Then he heard
Vivian scream, saw her rushing at the shriveled old Radak.
He called, "Vivian! Run—they'll kill you—"
He found himself staggering to his feet, stumbling until he was by her
side. He felt her clutch him, both of them standing there, numbed
and dazed, terrified, with the feeling that the rushing Radaks would
instantly kill them. He remembers that the girl and himself took a
stumbling step forward. To Mack it was like stumbling through a
suddenly appearing black curtain of emptiness. Just an abyss of
soundless nothingness, except that there seemed still to be Vivian's
clutch on his arm. No, it was her hand holding his as they stood
peering at a distant blur of red radiance.
"Viv—where are we? What happened?"
"Pete—I'm frightened—can't—see anything—"
But the red radiance was growing, spreading to dispel the blank
empty darkness so that in a moment he could see the drab,
disheveled form of the girl beside him, her moist, cold hand
convulsively clutching his, and the red light on her pallid, terrified
face. And in the distance now there were outlines—a sort of red line
that looked like a shimmering cliff with jagged spires upstanding in a
row.
"Vivian—everything's gone—the Radaks—we're not where we were—
Bob and Shorty—gone—"
The red glow in a moment had brightened to be far more luminous
than they remembered it in the caverns. Obviously there was a sky
overhead now—a lurid, murky, blood-red haze of infinite distance.
This was the outer surface of the little planetoid. The Realm of the
Deathless Monsters! Mack realized it with a shudder of terror. He and
Vivian now could see that they were standing upon a little rise of
ground, in what could have been called a forest. Everywhere great
stalks of spindly blue and grey vegetation towered into the air.
Growing things of fantastic shape, woven in places to be a solid
jungle. Or again there were open glades of rocky ground—buttes and
little spires, small ravines and crevices. All of it bathed in crimson, as
though here were a bloody landscape of unutterable horror. The
horror of things not yet seen ... things lurking—
"Oh Pete, what can we do?" Hungry and faint she swayed against
him. But in the blood-red light she was trying to smile. "You tell us
what we ought to do—I will help us do it, Pete. I'm not—not afraid."
But the terror of despair was clutching at both of them. Mack tried to
gather his wits. Alone here on an alien world. Could they find food
and drink? Wander here, until some ghastly monster engulfed them?
Or should they try to get back underground? Why? To have the
murderous Radaks fall upon them and kill them?
But the will to live in every human is very strong. No one will lie
down and just hopelessly wait for death.
"Viv—those cliffs over there—cliffs with the spires—there ought to be
tunnels maybe at the bottom of them. If we could get back—maybe
get to Bob and Shorty—" His voice trailed away. It all seemed so
hopeless.
Then he felt the girl clutch at his arm. "Look! Maybe that's water? I'm
so thirsty—"
"I see it. Maybe it is. Come on."
In a nearby open glade, surrounded by stalks of the towering fibrous
vegetation, what could have been a shallow pool of water was spread
on the open rocks. A little pool, twenty feet or so in diameter. Rivulets
extended off to the sides of it in crevices of the rock-surfaces. It was
quite shallow, seemingly only a few inches deep. The red radiant
glow that suffused everything stained it like blood, but it was
translucent so that the rocks showed through it.
Was it water? As they approached, Vivian stepped over one of the
branching rivulet arms. The translucent red stuff suddenly lifted from
the rocks, the little tentacle arm of it wrapping itself around her
ankle!
Blaine raised the cylinder level. With a roar, Ratan was on his feet.
There was a soundless, vague little flash. Ratan, tensing his muscles
for a leap abruptly relaxed, wavered.
"Quiet now! Stand still!" Blaine ordered sharply.
He stood listening, with the quiescent, blankly staring Ratan before
him. Had Ratan's roar of startled anger aroused any guards out in the
corridor? It seemed not. There was only silence.
"Now we will go out of here," Blaine said softly. "We will go out. You
know where Robert Rance is now. You will lead me to him."
With hands outstretched, the big Radak moved to the door, slid it
open. At this moment Shorty and I were confined in another cave-cell
not far away. Ratan knew it; he was leading Blaine there. But
suddenly, at a corridor intersection, voices sounded! Radaks were
coming.
"Crouch down!" Blaine commanded. "Be quiet! Not a sound from
you!"
There was a wall recess. Blaine shoved his numbed captive into it.
Together they crouched. And now Blaine saw that in a sheath at
Ratan's belt, there was a knife. He drew it out; held it in his other
hand and kept the cylinder ready. Two Radaks were coming. They
were talking together in their own language. They stopped nearby,
evidently with the intention of parting here at the intersection.
Blaine listened. Then he whispered to Ratan: "Answer me softly.
What are they saying? Tell me in English."
"Those Earth-people banished—into the Realm of—Deathless—
Monsters—and they will die—of course." Ratan's words were
mumbled, queerly mouthed, like one who talks in his sleep. Blaine
assumed that all of us were out there on the upper surface, not just
Vivian and Mack. Swiftly he changed his plans.
"In a moment when I command you," he whispered, "you will lead
me there. You know where the Earth-people would probably be now?
Out which exit they went? Answer me—softly."
"By the—big cliff with the—rock spires.... The exit is—down this left
corridor."
Tensely Blaine waited. The nearby Radaks parted and moved away.
"Now, lead me," he whispered.
Again they moved forward, down the left-hand corridor-branch now.
And suddenly behind Blaine there was a shout. He whirled. One of
the Radaks had changed his mind and was coming back, calling
something to his fellow. Blaine had no time to get himself and Ratan
out of sight. The Radak saw them—saw the stiffly walking Ratan, and
Blaine with the cylinder in his hand.
With a startled shout, the little Radak leaped at Blaine. The flash met
him; he stopped in his tracks, stood stiff. But from the other
direction, his companion was coming. And now the commotion was
bringing others. Blaine could hear several of the guttural voices and
the thuds of their oncoming footsteps.
With a leap Blaine went past Ratan. The squat little shape of the
other Radak came charging down the center of the narrow corridor.
His greenish eye-beams were weird in the crimson gloom. Again
Blaine fired his cylinder. But this time evidently he missed and in
another second the Radak was on him. The shock of the impact flung
them both to the ground. The cylinder was knocked from Blaine's
hand. He felt his adversary's arms clutching him, squeezing him with
machine-like strength. In another moment Blaine's ribs would have
smashed. But his left hand still gripped the knife. With despairing
effort he drove it into the Radak's side.
Ghastly knife-thrust! It went in with a crunch, a rasp as it severed the
strange flesh. There was a hiss as hot fluid spurted. The Radak's
scream was horrible. His arms fell away. Blaine disentangled himself.
On the ground near him he saw the cylinder, snatched it, dropped it
into his pocket. A commotion was all around him now. Oncoming
Radaks in several of the branching corridors. But ahead of Blaine
there seemed no one.
He ran. Behind him he could dimly see the squat little figures gazing
at their dead fellow, and surrounding the stricken Ratan. No one
seemed to notice the fleeing Blaine as he ran the length of the
winding corridor until at last he was out upon the crimson upper
surface.
For a time he wandered. He did not see any of the crimson monsters,
or at least did not recognize them for what they were. Then he heard
Mack shouting at him; saw Mack and Vivian running toward him.
"I've got something important—a weapon," he called to Mack.
Then abruptly the three of them saw that huge, python-like crimson
Thing which had been silently stalking Blaine.
"Look!" Vivian gasped. "Another of them!"
It was slithering rapidly at them now, no more than fifty feet away.
Its green-swaying eye-beams clung to them. For that instant they
were standing stricken with terror. To one side of them there was the
brink of an abyss a few yards away, and to the other, and behind
them, a ragged little cliff.
"Got to try and climb those rocks!" Mack gasped. "Can't get past that
snake thing—we're trapped—"
But Blaine swept him aside. The cylinder was in Blaine's hand now.
"This will stop it!" he muttered. "You two—get behind me!"
The monstrous thirty-foot thing was only half its own length away
from them now. Then, as its head reared over a projection of the
uneven, rocky ground, Blaine carefully aimed the cylinder and fired.
But the monster didn't stop! There was no conscious, thinking brain
in that ghastly, pulsating crimson head! Just motor-ganglia reacting
to the impulses of instinct!
Blaine fired again. But the monster kept on coming and in another
second was upon them!
IV
Back in our cave-cell, Shorty and I stared blankly after the figure of
the Lei woman, Tahn, as she motioned to the Radak guards who slid
our door-panel closed. Again we were alone.
"Well," Shorty murmured. "What do you make of that? The wife of
some Lei named Taro, she said."
And that she would come back and try to get us out of here. That her
husband had some plan—
Eagerly, Shorty and I waited. Would it be an hour, or a day? Both of
us were thinking of Blaine, locked somewhere around here, perhaps
in a cell like ours. Or had the Radaks killed him by now? And Vivian
and Mack, wandering out there in the Realm of the Things you
couldn't kill.
"Guess they're done for," Shorty said, when I mentioned them.
"Unless we can get out there to them—"
Shorty's smile was ironic. "That would fix everything, of course. Don't
be an ass, Bob. If we were out there, we'd all be trying to get back.
For what? So the Radaks would jump on us and kill us."
It was all so utterly hopeless. But it was queer, that instinct all five of
us had, to try and keep together.
The young Lei woman had brought us food and drink. Shorty and I
slumped on the earthern floor now and sampled the food. Nauseous
stuff, indescribable.
"If it's been weeks since we left the Earth," Shorty said, "no wonder
we're nearly starved to death."
But we managed to eat and drink some of it, and then exhausted by
the nerve tension of what we had been through, we drifted off into
an uneasy slumber.
The rasp of the sliding door-panel jerked us into alertness. I had the
feeling that only a little time had passed. The panel slid open just a
foot or two, and a figure came in. It was Tahn.
Both Shorty and I were on our feet. "You came as you hoped," I said
softly. "We're ready. Just tell us what you want us to do."
She barely whispered, "The Radak guards just now are changing.
There is no one outside. We go, quickly."
"Go where?" Shorty demanded.
"To my husband, Taro. He is in a corridor near here. Come now,
quickly."
The faintly red corridor outside was empty. Swiftly Tahn led us along
it, around several sharp bends, past a cross-corridor intersection. I
was tense, expecting every moment that Radaks would leap upon us
from the shadows. But so far we had escaped notice, though
obviously there were many Radaks near here. Several times we
passed the dim oval openings of little grottos, and often there were
guttural, chattering voices from within them.
"Won't the guards discover we're gone?" Shorty murmured.
"Perhaps not for maybe much time. I am in charge of you, I bring
you food and drink. The guards stay outside, should you try to break
out."
Our tunnel was descending now. And suddenly from the dimness to
one side, there came a murmur: "Tahn! Tahn—"
A young Lei man was crouching in a shadowed recess. It was Tahn's
husband, Taro.
"She has brought you, Earthmen. That is good."
We crouched down with him. He was a youngish fellow, tall, slim and
powerfully built. His single draped garment exposed one bronze
shoulder. His grey-black hair was chopped at the base of his neck,
with a narrow band of bright-colored fabric tied around his forehead.
With his high-cheek bones, hawk-like nose and gleaming dark eyes
he could have been a stalwart young savage of Earth.
"I want to help you," he was saying. "Your coming here fits my plans,
and believe me I have worked on them a long time. Tahn and I,
making the Radaks trust us."
"Say," Shorty murmured, "you certainly are fluent with English."
The young Lei's face wrinkled into a smile. "Why should I not, my
wife and I? We Lei learn things quickly. Perhaps a different mind-
quality from yours, almost at once to absorb what we hear. Ratan—
he is next to the Great Mind as leader of the Radaks—he chose Tahn
and me to go on the expedition to Earth. We were carefully watched,
or we would have escaped to warn you. It was Tahn who took care of
you on the way here."
They were gone only a few moments. From a little distance they had
stood unnoticed, watching and listening. Blaine had escaped! He had
seized Ratan's thought-gun; turned it upon Ratan and one of the
guards; had stricken them. And had knifed another guard, and
vanished.
"Well! Good for Blaine," Shorty murmured. "He's smarter than all the
rest of us put together! And he's got one of those guns! Where'd he
go—"
"They think perhaps out to the outer surface," Taro said. "He ran that
way."
"To find Mack and Vivian!" I exclaimed. "Well, that's what we want to
do. Show us that exit, Taro."
"I will go with you," the young Lei said quietly. But there was no
mistaking his shudder and the grim look on his face. "Tahn, you stay
here."
"I will go with my husband," she retorted. "Taro, please—"
We took her. It seemed that the commotion at Blaine's cell must have
drawn all the Radaks from these other passages. We were not
discovered as we threaded our way back, until presently we were
ascending a winding tunnel which ended at the crimson upper
surface. How long it took us to sight Mack, Vivian and Blaine I do not
know. It seemed an eternity of apprehension, as Taro and Tahn
cautiously led us along winding rocky defiles and past patches of that
weird, fantastic forest. Shorty and I saw none of the monsters. But
there were many times when suddenly, without explanation, Taro
turned us from where we would have wandered.
Then we were far enough from the tunnel entrances so that we
dared talk without possibility that the Radaks would hear us.
"Blaine! Blaine—where are you?"
"Mack! Vivian—are you here?"
It was Tahn who first saw them. We were in a cluster of rocks with a
brink ahead of us. I could see lower ground perhaps fifty feet down—
a precipitous descent close ahead of us. It chanced that Tahn was
leading, and suddenly she turned, gave a cry, and then pointed over
the brink.
"There they are! Down there! Look—look at them—"
We crowded to the brink. Fifty feet down this ragged wall, Blaine,
Vivian and Mack stood backed against it. An abyss was near them.
And in front of them a great crimson, python-like thing was slithering,
almost upon them now, with Blaine futilely firing his gun at it!
There was nothing we could do; and for those seconds all four of us
stood staring, mute, numbed with horror. The scene on the ledge
below us was clear as though on a little stage. The monster in
another second would be upon its victims. I saw Blaine throw down
his gun in despair. His voice floated up to us.
"Damn thing won't work! Got to—try to run—"
Then, suddenly we saw Mack leap forward, not toward where he
might have a wild chance of climbing up our ragged little cliff-wall,
but the other way—toward the brink that dropped down to another
terrace, between the brink and the monster's slithering length. His
intention was obvious—to lead the monster over that other brink
after him.... To sacrifice himself so that his companions might escape.
In the chaos of that second we saw Mack get past the monster's
head and neck. Its head turned. And then, before Mack could hurl
himself down the hundred-foot drop, a loop of the great crimson
body lashed out. It seemed that a tentacle whipped separate from
the undulating snake-like body—a tentacle that seized Mack, looped
around him and flung him into the air.
Just a ghastly second or two as Mack's whirling body came up
diagonally toward us in the air, and then fell back, into a ragged
cluster of rocks beyond the monster's tail. Horribly we could hear the
thud as it struck. For another second the great crimson head of the
monster seemed to rear, with swaying eye-beams searching. But
Mack's body was hidden by the rock-cluster.
"You and Tahn will stay with him," I told Vivian. And Shorty and I had
decided that Blaine had best stay also. For once Blaine had to do
something against his will.
"Think I'm too old to help you young fellows now?" he said. "All right,
maybe I am."
Certainly he was in no physical condition to be much help in the
desperate venture we were planning. He handed me the Radak-gun,
showed me how to use it. I dropped it in my pocket.
"Good luck to you," Blaine said.
"Thanks. We'll need it," I acknowledged.
Then Shorty, Taro and I left them. Taro had hidden the only weapons
he could get, near here. We found them—sheathed knives that the
Lei used in the underground fields. They were odd-shaped knives;
they seemed made of a highly polished, metallic stone. I thumbed
one. It was sharp.
"Very handy," Shorty commented. "Come on, Taro, let's go. Where is
this Cavern of Machines?"
It was perhaps half an Earth-mile, low down in the maze of
underground passages. Shorty clutched his knife; I held the Radak-
gun as we followed Taro down the dim, descending crimson tunnel.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookname.com