Learn Programming Your Guided Tour Through The Programming Jungle Antti Salonen download
Learn Programming Your Guided Tour Through The Programming Jungle Antti Salonen download
https://ebookbell.com/product/learn-programming-your-guided-tour-
through-the-programming-jungle-antti-salonen-50272382
https://ebookbell.com/product/swift-programming-language-your-
comprehensive-guide-to-learn-all-the-basics-of-the-swift-programming-
language-step-by-step-john-peterson-51167902
The Complete Software Developers Career Guide How To Learn Your Next
Programming Language Ace Your Programming Interview And Land The
Coding Job Of Your Dreams John Sonmez
https://ebookbell.com/product/the-complete-software-developers-career-
guide-how-to-learn-your-next-programming-language-ace-your-
programming-interview-and-land-the-coding-job-of-your-dreams-john-
sonmez-50194586
Python For Data Science A Guide To Learn In Depth How To Use This
Programming Language To Reorder Data While Remaining Focused On Your
Specific Purposes Dylan Penny
https://ebookbell.com/product/python-for-data-science-a-guide-to-
learn-in-depth-how-to-use-this-programming-language-to-reorder-data-
while-remaining-focused-on-your-specific-purposes-dylan-
penny-232316876
https://ebookbell.com/product/learn-c-quickly-a-complete-beginners-
guide-to-learning-c-even-if-youre-new-to-programming-coll-11095140
Learn C Quickly A Complete Beginners Guide To Learning C Even If Youre
New To Programming Crash Course With Handson Project Code Quickly
https://ebookbell.com/product/learn-c-quickly-a-complete-beginners-
guide-to-learning-c-even-if-youre-new-to-programming-crash-course-
with-handson-project-code-quickly-11357702
https://ebookbell.com/product/learn-c-quickly-a-complete-beginners-
guide-to-learning-c-even-if-youre-new-to-programming-crash-course-
with-handson-project-book-3-code-quickly-quickly-33467362
Learn Game Programming With Ruby Bring Your Ideas To Life With Gosu
B20 Mark Sobkowicz
https://ebookbell.com/product/learn-game-programming-with-ruby-bring-
your-ideas-to-life-with-gosu-b20-mark-sobkowicz-11238022
https://ebookbell.com/product/the-java-workshop-learn-objectoriented-
programming-and-kickstart-your-career-in-software-development-david-
cuartielles-46712648
https://ebookbell.com/product/interactive-objectoriented-programming-
in-java-learn-and-test-your-programming-skills-2nd-edition-2nd-
edition-vaskaran-sarcar-50195476
Learn Programming
Antti Salonen
2
CONTENTS:
1 The beginning 7
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1 Why this book? . . . . . . . . . . . . . . . . . . . . 8
1.1.2 What is software? . . . . . . . . . . . . . . . . . . 15
1.1.3 How does a computer work? . . . . . . . . . . . . 20
1.1.4 OK, but seriously, how does a computer work? . . . 27
1.1.5 The basics of programming . . . . . . . . . . . . . 32
1.1.6 Setting up the C toolchain . . . . . . . . . . . . . . 42
1.1.7 The basics of programming in C . . . . . . . . . . 46
1.1.8 Learning to learn . . . . . . . . . . . . . . . . . . 56
1.2 Basics of programming in Python and C . . . . . . . . . . 59
1.2.1 Quadratic formula in C . . . . . . . . . . . . . . . 59
1.2.2 Lots of quadratic equations . . . . . . . . . . . . . 64
1.2.3 Quadratic formula in Python . . . . . . . . . . . . 69
1.2.4 Generating input data using Python . . . . . . . . 76
1.3 Unix shell . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
1.3.1 Basic Unix shell usage . . . . . . . . . . . . . . . . 77
1.3.2 Unix shell scripting . . . . . . . . . . . . . . . . . 88
1.3.3 Regular expressions . . . . . . . . . . . . . . . . . 95
1.4 Using libraries in Python . . . . . . . . . . . . . . . . . . . 99
1.4.1 Creating a simple web page . . . . . . . . . . . . . 99
1.4.2 Making our web page work . . . . . . . . . . . . . 104
2 Stage 1 109
2.1 Further Unix tools . . . . . . . . . . . . . . . . . . . . . . 110
2.1.1 Version control . . . . . . . . . . . . . . . . . . . 110
2.1.2 Working with other git repositories . . . . . . . . 116
3
Contents:
4
Contents:
4 Stage 2 331
4.1 Larger software . . . . . . . . . . . . . . . . . . . . . . . . 332
4.1.1 Introduction to larger software . . . . . . . . . . . 332
4.1.2 Breaking software down to components . . . . . . 340
4.1.3 Drawing to a screen using SDL2 . . . . . . . . . . 348
4.1.4 Drawing the schedule screen using SDL2 . . . . . 357
4.1.5 Unix way - sched . . . . . . . . . . . . . . . . . . . 363
4.1.6 Unix way - parse_gps . . . . . . . . . . . . . . . . 369
4.1.7 Unix way - merge . . . . . . . . . . . . . . . . . . 374
4.1.8 Monolithic way - parsing . . . . . . . . . . . . . . 380
4.1.9 Monolithic way - scheduled arrivals and GPS data . 386
4.1.10 Monolithic way - merging and putting it all together 393
4.2 A fistful of Python exercises . . . . . . . . . . . . . . . . . 401
4.2.1 Graphs . . . . . . . . . . . . . . . . . . . . . . . . 401
4.2.2 Parsing . . . . . . . . . . . . . . . . . . . . . . . . 410
4.3 SQL and its relationship with online shops . . . . . . . . . 420
4.3.1 Introduction to SQL . . . . . . . . . . . . . . . . . 421
4.3.2 Adding data to an SQL database . . . . . . . . . . 433
4.3.3 Querying SQL databases . . . . . . . . . . . . . . 438
4.3.4 Generating a return form . . . . . . . . . . . . . . 444
4.3.5 Web UI for our return form . . . . . . . . . . . . . 450
4.4 Final bits . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
4.4.1 Software licenses . . . . . . . . . . . . . . . . . . 462
4.4.2 NP-hard problems . . . . . . . . . . . . . . . . . . 465
4.4.3 Concurrency . . . . . . . . . . . . . . . . . . . . . 471
4.4.4 Tech behind this book . . . . . . . . . . . . . . . . 482
4.4.5 Further reading . . . . . . . . . . . . . . . . . . . 488
4.4.6 Chapter dependencies . . . . . . . . . . . . . . . . 489
5
CHAPTER
ONE
THE BEGINNING
7
1 The beginning
1.1 Introduction
My wife was asking if she could become a software engineer like I did.
I have some years of experience in software engineering, and also am now
hiring and hence interviewing software engineers. I checked the offerings
around Computer Science at the local university, but it seems to me like
8
1.1 Introduction
there’s a bit of a gap between what industry needs and what the schools are
producing, at least in my local area. To some extent this is expected: univer-
sities live in the academic world, often without an explicit goal of ensuring
the graduates are employed by the industry. To mitigate, universities may
offer degrees directed more towards real world, but these run into the risk
of not being relevant or effective enough for the industry.
So I ended up teaching my wife what I think is the right stuff. Now, since
we also have a little daughter, finding time for both of us at the same time
was sometimes difficult, so I’d write down some notes or exercises for her
that she could dive into when she had time. I ended up writing more and
more and structuring things better and all of it ended up being this book.
So, I’m writing this book to teach my wife all the necessary basics around
software development so that she’ll be able to land a job. However, the book
could be useful to others as well.
If I’m being completely selfish, it’s because I’m hiring software engineers
and am finding it difficult to find any. Without going into my specific re-
quirements, I want to include enough in the book that if the reader were to
do all of the following:
• Read and understand everything in the book
• Finish all the exercises
• Write at least some personal mini project in some language
(shouldn’t be a problem after the above two points)
• Interact with the rest of the software development community, may
it be through Reddit or other social media, chat, Stack Overflow or
GitHub
…then I think that that person should have the technical skills to at least se-
riously be considered for a software engineering position.
(Apart from technical skills, you’ll also need the interpersonal skills and
common sense, or analytical and critical thinking skills, among others, be-
fore I’d consider you for a position. I’m expecting the reader to obtain these
some other way than reading this book.)
9
1 The beginning
10
1.1 Introduction
This book teaches software development. This book doesn’t teach engi-
neering, but the term “software engineer” is used to describe a person who
develops software because that’s what we seem to have arrived at as an in-
dustry.
More specifically, I’d define the terminology as follows:
• Engineering is something that’s very structured, and something you
want to learn in a very structured way. In other words, this book def-
initely doesn’t teach engineering.
• Software development is about solving a problem using software: it’s
not very clean, it’s usually not really engineering nor very scientific,
but it’s useful in practice and there’s a demand for it.
Programming, or coding, is one part of software development, among de-
sign, testing, writing specifications etc. This book is about software devel-
opment although programming plays a major part in it.
There’s also Computer Science which arguably is separate from both soft-
ware development and engineering. (It is a science after all. “Computer
Science is no more about computers than astronomy is about telescopes.”)
You possibly can’t have all the technical stuff that one needs in one
book!
11
1 The beginning
Some parts of the book use high school level maths so you should be some-
what familiar with that. You need to have a computer and be able to use it
(install software etc.).
The book requires your computer to be able to run a Unix shell and standard
Unix tools. Mac, Linux or Windows 10 should all suffice. Older Windows
versions may be fine for the purposes of this book but installing the neces-
sary software may be non-trivial.
You should have some skills around analytical thinking and problem solv-
ing. I don’t know how to teach those. I believe this book does teach them
to some extent though, as a side effect.
I do believe that almost anyone who is able to finish high school without
significant struggles can learn how to develop software. It’s not magic. It
does require persistence though; you need to be able to put effort to the
book, and it’ll take time. I believe someone with the capability to work on
the book full time, enough perseverance and help where needed, should be
able to finish the book including all the exercises in a matter of months.
It’s probably very helpful to have a tutor or someone who’s familiar with
software development to answer your questions. Use the Internet to your
advantage; there are literally thousands of techies online waiting to share
their knowledge and answer newbies’ questions. Try Stack Overflow, the
learnprogramming subreddit, GitHub, or various IRC channels, e.g. those
dedicated to specific programming languages.
You must be able to find information online. For example, notice how I
used the term “IRC channels”? If you ever do feel the need to ask a question
and decide to investigate the IRC bit further, you need to use the Internet
to a) find out what IRC is, b) find out what IRC channels there are e.g. for
a programming language you’re having trouble with, c) how to connect to
such a channel and ask your question. This book won’t have that informa-
tion.
The book is free and licensed under the Creative Commons Attribution-
ShareAlike 4.0 International License. This means that you’re free to share
the book in any medium and modify the book for any purpose, even com-
mercially, as long as you give appropriate credit and your distribution uses
the same license. See more details at http://creativecommons.org/licenses/
by-sa/4.0/. The code in this book is licensed under the MIT license.
12
1.1 Introduction
The information in this book is very dense. Most sentences are important
for the topic at hand, and information is rarely duplicated. I expect the
reader to go through the book several times. You might miss a lot of details
the first time, or two times, but should eventually be able to understand all
of it.
The book uses the pedagogical approach of assimilation, or construction-
ism; information is provided to the reader in bulk, and learning is facili-
tated by exercises which ask the student to think for themselves in an effort
to learn the material. If you don’t understand something, that may be fine.
Let it be and come back to it later. There’s a chapter dependency diagram at
the end of the book which can give indication as to which chapters you need
to understand before proceeding. Different topics are interleaved to some
degree, allowing the reader to digest some areas while working on others
and to better understand the relationships and connections between top-
ics.
I should mention at this point, if it wasn’t already clear, that the author has
no real pedagogical experience.
Overall, the book is structured into four stages. These are the main topics
in the different stages:
If you think there’s something unclear about some part of the book or oth-
erwise have any questions or comments, let me know. My email is ajsalo-
[email protected]. You may also create an issue or a pull request in GitHub.
I’m also not a native English speaker so any corrections on that front are
13
1 The beginning
14
1.1 Introduction
Most notably, the Windows cmd.exe or PowerShell are not Unix shells. Typ-
ical Unix shells characteristics are the at sign (“@”) designating your user
name and the host name of the computer you’re logged on to, a tilde (“~”)
to designate the home directory and the dollar sign (“$”) to designate the
15
1 The beginning
prompt. You can use these to identify whether you’re running a Unix shell
or not.
Exercise: Start a terminal with a Unix shell.
Is this “Unix shell” the only way to program?
Apart from the shell, we also need an interpreter and an editor. For this
section we’ll use Python as our programming language; so let’s install the
Python interpreter. Again, I can’t tell you how to do this; some OSes may
have it already installed. To find out if you have it, start your Unix shell and
try typing:
$ python
Python 3.6.0 (default, Jan 16 2017, 12:12:55)
[GCC 6.3.1 20170109] on linux
Type "help", "copyright", "credits" or "license" for more␣
,→information.
If you don’t have Python, you might see something like this instead:
$ python
bash: python: command not found
In this case you’ll need to find out how to install it. On e.g. Ubuntu, running
something like “sudo apt-get install python” might do it. On Mac you may
16
1.1 Introduction
need to install Python from the Python official web site. Although we’ll be
using Python 2 later in this book, this section will work with either Python
2 or 3 so the version you pick isn’t very important for now.
Once you do get to the Python interpreter as shown above you can exit it by
typing “exit()” (without the quotes).
Exercise: Install the Python interpreter if your system doesn’t already have
it. Run it and exit it.
Now that we have the shell and the interpreter, the final bit we need is the
editor. An editor is a program that allows writing code files, or text files
in general. For now it’s enough with an editor that’s easy to use, though
Notepad, which is installed by default on Windows, won’t do. Furthermore,
word processors such as Microsoft Word won’t do. If you’re on a Linux sys-
tem you can install e.g. gedit. On Windows you could install notepad++.
There are other editors available like Atom or Visual Studio Code. It doesn’t
really matter which one you install now, as long as you end up with a win-
dow where you can type text and save it to a file. Here’s an example of what
an editor could look like:
17
1 The beginning
print("Hello world")
The above is a one-line Python program (which works either with Python 2
or Python 3). When run, it will write the text “Hello world” to the terminal.
Exercise: Create a file with the above contents. Call it “hello.py”. Make sure
you know in which directory you saved the file. If you’re using Windows 10
and WSL, you should be able to find the files you’ve saved in Windows at
/mnt/c/Users/<username>.
Now, we need to navigate to the directory where the file was saved, and run
the Python interpreter with our program as the input.
The directory paths are again somewhat OS dependent but you have a few
tools that help you locate your file:
• You can find out which files are in the current directory in the shell by
running “ls”.
• You can find out what your current directory is by running “cwd”
(current working directory).
• You can change the directory by running “cd” followed by the direc-
tory. E.g. if you have a directory called “Documents” in your current
working directory and you wish to change your current working di-
rectory to that directory, you can do this by running “cd Documents”.
• You can change to the parent directory by running “cd ..”.
Exercise: Run “ls” in your shell to see the contents of the current working
directory.
Now we have some idea of how to navigate around the various directories
in our Unix shell.
Exercise: Locate your hello.py in the shell. Change to that directory. If you
can’t find it, try saving to another location. If you’re on Windows you may
need to consult the Windows documentation on how to find the Windows
files from WSL or vice versa. If you’re stuck, you may also try to open the
editor from the shell e.g. by running “gedit hello.py” (if gedit is the editor
you have installed). This way, after saving the file in your editor, the file
should be saved in the current working directory.
Now that you have your source file available, let’s run the interpreter with
your source file as input by running:
18
1.1 Introduction
$ python hello.py
Hello world
This should cause the Python interpreter to run your program which will
output the text “Hello world” on the screen.
Exercise: Run your program.
If you made it here, congratulations. You’ve written your first software.
19
1 The beginning
A B X
0 0 0
0 1 0
1 0 0
1 1 1
Here, the inputs are labelled ‘A’ and ‘B’. The output is labelled ‘X’. The output
is 1 only when both A and B are 1 and 0 otherwise, hence the name AND-
gate.
20
1.1 Introduction
The logic gates can be shown in a diagram as well. Here’s what the AND-
gate would look like in a diagram:
Here, the input signals would enter from the left while the output signal
would exit to the right.
Another standard logic gate is the OR-gate. It has the following truth table:
A B X
0 0 0
0 1 1
1 0 1
1 1 1
There’s also the NOT-gate. It has only one input and one output:
A X
0 1
1 0
21
1 The beginning
These gates are enough to build complex digital devices including comput-
ers (though several million of them may be necessary).
Let’s say we wanted to put together a circuit with the following truth table:
A B X
0 0 0
0 1 1
1 0 1
1 1 0
That is, it’s almost like the OR-gate but if both A and B are 1 then we output
0. (This is also called XOR-gate, or exclusive-or.) We could build this circuit
by combining what we already have:
22
1.1 Introduction
• Finally, the output of the OR-gate and the negated output of AND-1
is combined in AND-2. The output of this gate is the output of our
circuit.
What happens here is that the output of the OR-gate is always 1 when one
of the inputs is 1.
The output of AND-1 is only 1 when both A and B are 1. However, this output
is negated, meaning that the output of NOT is 1 always except when both A
and B are 1.
Combining the above in AND-2: When both A and B are 1, the output of
NOT is 0, meaning that the output of our circuit is 0. In other cases, the
output is the same as the output of the OR-gate. Hence the final output is
as desired.
We now have a new building block: whenever we need a XOR-gate, we can
use this design.
Exercise: Using only the OR-, AND- and NOT-gates, design, with a pen and
paper, a circuit with two inputs A and B, and output X, such that the when
both A and B are 0, the output is 1. In all other cases the output must be 0.
We can now put together various logical circuits. How about practical use
cases?
Addition
One of the first professions that computers made unemployed were the
computers: people who were given arithmetic tasks such as “123,456 +
789,012”, with the goal of computing the correct answer. Indeed digital
logic can be used for arithmetic. Let’s start with addition.
0 + 0 = 0.
0 + 1 = 1.
1 + 0 = 1.
1 + 1 = 2.
Seems simple, doesn’t it? Indeed this is quite similar to our OR-gate, except
that because our values can only be 0 or 1, we don’t have the ability to encode
the number 2 in one signal. But we could have another output signal, with
23
1 The beginning
the meaning of “the output is two”. The truth table for such a circuit would
then look like this:
A B Output is 2 Sum
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
The top gate is a XOR-gate. Hence the “sum” output is A and B XOR’d while
the “output is 2” output is A and B AND’d.
What if we wanted to count higher?
2 + 0 = 2.
2 + 1 = 3.
3 + 0 = 3.
3 + 1 = 4.
3 + 2 = 5.
24
1.1 Introduction
3 + 3 = 6.
We simply add more input and output, and more gates. The truth table
could look like this:
Here, our inputs are two bits for each number, and we have three bits of
output, to capture all possible outputs. The input for either A or B can be
any of 0, 1, 2 or 3. 0 is encoded by the pair of bits 0 and 0. 1 is encoded by
0 and 1. 2 is encoded by 1 and 0. Finally, 3 is encoded by 1 and 1. The final
output can be calculated from the three bits of output using the formula
“sum has 4” * 4 + “sum has 2” * 2 + “sum has 1”.
Exercise: Check that the above truth table is correct for some row. Decode
what number A, B and output are from the bits.
In similar vein we can do e.g. subtraction and multiplication.
How about comparing whether one number is larger than another one?
E.g. for one-bit numbers we’d like the following truth table:
25
1 The beginning
A B X
0 0 0
0 1 0
1 0 1
1 1 0
Here, X is 1 when A is greater than B and 0 otherwise. This, too, can be done
using digital circuits.
Exercise: Come up with a design for a comparator matching the above truth
table.
Now that we’re able to construct digital circuits, let’s see how they can be
used to put together a device with some characteristics not completely un-
like those of a smartphone. This is the topic for the next section.
26
1.1 Introduction
In other words, there’s some input, some logic processing the input and
creating some output. In our hypothetical device, the input is taps on the
touch screen, and the output is what’s shown on the display. In our “Hello
world” program, there was no input, and the output was a text in the ter-
minal.
To be more specific, the input and output blocks like a touch screen and a
display are digital devices; they communicate with the logic part using binary
signals. Generally speaking, the input and output devices come with some
kind of a technical specification or data sheet which describe how to interact
with them. In our case, the hypothetical data sheet for our hypothetical
touch screen contains the following:
27
1 The beginning
“The X coordinate of the latest tap is output at signal A. The value is either
0 (bottom half of the screen) or 1 (top half).”
Similarly the hypothetical data sheet for the hypothetical display contains:
“To set the colour of the display, set the signals X and Y as desired. The
colour is displayed as based on the following table:”
(This display can only show one colour across the whole screen, i.e. it only
has one pixel.)
The logic part in the middle ends up doing at least three things:
• Receives information from the input blocks using logic signals
• Performs the actual logic (in our case, mapping the position of the
tap to the output colour)
• Sends information to the output blocks using logic signals
In our case, the logic in Python-like code could look like this:
if user_tap_x_coordinate == 0:
screen_color = 1
else:
screen_color = 2
28
1.1 Introduction
Exercise: Design, using pen and paper, the circuit for this logic.
We’ve now designed a device that will display different colours depending
on where the user taps the screen. Let’s further imagine we mass produce
thousands of these devices. The device is an instant hit but a new feature
requirement appears: some users would like to change the way the display
shows the colours. For example, a user would want the device to show black
if the device is tapped anywhere on the bottom half of the screen and blue
otherwise.
Because we designed the logic that decides the display colour in the hard-
ware, that is, in the digital logic using logic gates, making this change isn’t
possible without actually changing the logic and manufacturing a new de-
vice with a changed logic. To circumvent this and to make it possible to
change the way the colours are displayed without having to manufacture
a new device, we can make our device programmable. (This e.g. allows app
development on current smartphones, though smartphones also use soft-
ware for e.g. the OS.)
When a device is made programmable, it doesn’t contain the logic for its
primary purpose in hardware using logic gates. Instead, the logic is stored
somewhere else as instructions, and the device instead has logic to perform
operations depending on these instructions. Then, by changing the instruc-
tions one can change the behaviour of the device without having to manu-
facture a new device. We also have to include memory on the device. This is
where the instructions are stored.
In other words, what’s required is:
• Removing the logic in hardware for the primary purpose of the device
• Encoding this logic in a list of instructions instead
• Adding some memory to the device which holds the list of instruc-
tions
• Adding logic in the hardware to read and understand these instruc-
tions
• Making it possible to change the list of instructions later
29
1 The beginning
Here, the list of instructions is the software and the logic that reads and un-
derstands these instructions is the Central Processing Unit, or CPU. Each bit
in memory can be implemented using logic gates. Memory can be seen as
an array of boxes, each holding either a 1 or a 0, with the ability to change
the contents as needed using signals.
We’ve now covered some aspects as to how a computer works, but haven’t
yet covered how a CPU works.
CPU
A CPU receives some code in some form and must execute it. Let’s take a
look at our logic for our original program again:
if user_tap_x_coordinate == 0:
screen_color = 1
else:
screen_color = 2
1: COMPARE A WITH 0
2: IF FALSE THEN JUMP TO 6
3: SET X TO 0
4: SET Y TO 1
5: JUMP TO INSTRUCTION 1
6: SET X TO 1
7: SET Y TO 0
8: JUMP TO INSTRUCTION 1
Here, e.g. the first instruction, COMPARE, compares the two operands
given to it, and stores the result in memory to be used for the next instruc-
tion.
Typically, a CPU needs to decode the instructions from the memory. For ex-
ample, the instruction COMPARE may be defined as the input values “001”.
This means that the digital logic would read three bits from memory, see
if they match the values “001”, and if so, perform the comparison. Each in-
struction has a number that it corresponds to, and when storing the soft-
30
1.1 Introduction
ware in memory, the software would need to be stored in the format that
the hardware expects for the system to function correctly.
We now have a list of instructions such that each kind of instruction, e.g.
COMPARE, SET etc. can be implemented in hardware using logic gates. By
implementing each instruction in the hardware and making it possible to
modify the list of instructions independently of the hardware we’ve made
our device programmable.
This was a rather high level overview of how a computer and a CPU work,
but it should do for now, such that we can start to investigate how to actu-
ally write software.
31
1 The beginning
print('Hello world')
This is the program we wrote a couple of sections ago. Make sure you still
know how to create and write such a program.
Exercise: Run your ‘Hello world’ program.
Exercise: Modify the text “Hello world” (e.g. change it to ‘Hallo Welt’) in your
program and run it again.
It’s best not to copy-paste the code from this book but instead type it your-
self as this reinforces the learning effect.
Variables
Variables hold some value. The following example defines and uses a vari-
able named ‘x’:
32
1.1 Introduction
x = 5
print(x)
x = 7
print(x)
The above will write ‘5’ followed by ‘7’ in the terminal. ‘x’ is first defined with
the value 5. It is then written out before its value is changed to 7.
You can have several variables, and the assignment can refer to other vari-
ables:
x = 5
y = 6
print(x)
print(y)
y = x
print(y)
Exercise: What does the above code write out? Try it out.
Exercise: Create a program that has a variable with a value 42 and writes it
out.
Loops
for i in range(10):
print(i)
The above will print (write to the terminal) the numbers from 0 to 9. The
words “for” and “in” are Python keywords; range() is a Python function that
can be used to describe the iterations of a loop; “i” is a variable that is de-
fined using the “for” loop and will hold the current value that is provided by
the range() function.
33
1 The beginning
Exercise: What does the above code write out? Try it out.
Exercise: Write a program that prints the number 42 five times.
The print() function can also include both text and a variable. This can be
achieved using e.g. the following:
for i in range(10):
print('i has the value %d' % i)
This looks like it needs some explaining. What we have here is the text “i
has the value %d”, whereby the fragment “%d” is a placeholder for a number.
The number for the placeholder is provided by having the percent character
(“%”) after the text string, followed by the variable the value of which we
want to insert to the placeholder. Hence, the above program will print e.g.
“i has the value 0”, “i has the value 1” etc.
Exercise: Write a program that prints the value of a variable as part of other
text five times.
The range() function can also be used to start from another number than
0. To start from 1 you can use:
for i in range(1, 10):
print('i has the value %d' % i)
34
1.1 Introduction
Branches
x = 5
if x < 10:
print('x is smaller than 10')
Here, we declare a variable named ‘x’ with the value 5. We then compare its
value against 10; if it’s less, we print out some text.
The else-part is optional (in Python). If we want to have it, it could look like
this:
x = 5
if x < 10:
print('x is smaller than 10')
else:
print('x is larger than or equal to 10')
x = 5
if x < 10:
print('x is smaller than 10')
elif x < 20:
print('x is smaller than 20')
else:
print('x is larger than or equal to 20')
Furthermore, the keywords “or” and “and” can be used to combine condi-
tions:
x = 5
if x <= 10 and x >= 0:
print('x is between 0 and 10')
if x < 0 or x > 10:
print('x is either negative or larger than 10')
35
1 The beginning
for i in range(10):
if i <= 5:
print(i)
else:
print('i is larger than 5')
for i in range(10):
if i == 5:
print('i is 5')
else:
print('i is not 5')
x = 5
if x < 10:
for i in range(10):
print(x)
else:
print('x is too large')
Functions
Functions can be used to capture certain code in one block. Here’s an ex-
ample of a function definition and usage:
def my_function(variable):
print('Hello')
print(variable)
(continues on next page)
36
1.1 Introduction
x = 5
my_function(x)
x = 7
my_function(x)
Here, we define the function using the keyword “def”, followed by the name
of the function and the parameters to the function. Here, the parameter is
called “variable” and is available within the function. The function receives
this parameter as input. Like with loops and branches, the function body
must be indented. We then call the function twice with different values.
Exercise: What do you think the above program prints? Try it out.
There are also pre-defined functions as part of the Python programming
language. We’ve already used some of them, e.g. range() and the numeric
comparator functions (<, <= etc.). print() is also a function (although tech-
nically only in Python 3, not in Python 2).
There are a lot more pre-defined functions in Python. For example, the
arithmetic operations (+, -, *, /) are all predefined functions. Here’s an ex-
ample of using them:
x = 5
y = x * 3 + 2
print(y)
def square(x):
return x * x
number1 = 5
number1_squared = square(number1)
print(number1_squared)
37
1 The beginning
The above will define a variable that holds the value 5, squares it (25), stores
the squared value to another variable and prints it out.
Exercise: Define and use a function that takes a number as input and re-
turns that number plus one.
Functions can be combined with branches and loops:
def square(x):
return x * x
for i in range(10):
print(i)
print(square(i))
The above will print numbers from 0 to 9 as well as the squares of those
numbers. The formatting is a bit ugly because we print “i” on one line and
the square of “i” on the next line. This can be fixed by using the following
construct:
def square(x):
return x * x
for i in range(10):
i_squared = square(i)
print("%d %d" % (i, i_squared))
Here, we use the placeholder syntax from earlier, but we write two numbers
in each line. It’s similar to what we did before but when more than one
placeholder is used then the values to be inserted in the placeholders need
to be enclosed in parentheses (here, “i” and “i_squared”).
We don’t need to define a variable before printing it out, so we could save
some typing by doing the following:
def square(x):
return x * x
for i in range(10):
print("%d %d" % (i, square(i)))
38
1.1 Introduction
def square(x):
return x * x
for i in range(10):
i_squared = square(i)
if i_squared > 10:
print(i_squared)
for i in range(10):
for j in range(10):
added = i + j
print("i=%d; j=%d; i+j=%d" % (i, j, added))
Exercise: Print the multiplication table for numbers from 1 to 10. I.e. the
numbers 1 * 1, 1 * 2 etc. up to 10 * 10.
Python also supports floating point numbers, i.e. numbers with a decimal
point (with the number of supported digits before and after the comma
varying depending on the magnitude of the number). Here’s an example:
x = 5.2
y = 3.4
print('x and y summed is %f' % (x + y))
Here, because x and y are floating point numbers, we need to use “%f” as
the placeholder instead of “%d”. (If we used %d, we’d only see the number
rounded down to the first integer.)
Exercise: Define and use a function that calculates the area of a circle. The
function should receive the radius as the input and return the area as the
output. Use the formula “area = 3.14 * radius * radius”. (You can also use
the Python built-in power function by writing e.g. “radius ** 2” for radius
squared.)
Exercise: Use the above function to print out the areas of circles with radius
1, 2, 3… up to 10.
Exercise: Write a program that, for numbers from 1 to 10, will print the area
of the circle with that radius if the area is between 10 and 100.
39
1 The beginning
Exercise: For numbers from 1 to 10, calculate both the area and the square
of the number. Print out the difference between the area and the square.
Apart from the standard arithmetic operators and the power function,
there’s another potentially useful operator, namely modulo. It returns the
remainder after a division, e.g.:
a = 23
b = 3
print('a = %d; b = %d; a / b = %d' % (a, b, a / b))
print('a = %d; b = %d; a %% b = %d' % (a, b, a % b))
Exercise: What do you think the above will print? Try it out.
Exercise: Write a program that prints out the numbers between 1 to 10
which, after being divided by 3, have a remainder of 1.
We now have enough in our toolbox to write FizzBuzz: FizzBuzz is origi-
nally a children’s game where each player is expected to tell the next num-
ber, starting from 1, except if the number is divisible by 3 then the player
should instead say “Fizz”, and if the number is divisible by 5 then the player
should say “Buzz”, and if the number is divisible by both 3 and 5 then the
player should say “FizzBuzz”. We should write a program that plays this
game; from 1 to 100, it should print the correct answer. The correct output
should start with:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
(continues on next page)
40
1.1 Introduction
Exercise: Write a program that produces the correct output, for numbers
from 1 to 100.
If you succeeded in all the exercises of this section, congratulations! Not
all software engineering applicants are able to write the code to solve
FizzBuzz.
41
1 The beginning
42
1.1 Introduction
Things do look a bit different if you have several C source files and libraries,
namely like this:
Here, the compiler needs to be called multiple times. But our programs will
be one file only, at least for now.
1 #include <stdio.h>
2
3 int main(void)
4 {
5 printf("Hello world\n");
6 }
43
1 The beginning
Installing a C compiler
Let’s now ensure we have a C compiler (which in our case includes the as-
sembler, the linker and the standard library) installed.
You may already have one installed. The most common C compilers at the
time of writing in Unix systems are gcc and clang. For now it’s not relevant
which one you use. You can test if you have gcc installed by running e.g.
the following:
If you get no output, then you have gcc installed. You should then have the
file “hello” in the current working directory. This is our binary file.
You can also try if you have clang installed using e.g. the following:
Again, no output implies clang having successfully run and compiled the
program. For both compilers we passed the command line flag “-o” which
makes it possible for us to define the output file, which we define in the
following parameter to be “hello”. The last parameter to the compiler is the
input C source file.
44
1.1 Introduction
If you have neither gcc nor clang installed, please install one of them. Again,
I cannot tell you how as it is platform dependent; please perform the rele-
vant online searches as necessary.
Once you have been able to compile the “Hello world” program successfully,
you can then run the resulting binary file with the following:
$ ./hello
Hello world!
Here, the prefix “./” means we want to run an executable file in the current
directory. As we see, the output is what we passed to printf().
Exercise: Compile and run the “Hello world” program.
Exercise: Remove the characters “\n” from the parameter to printf(). Com-
pile and run again. What changed?
45
1 The beginning
Variables in C
Now that we’re able to compile and run C programs, let’s see how to use
variables.
A variable is defined in C by first defining the type of the variable, followed
by the name of the variable. Optionally, the value of the variable can be set
when defining the variable. Associating a type with a variable is a way of the
programmer telling the compiler how the data is intended to be used. There
are several possible types and programs can define new types. For example,
int and float are types (integers and floating point numbers respectively,
whereby the number of bits used for storing the data, i.e. the minimum
and maximum integer values and the floating point number precision are
platform specific).
Once a variable has been defined, it can be used by assigning a value to it,
using standard operations and functions such as arithmetic and passed to
functions such as printf(). Here’s an example of defining and using vari-
ables:
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int x = 5;
6 int y = 42;
7 int z;
8 z = x * 3 + y;
9 printf("z is %d\n", z);
10 }
46
1.1 Introduction
Loops
There are several ways to define a loop in C. They’re all equivalent but have
somewhat different syntax.
A for loop has three clauses; the initialisation clause, the controlling expres-
sion and the expression to be performed after each iteration. An example
may be the best way to illustrate this:
47
1 The beginning
1 #include <stdio.h>
2
3 int main(void)
4 {
5 for(int i = 0; i < 10; i++) {
6 printf("%d\n", i);
7 }
8 }
#include <stdio.h>
int main(void)
{
for(int i = 9; i >= 0; i--) {
printf("%d\n", i);
}
}
48
1.1 Introduction
As you can see, it’s similar, but the variable “i” is instead initialised at 9, the
condition is changed such that the loop is repeated as long as the value of
“i” is 0 or higher, and the value of “i” is decremented at each iteration.
A while loop is similar to the for loop but in some ways simplified. The fol-
lowing program is functionally equivalent to the first for loop example:
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int i = 0;
6 while(i < 10) {
7 printf("%d\n", i);
8 i++;
9 }
10 }
• Line 5: We define a variable “i” of type “int” and assign the value 0 to
it.
• Line 6: We define our while loop by using the keyword “while”, fol-
lowed by parentheses which include the controlling expression sim-
ilar to the for loop, followed by the loop body.
• Line 7: We print out the value of the variable “i”.
• Line 8: We increment the value of “i”.
Exercise: Type the above code to a file. Compile it and run it.
Exercise: Rewrite the second for loop example (printing out the value of “i”
in reverse order) by replacing the for loop with a while loop.
The third loop construct in C is the do loop. It’s very similar to the while loop
but ensures the loop body is executed at least once. Here’s an example:
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int i = 0;
6 do {
7 printf("%d\n", i);
(continues on next page)
49
1 The beginning
This is functionally equivalent to the while loop example from above. Here,
the loop body is executed once before checking whether the control expres-
sion evaluates to true. The control expression is evaluated after each follow-
ing iteration.
Whitespace in C
#include <stdio.h>
int main(void){
for(
int i = 0;
i < 10;
i++)
{
printf(
"%d\n",
i
)
;
} }
This will behave exactly the same as the original example. Generally
it makes sense to pick one form of indentation and stick with it.
#include <stdio.h>
int main(void)
(continues on next page)
50
Random documents with unrelated
content Scribd suggests to you:
“Oh, my God!” she gasped, the completeness of the tragedy
impinging on her for the first time. “You sold him to be killed! No,
no!” she cried, recovering. “He wouldn’t give five pounds just for a
carcase!”
“Then ef that ain’t killed yet,” said the Gaffer, “that won’t be till
to-morrow night.”
A sensible remark for once, Jinny thought, subsiding almost
happily into a chair. It had been silly even to contemplate setting out
afresh after all the day’s journeyings. In this weather the doomed
horses would be shut up in Mr. Skindle’s field,—she recalled their
joyous gambollings—the first thing in the morning she would set out
to the rescue. And yet what if her grandfather should be wrong,
what if Mr. Skindle killed before breakfast! No, delay might be fatal,
and she started up afresh and, unlocking the stable-door, brought in
her lantern.
“Ye’re not gooin’ to Mr. Skindle at this time o’ day?” protested the
Gaffer from his soothing tray.
“I must.” She lit the candle in the lantern.
“Well, give my love to his mother!” She thought it sarcasm and
went off even more embittered against him.
She had not gone far before she met the returning reveller. Nip’s
ears were abased and his eyes edge-long, but in an instant, aware
she was glad of his company, he welcomed her roysterously to it.
But the blackness that now began to fall upon the pair was not
wholly of the night. Great livid thunder-clouds were sagging over
them, and of a sudden the whole landscape was lit up with blue
blazings and shaken with terrific thunder. And then came the rain—
the long-prayed-for rain, with its rich rejoicing gurgle. Providence,
importuned on all sides, now asserted itself in a pour that was like
solid sheets of water, and the parched soil seemed swilled in a few
seconds. To plough along was not only difficult but foolhardy.
Heaven had clearly thrown cold water on the project. She crept
almost shame-facedly back to her still guzzling grandfather.
“Got a wettin’,” he chuckled. “Sarve ye right to be sow
obstropolus. And sarve you right too!” he added, launching a kick
towards the shivering and dripping animal. Nip, though untouched,
uttered a dreadful howl, and grovelled on his back.
“Do you want to kill them both?” cried Jinny. She was now sure
that Methusalem was beyond reprieve—the point of Mr. Skindle’s
strategy in purchasing him, so as to leave her no sphere but
matrimony, was penetrating to her mind, and, by the side of such “a
dirty bit,” Will’s frank and blusterous methods began to appear
magnanimity itself. To have found out, too, probably from Bundock,
that she would be away at the wedding! The sly skunk!
XIV
For a full hour after Nip and her grandfather slept the sleep of
the innocent in their beds, she sat up watching the storm, with no
surprise at this unrest of the elements. No less a cataclysm was
adequate to the passing of Methusalem. This sympathy of Nature
indeed relieved her, some of her stoniness melted, and her face—as
if in reciprocation—became as deluged as the face of the earth-
mother. All the long years with Methusalem passed before her vision,
ever since that first meeting of theirs outside the Watch Vessel: their
common adventures in sunshine and snow, in mud and rain, her
whip only an extra tail for him to whisk off his flies withal: ah, the
long martyrdom from those flies, especially the nose-fly that spoilt
the glory of July. She heard again that queer tick-tack of his hoofs,
his whinnying, his coughing, saw the spasmodic shudder of his
shoulder-joints, the peculiar gulp with which he took his drench.
How often they had gone together to have a nail fixed, or his shoes
roughed for the winter! What silly alarms he had felt, when she had
had to soothe him like a mother, coax him to pass something, and
on the other hand what a skill beyond hers in going unguided
through the moonless, swift-fallen winter night! How happily he had
nibbled at the beans in his corner-crib or the oats in his manger,
what time he was brushed and combed—would that beloved mane
get into rats’-tails no more? Was she never again to feel that soft
nose against her cheek in a love passing the love of man? Could all
this cheery laborious vitality have ended, be one with the dust she
had so often brushed from his fetlocks? That joy which had set him
frisking like an uncouth kitten when he was released from the shafts,
was it not to be his now that he was freed for ever? Was he to be
nothing but a carcase? Nay—horror upon horror—would he survive
only as glove-or boot-buttons, as that wretch of a Skindle
calculated? Would that triumphant tail wave only at human funerals,
his own last rites unpaid? A remembrance of her glimpse at the
charnel-house made her almost sick. Fed to the foxhounds perhaps!
Could such things be in a God-governed world?
And her cart too would go—of the old life there would be nothing
left any more. She could see the bill pasted up on the barn-doors:
“Carrier’s Cart on Springs, with Set of Harness, Cart Gear, Back
Bands, Belly Bands——” But what nonsense! Who would advertise
such a ramshackle ruin? “A Shabby, Cracked Canvas Tilt, Patched
with Sacking”—fancy that on a poster! No, like its horse, it would be
adjudged fit only to be broken up. Perhaps somebody wearing
Methusalem on his shoes would sit on the bar of a stile made of its
axle-tree.
She woke from her reverie and to the wetness of her face,
streaming with bitter-sweet tears. The moon rode almost full, and in
the pale blue spread of sky sparse stars shone, one or two twinkling.
She opened the door and went out into the night. What delicious
wafts of smells after the long mugginess of the day! The elms and
poplars rose in mystic lines bordering the great bare spaces. Surely
the death of Methusalem had been but a nightmare—if she went to
the stable, there would he be as usual, snug and safe in his straw.
She sped thither, over the sodden grass, with absolute conviction.
Alas, the same endless emptiness yawned, the manger looked
strange and tragic in the moonlight. She thought of a divine infant
once lying in one, wrapped in his swaddling-clothes, and then
looking up skywards she saw a figure hovering. Yes, it was—it was
the Angel-Mother, so beautiful in the azure light. At the sight all her
anguish was dissolved in sweetness. “Mother! Mother!” she cried,
stretching up her arms to the vision. “Comfort thee, my child!” came
the dulcet tones. “Methusalem is not dead, but sleeping!”
At the glad news Jinny burst into tears, and, in the mist they
made, her mother faded away. But she walked in soft happiness
back to the house, and said her prayers of gratitude and went
believingly to bed and slept as when she was a babe.
So long did she sleep that when she woke, the old man was
standing over her again, just as the morning before, save that now
he was in his everyday earth-coloured smock and wore a frown
instead of a wedding-look, and the sunshine was streaming into the
room.
“Where’s my breakfus, Jinny?” he said grumpily.
“I’m so sorry,” she said, yawning and rubbing her eyes. “I must
have overslept myself.” And then she remembered Mr. Pennymole’s
story, and a smile came over her face.
“There’s nawthen to laugh at,” he said savagely. “Ef ye goo out at
bull’s noon, ye’re bound to forgit my breakfus. And that eatin’ his
head off too! Ye know there’s no work for him. Ye dedn’t want to
bring him back.”
“Back?” she almost screamed. “Is Methusalem back?”
“As ef ye dedn’t know!” he said, disgusted.
Disregarding him and everything else, she sprang out of bed,
rolling the blanket round her, and with bare feet she sped to the
stable. But she had hardly got outside before the jet of hope had
sunk back. It was but another of her grandfather’s delusions.
But no! O incredible, miraculous, enchanting spectacle! There he
was, the dear old beast, not dead but sleeping, exactly as the Angel-
Mother had said, not a hair of his mane injured, not an inch of his
tail less, and never did two Polynesian lovers rub noses half so
passionately as this happy pair.
Jinny would have rubbed his nose still more adoringly had she
known—as she knew later—the rôle it had played in his salvation.
The threatening thunder-clouds had made Mr. Skindle put off his
slaughtering till the morning, so that he himself might get home
before the storm broke. The doomed horses he left shut in his field
—who cared whether they got wet? But as soon as the coast was
clear of Skindle and his latest-lingering myrmidons, Methusalem had
simply lifted the latch of the gate with his nose and gone home. Mr.
Skindle, oblivious of this accomplishment of his, though he had seen
it practised on his never-forgotten journey with Jinny, had imagined
him conclusively corralled. Mr. Charles Mott, returning with some
boon companions from a distant hostelry where the draughts were
more generous than he was allowed at “The Black Sheep,” was
among the few who saw the noble animal hurrying homewards, and
he told Jinny the next Tuesday that she ought to enter Methusalem
for the Colchester Stakes. His unusual rate of motion was also
reported by Miss Gentry, who, lying awake with a headache after the
excitement of the day, had heard him snort past her window just
when the storm was ebbing. He must have sagely sheltered while it
raged and have arrived at Blackwater Hall soon after Jinny had
beheld her vision.
But as yet Jinny attributed the miracle to her Angel-Mother. And
what a happy Sunday morning was that, with the church bells all
clearly ringing “Come and thank God and her!” She did not fail to
obey them, though not without a sharp turn in that padlock, and
with the little key safe in her bosom. And having happily ascertained
from Mother Gander that the five-pound note was valid in pieces,
she dropped them into Mr. Skindle’s letter-box together with remarks
that drew heavily on her Spelling-Book’s “Noun Adjectives of Four
Syllables.” Cadaverous (Belonging to a Carcase); Execrable (Hateful,
Accursed); Sophistical (Captious, Deceitful); Sulphureous (Full of
Brimstone); and Vindictive (Belonging to an Apology) were among
her proudest specimens. They were not calculated to encourage Mr.
Skindle’s matrimonial hopes.
CHAPTER XI
WINTER’S TALE
Thou barrein ground, whome winters wrath hath wasted,
Art made a myrrhour to behold my plight.
Spenser, “The Shepheards Calendar.”
I
Pitter-patter was the dominant note of the rest of the year. The
prayer for rain had been only too successful, and the blackbirds
whistled their thanksgiving over their worms. But humanity
grumbled with its wonted ingratitude. There were warm and windy
days, and cold and sparkling days, but the roads never quite dried
up. The short cuts to Frog Farm became impassable for Bundock; in
the coursing season the long-grassed marshlands clove to the
spectators’ gaiters, and when the beagles were out, Jinny had the
satisfaction of seeing Farmer Gale and breathless bumpkins
floundering over sodden stubble-fields or ankle-deep in mud, what
time baffled whippers-in piped plaintively, or jetted husky cries at
their scattered pack. Glad as she was to eat of the leporine family,
she detested sport for sport’s sake, even the fox-hunting, though her
poultry-run had just been raided and a dog-fox had snarled
fearlessly at Nip from the ditch. Once, when the hare, crossing her
cart with the dogs at his very heels, cleared the broad ditch with a
magnificent leap, Jinny clapped her hands as though at a Flippance
melodrama.
Sport for life’s sake was another affair, and she looked back
regretfully to the good old times described by her grandfather, when
the farmer, having finished his day’s work, would go out rabbit-
shooting to preserve his crop, or when the fox could be shot, snared,
or even hooked, as a dangerous animal. Now, when poor old Uncle
Lilliwhyte had found Jinny’s vulpine enemy dead in one of his gins,
caught by a claw, that rising vet., Mr. Skindle, was called in to make
a post-mortem examination, and it was only because he certified
that the sacred animal had died of starvation, and not been
poisoned, that the old woodman escaped the worst rigours of the
unwritten law. As it was, his crime in setting the trap at all on land
not his own, and his failing—through a new attack of rheumatism—
to examine it before the fox died, almost resulted in his being
officially driven from his derelict hut into the Chipstone poorhouse; a
fate he only escaped by passionate asseverations that he had always
been and till death would continue “upright,” by which he meant
“independent.”
That was in one sense more than Jinny could call herself, for her
store of barley or rye for her breadmaking was dangerously low, and
she had come to depend a good deal on the food brought by this
queer raven at prices more corresponding to his gratitude than to
market value. She still peddled her goats’ milk for a trifle among her
neighbours, the abundant blackberries gave her fruit (though she
could not afford the sugar for jam), she had gathered nuts as
industriously as a squirrel, she ensured jelly for her grandfather by
making it out of her own apples, while by exchanging the bad apples
with a neighbour who kept pigs, she got Methusalem some “green
fodder” in the shape of tares. But it was an unceasing strain to keep
things going in the old style, and Uncle Lilliwhyte’s spoils were more
than welcome, for his activities varied from codling-fishing to eel-
spearing, and from fowling on the saltings to collecting glass-wort
for pickling. His rabbits and hares came with suspiciously injured
legs, and Jinny seeing the bloody-blobbed eyes could only hope they
had not been long in his wire loops. As she felt the long, warm,
beautiful bodies, she had to tell herself how pernicious they were to
the root-crops or the young apple-trees.
More legitimate spoils arrived when the old man was well enough
to crawl to the nearest salt-marsh with his ancient fowling-piece, for,
when the ebb bared the mud, countless sea-birds came to feed, and
more than once a brace of mallards offered Jinny a vivid image of
her inferiority to the rival carrier, so gorgeously shimmering was the
male’s head, so drab the female’s. For while the driver of the Flynt
Flyer had been blossoming out in the frock-coat he had first sported
for the Flippance wedding, Jinny had been refraining even from her
furbished-up gown, reserving it mentally for a last resource and
feeling herself lucky that it was still unpawned. But one day when
the vehicles met—for despite the heaviness of the going Jinny
foolishly and extravagantly continued to plod her miry rounds—she
caught Will looking down so compassionately at her spotting shoes
that she straightway resolved to buy another pair at any sacrifice.
Savage satisfaction at her defeat she could have borne, but this pity
she would not brook. Better sell the goats, especially as Gran’fer
would need a new flannel shirt for the winter. The animals were not
very lucrative, and one out of the three would suffice to supply milk
for herself and—by its bleat—her grandfather’s sense of stability. But
she had reckoned insufficiently with this last: he admitted he had no
great stomach for her goats’ cheese, and felt a middling need for
flannel, but he clung to his nannies as though without them his
world would fall to pieces. That her shoes were doing so, he did not
remark.
In the end—though she shrank from the three golden balls on
her own behalf—there was nothing for it but to pledge her wedding-
frock under pretence it was a customer’s. But in her dread lest the
pawnbroker should recognize the dress, the sharpness which
extracted the utmost from him for her distressed clients was
replaced by a diffident acceptance of barely enough for the shoes.
This discussion about her live stock, however, gave her an idea.
She carted part of her poultry to and fro in a crate, and their
clucking and fluttering gave an air of liveliness to the business and
made even Will Flynt believe it had woke up again, especially as he
saw the smart new shoes on the little feet, supplemented presently
by a new winter bonnet, which, despite his experience with his own
mother’s bonnet, he did not divine was merely an old one, whitened
and remodelled by Miss Gentry.
Thus the equinoctial season found the little Carrier still upon her
seat, defiant of competition and radiating prosperity from the crown
of her bonnet to the sole of her shoe. Even the plainness of her skirt
and shawl seemed only an adaptation to the weather. But she would
have been better off by her log fire, making the local variety of
Limerick lace with which she was on other days trying to eke out her
infrequent sixpences. Though the rain abated towards the end of
October, halcyon days and even hours alternated with hours and
days of turbulent winds and hailstorms, and the sky would change in
almost an instant from a keen blue, with every perspective standing
out clear and sun-washed, to a lowering roof of clouds spitting
hailstones, and a gentle wind would be succeeded by half a gale that
stripped their flames from the poplars and sent the reddened beech-
leaves whirling fantastically. In November these blasts grew more
biting, Nip cowered in his basket within the cart, and the calves in
the fields sheltered themselves behind the blown-down trunks of
elms. Shivering, Jinny reminded herself that the real object of her
rounds was the bi-weekly gorge at Mother Gander’s.
They were indeed more generous than ever, these midday meals,
so relieved was Jinny’s hostess to find she had not really been
baptized into Mr. Fallow’s church. Mrs. Mott even had the Gaffer’s
beer-barrel replenished gratis. Not that she had any suspicion of the
girl’s straits. Though parcels were no longer left at the bar for Jinny,
the poor woman was too taken up with her own troubles to draw the
deduction from that. Beneath her imposing blue silk bodice beat a
wounded heart, and in Jinny’s society she found consolation for the
lack of her husband’s.
For a quarrel had begun between the Motts which was destined
to shake all Chipstone with its reverberations. Mr. Charles Mott had
profanely refused to be “Peculiar” any longer. The endeavour to draw
him to the Wednesday services had proved the last straw. To him
religion and Sunday were synonyms, and he had been willing to
concede the day to boredom. He was a sportsman and was ready to
play fair. But his wife was not playing fair, he considered, when she
pretended that ratting, coursing, and dicing remained reprehensible
even on weekdays. Expostulatory elders had vainly pointed out to
him that it was only the Churchman who made so much of Sunday
and so little of every other day, and Deacon Mawhood had been
compelled to order several goes of rum at “The Black Sheep” to find
opportunities of explaining to its landlord that his cravat-pin and
plethora of rings were an offence. Let him note how his admirable
wife had given up her gold chain. “Well, I don’t want no chain,”
Charley had retorted, and his cronies still acclaimed the repartee. He
had, in fact, broken his chain and would not even go to the Sunday
chapel.
“You and me have both got our cross to bear,” Deacon Mawhood
sighed sympathetically to the distraught lady. “There’s saints among
us as won’t even keep a cat or a bird because the thought of them
may come ’twixt the soul and chapel. Oi sometimes suspicion it’s a
failing in roighteousness to keep a husband or a wife—partic’lar
when they riots on your hard-earned savings.”
The grievances which the poor hostess of “The Black Sheep”—
now become a keeper of one—poured into Jinny’s ear, fully
confirmed all the Spelling-Book had told her of the wickedness of
man—its preoccupation with the male gender had left woman
unimpugned. But it was more under Mr. Mawhood’s encouragement
than Jinny’s that this female pillar of the chapel now sent the
Bellman round Chipstone with his bell and his cocked hat and his old
French cry, to inform all and sundry that she would not be
responsible for her husband’s debts.
It was a procedure which scandalized Chipstone. Since the day
when a neighbouring village had set up its “cage” for drunken men
in the pound, with the other strayed beasts, no such blow had been
dealt at the dignity of man. But Charley and his crew met it with
derisory laughter. All Mrs. Mott’s property was his—or rather theirs:
he could sell the lease of “The Black Sheep” over her head, if she did
not behave herself. Nay, he could sell her very self at the market
cross, the bolder maintained, not without citing precedent. By many
the Bellman was blamed for compromising the dignity of his sex: by
none so contemptuously as by Bundock. For the Crier, not taking his
own announcement seriously, had embellished it with facetious gags
that set the street roaring. “I wouldn’t say if they were funny,”
complained Bundock. “Anybody can play on the word ‘Peculiar,’ and
certainly peculiar it is to put your husband in the stocks, so to speak.
I don’t deny Charley’s legs sometimes need that support. But what
can you expect if you marry your pot-boy? You must take pot-luck.
He, he, he!”
To which the bulk of Chipstone Christendom added that however
prodigal the ex-potman, he did not waste so much money as his wife
lavished on that ridiculous sect of hers. A hundred pounds for the
bishop at his jubilee birthday, it was said with bated breath—“a noice
fortune!” Really, Charley was only too long-suffering not to take his
property, including his wife, more strictly in hand, and when it was
learnt that lawyers’ letters were actually passing between the
bedrooms of the parties there was general satisfaction. In short,
public opinion was as outraged by Mrs. Mott’s treatment of her
husband as by her original acquisition of him. The only difference
was that Mr. Mott was now a martyr.
The insult to the male sex was especially resented by the
tradesmen to whom the martyr stood so profitably indebted, and
under their incitement a new ban might have been put on “The
Black Sheep” but for the reluctance of Will Flynt, who, though
second to none in reprobation, refused to shift the headquarters of
his coach to the rival establishment. That would only be hurting
Charley’s business, he pointed out, and indirectly themselves. The
economic aspects of revenge had not occurred to these muddle-
heads, and they were grateful to the coach-driver for the reminder.
They did not know that his true motive for sticking to “The Black
Sheep” was that Jinny was to be encountered in its courtyard on
Tuesdays and Fridays. Nor was Jinny herself aware how profusely
she was repaying Mrs. Mott for her meals.
As if this scandal among the “Peculiars” was not enough, Deacon
Mawhood himself came into ill odour more literally. For in carrying
out his agreement to clear the Gentry cottage of rats, he had
committed the crime of which Uncle Lilliwhyte had been acquitted:
he had operated by poison, to wit, and the stench of the dead
vermin in their holes nearly crazed the excellent dressmaker, already
sufficiently distracted by the silence of her bosom friend, Mrs.
Flippance, swallowed up in Boulogne as in a grave. Miss Gentry, like
Mother Gander, now wept on Jinny’s shoulder, though it had to be
done outside the garden gate, and even there the wafts caught one.
If it had not been for the prediction that she would be drowned, did
she ever set foot on a boat, she would have been in Boulogne weeks
ago with her darling, but, like a ghost, she could not cross water.
Indeed she would already have been a ghost but for her strong
smelling-salts, her decoction of scabious against infection, and the
fumigation of the cottage. Jinny did not shrink from bearding her
spiritual superior in his bar and giving Mr. Joshua Mawhood a taste
of her tongue. If that was his notion of religion, he ought to be cast
out of his chapel, and she would let Mrs. Mott know of what a
hoggish “illusion” he had been guilty—(Illusion, Sham or Cheat
—“The Universal Spelling-Book”).
But the Deacon, standing on the letter of his bond, was
impermeable to reproach—nay, had a sense of righteousness, as
having incidentally punished a distributor of tracts no less offensive
than his dead rats. Not even the remonstrances of Mr. Fallow, who
had arranged the compromise over Mrs. Mawhood’s dress, could
bring the Deacon to a sense of sin, still less of compensation. “Her
rats were eating the pears like hollamy,” he said, “and Oi’ve cleared
cottage and orchard of ’em.” Mr. Fallow was so interested to know
what “hollamy” was, that he went away with a diminished sense of
failure. But neither dictionaries nor octogenarians could throw any
light on its etymology. The most plausible conjecture he could reach
was that it must be “hogmanay,” gifts made at the year’s end.
II
But if the Peculiar Faith was thus involved in scandal,
Churchmanship did not fail to provide its quota of gossip to the
months that ended a fateful year. It was not only that Miss Blanche
of Foxearth Farm had collected the scalp of yet another suitor (and
one who, as Bundock’s own eyes had witnessed at the Flippance
wedding-feast, had been wantonly encouraged); it was that the
minx, whose brother Barnaby went about in October saying Will
Flynt was not good enough for her, became openly engaged in
November to that obviously inferior specimen, Mr. Elijah Skindle. And
old Giles Purley, tired of vagaries so incongruous in a churchwarden’s
family, was, said Bundock’s father, imperiously hurrying on the
match.
Although it was the postman who was the reference on the
liberties permitted to Will at the wedding breakfast, it was his
bedridden parent who became the leading authority on the new
Blanche engagement. That was because Barnaby, disappointed of
the wider life of the Tony Flip theatre, with no winter prospect but
that of chopping down undergrowth and laying it out in long rows
for hoops and hurdles, and receiving no consolation from Jinny when
their vehicles passed, had discovered in the postman’s youngest
sister a being even more beauteous, and, when he had to take the
trap into Chipstone, never failed in devoted attendance on the sick-
bed. It was thus that all the world knew that the Flippances had not
written once from Boulogne, not even to send on the promised
cheque for the wedding-breakfast.
But even Bundock’s father had not the true history of the
engagement, constructing as he did from Barnaby’s chatter a facile
version of a “better match”: how dear ’Lijah was coining money far
quicker than Will with his petty fares and commissions, and fast
ousting Jorrow, and with what elegant furniture he was fitting up the
bridal bedchamber. Barnaby himself did not know that with the
gradual vanishing of his sister’s theatrical and operatic hopes,
Blanche, immeasurably more embittered and disillusioned than
himself, had sought in vain to win back Will, and had thrown herself
first strategically and then despairingly into the arms of Elijah, who,
summoned professionally to the Farm, had found unhoped-for
consolation for his lost Jinny. Tongues would have wagged still more
joyously had it been known that Will for his part was trying to win
back Jinny, who in her turn was as adamantine to him as he to
Blanche. The two Carriers met not seldom on the miry, yellow-
carpeted roads awhirl with flying leaves, or in the rainy courtyard of
“The Black Sheep,” and for each the scene at once shifted to a sunny
tangled fairyland where the wood-pigeon purred, and oak, elm,
beech, and silver birch in ample leaf rose in a crescent, with crisp
beech-nuts underfoot, and baby bracken. But not even Nip could
effect any visible communication. Much more gracious was Jinny to
Barnaby, as soon as she was relieved of his “passing” adoration.
The weather improved for a space in mid-November. There was a
bite in the air and the sheep-bells tinkled keenly from the pastures.
The morning hoar-frosts held till noon. A great red ball of sun and a
pale yellow crescent moon would shine together in the heavens,
early sunsets seen through bare branches seemed to fill them with a
golden fruitage that changed slowly to lemon, and the haystacks
rose magically through enchanted hazes. But the cold only made
Jinny hungrier and the earth-beauty sadder. It was as if she had
already forgotten the blessing of Methusalem’s return, and as if
carrying was not after all the heart’s deepest dream—especially with
nothing to carry.
It was a relief to be blocked occasionally by Master Peartree’s
sheep, billowing along like a yellow Nile, and to exchange
conversation with the shepherd, now at the most leisured moment
of his year. Patiently she would hear how the sheep got ravenous in
the high cold winds, why he was driving them out of yon danger-
zone of rape and turnip, and how the only real anxiety between now
and Christmas was that one might fall on its back, or the hunt
frighten the ewes: for soon somehow he would be speaking of his
next-wall neighbours in Frog Farm, and somehow the family would
always narrow to Will. “A grumpy, runty lad,” he described him once.
“Sometimes he goos about full o’ mum: other times you can yer him
through the wall grizzlin’ and growlin’ like my ould dog, time my
poor missus had her fust baiby. He’d ha’ torn the child to pieces,” he
went on, diverging into an exposition of how sheep-dogs had to be
trained to prepare for babies. But she cut it as short as she dared,
inquiring, “But who’d he be jealous of?” “The baiby—Oi’m explainin’
to you!” he said. “No, I mean, who’s young Mr. Flynt jealous of?” she
asked, wondering how Will could know that she had been shedding
such gracious smiles on Barnaby. And when the shepherd replied
“ ’Lijah Skindle, in course,” she winced perceptibly. But though the
sting of the reply rankled, she was not so sure as the rest of the
world that it was true.
III
The abundance of black sloes, they said, foretold a hard winter,
and as the winter approached, Jinny’s outlook grew darker. Even to
keep a roof over their heads was not easy with the thatch
everywhere holed by starlings. Driblets came through the old man’s
bedroom ceiling and were caught in a pail. And as for the walls,
Daniel Quarles cursed the builder who had put in such bad mortar
that “big birds came and picked the grit out o’ the lime.” The rain
drove even through the closed lattices. To keep the living-room dry,
he had made Jinny purchase putty, of which he daubed no less than
three pounds over the rotting woodwork of the window. A stumpy
piece of log he also nailed to the bottom of the window to block up
the crevices, though he could do nothing with the top of the kitchen
door through the little vine that grew over it, and which in some
years yielded several pounds of small white grapes.
And if it was high time that her Hall should be patched up, Jinny
often thought with commiseration of poor Uncle Lilliwhyte in his
leaky hut throughout all these rains. Even from a selfish point of
view, his health was a consideration. If he broke up, a main source
of supply would disappear, and any day he might be at least
temporarily paralysed by his rheumatism, and need provender
instead of supplying it. A frail reed indeed to rely on, and Jinny
began to wonder if she had been wise in training Nip so carefully not
to hunt rabbits. With food and shelter thus alike insecure, Jinny,
remembering the formula of her sect, resolved to “ask in faith.”
Perhaps too conscious a resolution impaired the faith—at any rate
Providence, even with an accessory at court in the shape of the
Angel-Mother, proved stony, and the Angel-Mother herself appeared
limited in her powers, however limitless her sympathy. She could not
even make folks demand tambour lace. Jinny began to wonder if no
terrestrial powers remained to be invoked in the old man’s behalf.
What had become of all the children, whose names were recorded in
the fly-leaf of his hereditary Bible, and only some of whom had their
deaths chronicled? Cautiously she probed and pried into corners she
had never dared approach before, instinctively feeling them full of
cobwebs and grime. And her instinct was justified—each child had
been more “obstropolus” than the others. One of the daughters was
always “a slammacks” and had married beneath her, another—a
beauty even fairer than Jinny’s mother—had, on the contrary, caught
a London linen-draper on his holidays and looked down on her
father, who would starve rather than eat a bit of her bread. One boy
had “ ’listed,” another been beguiled into the Navy by that “dirty little
Dap,” a third—a lanky youth nicknamed “Ladders”—had gone to
London to see the coronation of King William, and had disappeared,
while his devil-may-care younger brother had shot a rabbit at night
and been transported to “Wan Demon’s Land,” a name that made
Jinny shudder. This last was the only son of whose present locality
he was even vaguely aware, though, oddly enough, the sailor son
had once sent him word that, landing with a boat’s crew upon an
island called “Wan Couver,” he had come upon “Ladders” in the
service of the Hudson Bay Company, living in a stockaded fort called
after the Queen, and surrounded by naked, painted Indians. But as
none of these children were ever to dare cross their father’s
doorstep again, there did not seem much help to be looked for from
any quarter of the globe that might contain them. And Jinny was
sorry she had not left the cobwebbed corners in their original
mystery, for as the stories multiplied, the old man began to loom as
a sort of sinister raven that drives out its own offspring, though
gradually she came to see behind all the stories the same tale of a
cast-iron religion against which the young generation broke itself. Or
was it only a cast-iron obstinacy, she asked herself, after working out
that the first at least of these family jars must have occurred before
her grandfather’s oft-narrated encounter with John Wesley.
It was with a new astonishment that she learnt he had been
careful to make his will, lest Blackwater Hall should fall into the
hands of his youngest surviving rascal. “And who’ve you left it to?”
she inquired innocently.
“Why, who has the nat’ral right to it? Sidrach, in course, as ought
to has had it ’stead o’ me, he bein’ the eldest. He’s been cut out o’
the wote, too, what goos with the property and what’s worth pounds
and pounds.”
He was so convinced of the righteousness of this will, and
appeared so genuinely fond of his brother, that Jinny was afraid to
suggest the strong probability of Sidrach predeceasing him. Indeed
Sidrach began now to play a larger and larger part in his thoughts,
his mind reverted to the early days of the “owler,” and gradually the
prosperity of those days shone again over the patriarch in “Babylon.”
Sidrach now loomed as a star of hope, and Daniel spoke constantly
of paying his long-projected visit to him at Chelmsford, designing
apparently to drive the cart himself, and to inform his brother of the
magnanimous bequest that was coming to him—a legacy that would
suggest to Sidrach corresponding magnanimity in the living present.
Afraid the Gaffer would actually set forth on this dangerous and
visionary quest, Jinny did her best to discredit the notion of Sidrach’s
opulence, and quoted “Rolling stones gather no moss,” but the
Gaffer argued tenaciously that if his eldest brother had not been
comfortably off, he would have come to seek the shelter of their
roof-tree, or at least applied for their assistance, as he must be
getting old, or at least (he modified it) too old to work. Jinny offered
to write to Sidrach to inquire, but her grandfather could not find the
ten-year-old letter inviting the visit. No, he would go over and find
Sidrach instead, and Jinny was reduced to pointing out from day to
day how unfavourable the weather was for the excursion. As the
days grew shorter and shorter, the project, finding no opposition to
nourish it, seemed to subside. Jinny was almost conscience-stricken
when one Sunday after church Mr. Fallow showed her a paragraph in
the Chelmsford Chronicle, stating that “another link with the past”
had been broken by the death “last Monday from a fall downstairs”
in the Chelmsford poorhouse of a centenarian named Sidrach
Quarles, who claimed to be a hundred and five, and who was
certainly well over the hundred, his recollections, which were a
source of entertainment to all visitors, going back to the days when
England was still ruled by a “furriner,” meaning thereby George II.
The shock Jinny received at this was more of life than of death.
It made her realize she had never quite believed in Sidrach’s
existence, and this sense of his substantiality almost swamped the
minor fact of his decease. She saw no reason why he should not
remain substantial. Now that she had perhaps been guilty of
baulking her grandfather’s last chance of seeing his beloved brother,
she did not feel equal to robbing him of his last hope of assistance.
He might even agitate himself over making a fresh will, and it was
far better to let Providence or the lawyer folk decide on his heir. No
doubt when the dread necessity arose, the youngest son would be
raked up from somewhere. But that dark moment still seemed far.
The longer her grandfather lived, the more she had got used to the
idea of his never dying. True, Sidrach had died, though his habit of
living had been even more ingrained, but they did not take proper
care of you in a workhouse, and besides he had died of an accident.
She would keep Daniel from that fate, even as she would keep him
from the poorhouse.
As she sat at his side by the fire that Sunday night, knitting him a
muffler, her thoughts were playing so pitifully over poor old Sidrach
in his bleak pauper’s grave, that she was not at all surprised when
her grandfather announced with sudden decision that he would go
to see Sidrach the very next day. With a chill at her heart as though
a dead hand had been placed on it, she told him gently that it was
nonsense and that he must wait now till the spring.
But he shook his head obstinately. “Don’t seem as ef Oi’ll last out
till the spring.”
She laughed forcedly. “What an idea!”
“Not unless there’s an election and Oi can buy grub with my
wote-money,” he explained. “And Oi ain’t heerd as Parlyment is
considerin’ the likes of us.”
“You’ve always had plenty to eat!” she protested, colouring up.
“That ain’t enough in the larder when Oi looks, ne yet for
Methusalem in the barn. Ye’ve got to have a store like the beer in
my barrel. Where’s my flitch? Where’s my cheeses? Same as we’re
snowbound, like the year Sidrach went away, where would Oi get my
Chris’mus dinner? ’Tis a middlin’ long way to Babylon, but Oi’ll start
with the daylight and be back between the lights, and ef Oi’m longer,
why the moon’s arly. Oi’ll be proper pleased to see dear Sidrach
again—he larnt me my letters and Oi’ll bring him back to live with
us, now he’s gittin’ oldish. It ain’t good for a man to live alone, says
the Book, and that’ll be good for us too, he bein’ as full o’ suvrans as
a dog of fleas.”
“Nip isn’t full of fleas,” she said with mock anger, hoping to make
a diversion. “Why, you scrub him yourself!”
But he went on, unheeding. “Daniel Quarles has allus been
upright, and he’d sooner die than goo to his darter or the
poorhouse.”
She thought miserably that the poorhouse was where he would
have to go to find any traces of his beloved Sidrach, and she set
herself by every device of logic or cajolery to discourage this revived
dream of the journey. He might not even find Sidrach in such a big
city, she now hinted, but he laughed at that. Everybody knew
Sidrach, “a bonkka, hansum chap with a mosey face and a woice like
the bull of Bashan and as strong too. Wery short work he’d ha’ made
of Master Will. Carry him in, indeed! Carried him out—and with one
hand—that’s what Sidrach would ha’ done! Why, he’s tall enough to
light the street-lamps in Che’msford!”
These street-lamps, Jinny gathered, still figured in his mind as of
oil, and she was able by dexterous draughts on his reminiscences to
put off the evil day of his expedition. But whenever there was visible
dearth at table, the thought of his rich brother, flared up again.
Could Blackwater Hall perhaps be sold, she thought desperately,
and the money spent on his declining years. The thought was
stimulated by a meeting of the Homage Court which came from
railhead in the “Flynt Flyer,” and before which Miss Gentry’s landlady
as a copyholder had to do “suit and service” in the Moot Hall to the
Lords of the Manor.
But Jinny ascertained that Beacon Chimneys, a ramshackle place
with much land, had been bought up recently by Farmer Gale for his
new bride at fifty shillings an acre, farm and buildings thrown in; a
rate at which Blackwater Hall would not even yield the forty shillings
supposed to be its annual value as a voting concern—whereas the
Gaffer’s view, cautiously extracted, ran: “Ef you spread suvrans all
over my land, each touchin’ the tother, you pick up your pieces and
Oi keep my land.” Moreover, Mr. Fallow, to whom she had broached
the idea, reminded her feelingly that old people could not be moved.
He was keenly interested, however, to learn that the tenure was an
example of Borough English and hunted up the local Roll of Customs
(7th Edward IV) proclaiming that “Time out of the Mind of Man” the
“ould auncient Custom of the Bourow” had been for the heritage to
go to the “youngest Sonne of the first wife.”
At heart Jinny was glad the idea of selling the Hall was
impracticable: for what would have become of Methusalem and the
business of “Daniel Quarles, Carrier”? To surrender before the “Flynt
Flyer” would have been a bitter pill indeed.
IV
When all but the last swallows had departed, and Christmas
began to loom in the offing, the Sidrach obsession resurged, and
there being a spell of bright, clear weather, the only way she could
devise to stave off the expedition was to pretend to undertake it
herself. This was the more necessary as she was not certain the
scheme did not cover a crafty design to drive Methusalem back to
the knacker’s for the five pounds. She would start very early and go,
not to Chelmsford, but to “Brandy Hole Creek.” Instead of waiting
her Christmas letter to Commander Dap, she would visit him
personally. He was, after all, a relative and would not like to see his
brother-in-law starve—of course she would accept nothing for
herself. Already she had intended to skirt the subject at Christmas,
but to ask assistance openly was painful, while if one was too
reticent one might be misunderstood. In conversation one could feel
one’s way.
So on a misty morning of late November, when the peewits were
calling over the dark fields, she set out, the old man watching her off
with a lantern.
“And do ye bring back Sidrach,” he called after her, “sow we can
all live happy.”
For answer she blew her horn cheerily, feeling this was less a lie
than speech. She would come back with help of some sort—that was
certain. Whether she would confess that the help came from
Commander Dap or would attribute it to Sidrach, or whether it would
be wiser to come back with the discovery of Sidrach’s death, trusting
to its staleness to blunt the blow and to the news of Dap’s assistance
to overcome it, or whether it would be imprudent to mention Dap at
all, not merely because it would be hard to explain how she had met
the Commander of the Watch Vessel at Chelmsford, but because her
grandfather in his inveterate venom against Dap was capable of
refusing his favours—on all these distracting alternatives she hoped
to make up her mind during the day. Here, too, she would perhaps
have to feel her way. But she now miserably realized the wisdom of
the Spelling-Book’s “writing-piece”: “Lying may be thought
convenient and profitable because not so soon discovered; but pray
remember, the Evil of it is perpetual: For it brings persons under
everlasting Jealousy and Suspicion; for they are not to be believed
when they speak the Truth, nor trusted, when perhaps they mean
honestly.” She meant honestly enough, God knew, but into what a
tangle she was getting. She consoled herself with the thought that
anyhow there would be no pretending that day in her business—to
spare Methusalem on so long a journey the empty boxes had been
left at home.
Single drops oozed upon her as she started, but as the mist
lifted, though it revealed sodden, blackened pastures on both sides
of her route, the underlying betterness of the weather manifested
itself, and soon under an arching blue Methusalem was almost
trotting over withering bracken and fallen leaves in a world of
browns and yellows, while an abnormally friendly robin perching on
the cart-shaft, and the scarlet-berried bryony festooning the
hedgerows, contributed with the gleaming holly-berries to colour her
darkling mood. There was a certain refreshment, too, in going off by
this new route, where she for her part was as unknown. It was odd
how the mere turning her back on the Chipstone Road transformed
everything. Even the path—though this was not so pleasant for
Methusalem—had at first an upward tendency, and her mere passing
evoked stares and comments. This surprised her in turn till she
remembered Will’s disapprobation. She did not realize that the
visible emptiness of the cart, with its implication that she was not
plying, only driving it to some male headquarters, mitigated the
sensation, and she congratulated herself there was no old client to
observe the absence of cargo. In the first few miles she met no soul
she knew except the taciturn lout who had once directed her to
Master Peartree’s shearing-shed, and who was now preparing a
feeding-ground for the flock, pulling out mangolds with a picker and
hurling them over the hurdled field from a broken-pronged fork. The
sheep had to go to this higher ground for fear of floods, he informed
her in a burst of communicativeness, and it wasn’t half as eatable.
Passing a row of thatched, black-tarred cottages at a moment
when the mothers were coming to the garden gates to speed their
broods to school, she offered lifts till her space was packed with little
ones. The old cart was now alive with youth and laughter, and the
flocks of rooks from the elms were out-chattered. The road lay
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.
ebookbell.com