[go: up one dir, main page]

0% found this document useful (0 votes)
33 views64 pages

Python For Excel Felix Zumstein PDF Download

The document provides information about the book 'Python for Excel' by Felix Zumstein, which focuses on using Python for automating Excel tasks and data analysis. It outlines the book's structure, intended audience, and the tools that will be introduced, including Python libraries and packages for data manipulation. Additionally, it emphasizes the benefits of integrating Python with Excel to handle larger datasets and improve efficiency in data analysis.

Uploaded by

jonerlekwaaj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views64 pages

Python For Excel Felix Zumstein PDF Download

The document provides information about the book 'Python for Excel' by Felix Zumstein, which focuses on using Python for automating Excel tasks and data analysis. It outlines the book's structure, intended audience, and the tools that will be introduced, including Python libraries and packages for data manipulation. Additionally, it emphasizes the benefits of integrating Python with Excel to handle larger datasets and improve efficiency in data analysis.

Uploaded by

jonerlekwaaj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 64

Python for Excel Felix Zumstein pdf download

https://textbookfull.com/product/python-for-excel-felix-zumstein/

Download more ebook from https://textbookfull.com


We believe these products will be a great fit for you. Click
the link to download now, or visit textbookfull.com
to discover even more!

Python for Excel A Modern Environment for Automation


and Data Analysis 1st Edition Felix Zumstein

https://textbookfull.com/product/python-for-excel-a-modern-
environment-for-automation-and-data-analysis-1st-edition-felix-
zumstein/

Advancing into Analytics From Excel to Python and R 1st


Edition Mount George

https://textbookfull.com/product/advancing-into-analytics-from-
excel-to-python-and-r-1st-edition-mount-george/

Excel data analysis by examples Excel data analysis for


complete beginners Step By Step Illustrated Guide to
Mastering Excel data analysis Excel advance Book 1
Thanh Tran
https://textbookfull.com/product/excel-data-analysis-by-examples-
excel-data-analysis-for-complete-beginners-step-by-step-
illustrated-guide-to-mastering-excel-data-analysis-excel-advance-
book-1-thanh-tran/

Statistics for managers using Microsoft Excel Levine

https://textbookfull.com/product/statistics-for-managers-using-
microsoft-excel-levine/
Excel Crash Course For Engineers Eklas Hossain

https://textbookfull.com/product/excel-crash-course-for-
engineers-eklas-hossain/

Analysis and Implementation of Isogeometric Boundary


Elements for Electromagnetism Felix Wolf

https://textbookfull.com/product/analysis-and-implementation-of-
isogeometric-boundary-elements-for-electromagnetism-felix-wolf/

Excel VBA Programming For Dummies 5th Edition Michael


Alexander

https://textbookfull.com/product/excel-vba-programming-for-
dummies-5th-edition-michael-alexander/

Financial Modeling in Excel For Dummies 2nd Edition


Fairhurst

https://textbookfull.com/product/financial-modeling-in-excel-for-
dummies-2nd-edition-fairhurst/

Matplotlib for Python Developers Effective techniques


for data visualization with Python 2nd Edition Yim

https://textbookfull.com/product/matplotlib-for-python-
developers-effective-techniques-for-data-visualization-with-
python-2nd-edition-yim/
Python for Excel
A Modern Environment for Automation and Data
Analysis

With Early Release ebooks, you get books in their earliest form—
the author’s raw and unedited content as they write—so you can
take advantage of these technologies long before the official
release of these titles.

Felix Zumstein
Python for Excel
by Felix Zumstein
Copyright © 2021 Zoomer Analytics LLC. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales
promotional use. Online editions are also available for most titles
(http://oreilly.com). For more information, contact our
corporate/institutional sales department: 800-998-9938 or
corporate@oreilly.com.

Acqusitions Editor: Michelle Smith

Development Editor: Melissa Potter

Production Editor: Daniel Elfanbaum

Interior Designer: David Futato

Cover Designer: Karen Montgomery

Illustrator: O’Reilly Media, Inc.

March 2021: First Edition


Revision History for the Early Release
2020-07-23: First Release
2020-08-26: Second Release
2020-10-08: Third Release
2020-11-09: Fourth Release
2021-01-20: Fifth Release
See http://oreilly.com/catalog/errata.csp?isbn=9781492081005 for
release details.
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc.
Python for Excel, the cover image, and related trade dress are
trademarks of O’Reilly Media, Inc.
The views expressed in this work are those of the author, and do not
represent the publisher’s views. While the publisher and the author
have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and
the author disclaim all responsibility for errors or omissions,
including without limitation responsibility for damages resulting from
the use of or reliance on this work. Use of the information and
instructions contained in this work is at your own risk. If any code
samples or other technology this work contains or describes is
subject to open source licenses or the intellectual property rights of
others, it is your responsibility to ensure that your use thereof
complies with such licenses and/or rights.
978-1-492-08093-0
[LSI]
Preface

A NOTE FOR EARLY RELEASE READERS


With Early Release ebooks, you get books in their earliest form—
the author’s raw and unedited content as they write—so you can
take advantage of these technologies long before the official
release of these titles.
If you have comments about how we might improve the content
and/or examples in this book, or if you notice missing material
within this chapter, please reach out to the author at
felix.zumstein@zoomeranalytics.com.

Microsoft is running a feedback forum for Excel on UserVoice where


everybody can submit a new idea for others to vote on. The top
voted feature request is “Python as an Excel scripting language” and
has roughly twice as many votes as the second most voted feature
request. Though nothing really happened since the idea was added
in 2015, Excel users were fueled with new hope at the end of 2020
when Guido van Rossum, the creator of Python, tweeted that his
“retirement was boring” and he would join Microsoft. If his move has
any influence on the integration of Excel and Python, I don’t know. I
do know, however, what makes this combination so compelling and
how you can start using Excel and Python together—today. And this
is, in a nutshell, what this book is about.
The main driving force behind the Python for Excel story is the fact
that we are living in a world of data. Nowadays, huge datasets are
available to everybody and about everything. Often, these datasets
are so big that they don’t fit into a spreadsheet anymore. A few
years ago, this may have been referred to as big data, but
nowadays, a dataset of a few million rows is really nothing special.
Excel has evolved to cope with that trend: it introduced Power Query
to load and clean datasets that don’t fit into a spreadsheet and
Power Pivot, an add-in to perform data analysis on these datasets
and present the results. Power Query is based on the Power Query
M formula language while Power Pivot defines formulas by using
Data Analysis Expressions (DAX). If you also want to automate a few
things in your Excel file then you would use Excel’s built-in
automation language Visual Basic for Applications (VBA). That is, for
something fairly simple, you can end up using VBA, M and DAX. One
issue with this is that all these languages only serve you in the
Microsoft world, most prominently in Excel and Power BI (I will
introduce Power BI briefly in Chapter 1).
Python, on the other hand, is a general-purpose programming
language that has become one of the most popular choices amongst
analysts and data scientists. If you use Python with Excel, you are
able to use a programming language that is good at all aspects of
the story, whether that’s automating Excel, accessing and preparing
datasets or performing data analysis and visualization tasks. Most
importantly, you can reuse your Python skills outside of Excel: if you
need to scale up your computing power, you could easily move your
quantitative model, simulation or machine learning application to the
cloud, where practically unconstrained computing resources are
waiting for you.

Why I Wrote This Book


Through my work on xlwings, the Excel automation package that we
will meet in Part IV of this book, I am in close contact with many
users who use Python for Excel—whether that’s via the issue tracker
on GitHub, a question on StackOverflow or at a physical event like a
meetup or a conference.
On a regular basis, I am asked to recommend resources to get
started with Python. While there is certainly no shortage of Python
introductions, they are often either too general (nothing about data
analysis) or too specific (full scientific introductions). However, Excel
users tend to be somewhere in the middle: they certainly work with
data, but a full scientific introduction may be too technical. They also
often have specific requirements and questions that aren’t answered
in any of the existing material. Some of these questions are:
Which Python-Excel package do I need for which task?
How do I move my Power Query database connection over
to Python?
What’s the equivalent of Excel’s AutoFilter or pivot table in
Python?
I wrote this book to get you from zero Python knowledge to be able
to automate your Excel centric tasks and leverage Python’s data
analysis and scientific computing tools in Excel without any detours.
Who This Book Is For
If you are an advanced Excel user who wants to beat the limits of
Excel with a modern programming language, this book is for you.
Most typically, this means that you spend hours every month
downloading, cleaning and copy/pasting big amounts of data into
mission-critical spreadsheets. While there are different ways to
overcome Excel’s limits, this book will focus on how to use Python
for this task.
You should have a basic understanding of programming: it helps if
you have already written a function or a for loop (no matter in which
programming language) and have an idea about what an integer or
a string is. You might even be able to master this book if you are
used to writing complex cell formulas or have experience with
tweaking recorded VBA macros. You are not expected to have any
Python-specific experience though as there are introductions to all
the tools that we will use including an introduction to Python itself.
If you are a seasoned VBA developer, you will find regular
comparisons between Python and VBA that will allow you to ship
around the common gotchas and hit the ground running.
This book can also be helpful if you are a Python developer and
need to learn about the different ways that Python can deal with the
Excel application and Excel files to be able to pick the right package
given the requirements of your business users.
How This Book Is Organized
In this book, I will show you all aspects of the Python for Excel story
split into four parts:
Part I: Introduction to Python
This part starts by looking into the reasons why Python is such
an enjoyable companion for Excel before introducing the tools
we’ll be using in this book: the Anaconda Python distribution,
Visual Studio Code and Jupyter notebooks. This part will also
teach you enough Python to be able to master the rest of this
book.

Part II: Introduction to pandas


pandas is Python’s go-to library for data analysis. We will learn
how to replace Excel workbooks with a combination of Jupyter
notebooks and pandas. Usually, pandas code is both easier to
maintain and more efficient than an Excel workbook and you can
work with datasets that don’t fit into a spreadsheet. Unlike Excel,
pandas allows you to run your code wherever you want, including
the cloud.

Part III: Reading and Writing Excel Files without Excel


This part is about manipulating Excel files by using one of the
following Python packages: pandas, OpenPyXL, XlsxWriter,
pyxlsb, xlrd and xlwt. These packages are able to read and write
Excel workbooks directly on disk and as such replace the Excel
application: as you don’t require an installation of Excel, they
work on any platform that Python supports, including Windows,
macOS and Linux. A typical use case for a reader package is to
read in data from Excel files that you receive every morning from
an external company or system and store their contents in a
database. A typical use case for a writer package is to provide
the functionality behind the famous Export to Excel button that
you find in almost every application.
Part IV: Programming the Excel Application with xlwings
In this part, we’ll see how we can use Python with the xlwings
package to automate the Excel application rather than reading
and writing Excel files on disk. Therefore, this part requires you
to have a local installation of Excel. We will learn how to open
Excel workbooks and manipulate them in front of our eyes. In
addition to reading and writing files via Excel, we will build
interactive Excel tools: these allow us to click a button to have
Python perform e.g. a computationally expensive calculation—
something that you may have done previously with VBA macros.
We’ll also learn how to write user-defined functions1 (UDFs) in
Python instead of VBA.

It’s important to understand the fundamental difference between


reading and writing Excel files (Part III) and programming the Excel
application (Part IV) as visualized in Figure P-1.
Figure P-1. Reading and writing Excel files (Part III) vs. programming Excel (Part
IV)

Since Part III doesn’t require an installation of Excel, everything


works on all platforms that Python supports, mainly Windows,
macOS and Linux. Part IV, however, will only work on those
platforms that Microsoft Excel supports, i.e. Windows and macOS as
the code relies on a local installation of Microsoft Excel.

Python and Excel Versions


This book is based on Python 3.8 which is the Python version that
comes with the latest version of the Anaconda Python distribution at
the time of this writing. If you want to use a newer version of
Python, follow the instructions on the book’s homepage, but make
sure that you don’t use an older version. I will occasionally make a
comment if something changes with Python 3.9.
This book also expects you to use a modern version of Excel,
meaning at least Excel 2007 on Windows and Excel 2016 on macOS.
The locally installed version of Excel that comes with the Microsoft
365 subscription will also work perfectly—in fact, I even recommend
it as it has the latest features that you won’t find in other versions of
Excel. It was also the version I used to write this book, so if you use
another version of Excel, you might sometimes see a small
difference in the name or location of a menu item.

Conventions Used in This Book


The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, and email addresses.

Constant width
Used for program listings, as well as within paragraphs to refer to
program elements such as variable or function names, filenames,
file extensions, databases, data types, environment variables,
statements, and keywords.

Constant width bold


Shows commands or other text that should be typed literally by
the user.

Constant width italic


Shows text that should be replaced with user-supplied values or
by values determined by context.

TIP
This element signifies a tip or suggestion.

NOTE
This element signifies a general note.

WARNING
This element indicates a warning or caution.

Using Code Examples


I am maintaining a homepage with additional information to help
you with this book. Make sure to check it out, especially if you run
into an issue.
Supplemental material (code examples, exercises, etc.) is available
for download at https://github.com/fzumstein/python-for-excel. To
download this companion repository, click on the green Code
button, then select Download ZIP. Once downloaded, right-click
the file on Windows and select Extract All to unzip the
contained files into a folder. On macOS, simply double-click the file
to unzip. If you know how to work with Git, you could also use Git to
clone the repository to your local hard disk. You can put the folder
anywhere you want, but I will refer to it occasionally as follows in
this book:

C:\Users\username\python-for-excel

Note that by simply downloading and unzipping the ZIP file on


Windows, you’ll end up with a folder structure similar to this one
(note the repeated folder names):

C:\...\Downloads\python-for-excel-1st-edition\python-for-
excel-1st-edition

Copying the contents of this folder into one you create under
C:\Users\username\python-for-excel might make it easier
for you to follow along. The same remarks are true for macOS, i.e.
copy the files to /Users/username/python-for-excel.
If you have a technical question or a problem using the code
examples, please send email to bookquestions@oreilly.com.
This book is here to help you get your job done. In general, if
example code is offered with this book, you may use it in your
programs and documentation. You do not need to contact us for
permission unless you’re reproducing a significant portion of the
code. For example, writing a program that uses several chunks of
code from this book does not require permission. Selling or
distributing examples from O’Reilly books does require permission.
Answering a question by citing this book and quoting example code
does not require permission. Incorporating a significant amount of
example code from this book into your product’s documentation
does require permission.
We appreciate, but generally do not require, attribution. An
attribution usually includes the title, author, publisher, and ISBN. For
example: “Python for Excel by Felix Zumstein (O’Reilly). Copyright
2021 Zoomer Analytics LLC, 978-1-492-08100-5.”
If you feel your use of code examples falls outside fair use or the
permission given above, feel free to contact us at
permissions@oreilly.com.

O’Reilly Online Learning

NOTE
For more than 40 years, O’Reilly Media has provided technology and
business training, knowledge, and insight to help companies succeed.

Our unique network of experts and innovators share their knowledge


and expertise through books, articles, and our online learning
platform. O’Reilly’s online learning platform gives you on-demand
access to live training courses, in-depth learning paths, interactive
coding environments, and a vast collection of text and video from
O’Reilly and 200+ other publishers. For more information, visit
http://oreilly.com.
How to Contact Us
Please address comments and questions concerning this book to the
publisher:

O’Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

800-998-9938 (in the United States or Canada)

707-829-0515 (international or local)

707-829-0104 (fax)

We have a web page for this book, where we list errata, examples,
and any additional information. You can access this page at
https://oreil.ly/py4excel.
Email bookquestions@oreilly.com to comment or ask technical
questions about this book.
For more information about our books, courses, conferences, and
news, see our website at http://www.oreilly.com.
Find us on Facebook: http://facebook.com/oreilly
Follow us on Twitter: http://twitter.com/oreillymedia
Watch us on YouTube: http://www.youtube.com/oreillymedia

Acknowledgments
As a first-time author, I am incredibly grateful for the help I got from
so many people along the way—they made this journey a lot easier
for me!
At O’Reilly, I would like to thank my editor, Melissa Potter, who did a
great job in keeping me motivated and on schedule and who helped
me to bring this book into a readable form. I’d also like to thank
Michelle Smith who worked with me on the initial book proposal and
Daniel Elfanbaum who wasn’t getting tired to answer my technical
questions.
A big thank you goes to all my colleagues, friends and clients who
invested many hours in reading the earliest form of my drafts. Their
feedback was crucial to make the book easier to understand and
some of the case studies are inspired by their real-world Excel
problems that they shared with me. My thanks go to Adam
Rodriguez, Mano Beeslar, Simon Schiegg, Rui Da Costa, Jürg Nager,
and Christophe de Montrichard.
I also got helpful feedback from readers of the Early Release version
that was published on the O’Reilly online learning platform. Thank
you Felipe Maion, Ray Doue, Kolyu Minevski, and David Ruggles!
I was very lucky that the book got reviewed by highly qualified tech
reviewers and I really appreciate the hard work they put in under a
lot of time pressure. Thanks for all your help, Jordan Goldmeier,
George Mount, Andreas Clenow, Werner Broennimann, and Eric
Moreira!
Special thanks go to Björn Stiel, who wasn’t just a tech reviewer but
from whom I also learned many of the things I am writing about in
this book. I’ve enjoyed working with you over the last couple of
years!
Last but not least, I’d like to extend my gratitude to Eric Reynolds
who merged his ExcelPython project into the xlwings code base in
2016 and who completely rewrote my horrible xlwings API from the
early days, turning it into the Excel-Python package with—in my
eyes—the most beautiful API as of today.
1 Microsoft has started to use the term custom functions instead of UDFs. In
this book, I keep calling them UDFs though.
Part I. Introduction to Python
Chapter 1. Why Python for
Excel?

A NOTE FOR EARLY RELEASE READERS


With Early Release ebooks, you get books in their earliest form—
the author’s raw and unedited content as they write—so you can
take advantage of these technologies long before the official
release of these titles.
If you have comments about how we might improve the content
and/or examples in this book, or if you notice missing material
within this chapter, please reach out to the author at
felix.zumstein@zoomeranalytics.com.

Usually, Excel users start to question their spreadsheet tools when


they hit a limitation. A classic example is when Excel workbooks
contain so much data and formulas that they become slow or crash
in the worst case. It does make sense though to question your setup
before things go south: if you work on mission-critical workbooks
where errors can result in financial or reputational damage or if you
spend hours every day updating Excel workbooks manually, you
should learn how to automate your processes with a programming
language. Automation takes out the risk of human error and allows
you to spend your time on more productive tasks than copy/pasting
data into an Excel spreadsheet.
In this chapter, I will give you a few reasons why Python is an
excellent choice in combination with Excel and what its advantages
are compared to Excel’s built-in automation language VBA. After
introducing Excel as a programming language and understanding its
particularities, I will point out the specific features that make Python
so much stronger in comparison with VBA. To start with, however,
let’s take a quick look at the origins of our two main characters!
In terms of computer technology, Excel and Python have both been
around for a very long time: Excel was first launched in 1985 by
Microsoft—and this may come as a surprise to many—it was only
available for Apple Macintosh. It wasn’t until 1987 when Microsoft
Windows got its first version in the form of Excel 2.0. Microsoft
wasn’t the first player in the spreadsheet market though: VisiCorp
came out with VisiCalc in 1979 followed by Lotus Software in 1983
with Lotus 1-2-3. And Microsoft didn’t lead with Excel: three years
earlier they released Multiplan, a spreadsheet program that could be
used on MS-DOS and a few other operating systems, but not on
Windows.
Python was born in 1991, only six years after Excel. While Excel
became popular early on, it took Python a bit longer until it got
adopted in certain areas like web development or system
administration. In 2005, Python started to become a serious
alternative for scientific computing when NumPy, a package for
array-based computing and linear algebra, was first released. NumPy
combined two predecessor packages and therefore streamlined all
development efforts around scientific computing into a single
project. Today, it forms the basis of countless scientific packages
including pandas, which came out in 2008 and which is largely
responsible for the widespread adoption of Python in the world of
data science and finance that started to happen after 2010. Thanks
to pandas, Python, alongside R, has become one of the most
commonly used languages for data science tasks like data analysis,
statistics and machine learning.
The fact that Python and Excel were both invented a long time ago
isn’t the only thing they have in common: Excel and Python are also
both a programming language. While you are probably not surprised
to hear that about Python, it may require an explanation for Excel,
which I’ll give you next.
Excel Is a Programming Language
This section starts by introducing Excel as a programming language
which will help you to understand why spreadsheet issues turn up in
the news on a regular basis. We’ll then have a look at a few best
practices that have emerged in the software development
community and that can save you from many typical Excel errors.
We’ll conclude with a brief introduction to Power Query and Power
Pivot, two modern Excel tools that cover the sort of functionality for
which we will use pandas instead.
If you use Excel for more than your grocery list, you are definitely
using functions like =SUM(A1:A4) to sum up a range of cells. If you
think for a moment about how this works, you will notice that the
value of a cell usually depends on one or more other cells which may
again use functions that depend on one or more other cells and so
on. Doing such nested function calls is no different from how other
programming languages work, only that you write the code in cells
instead of text files. And if that didn’t convince you just yet: at the
end of 2020, Microsoft announced the introduction of lambda
functions which allow you to write reusable functions in Excel’s own
formula language, i.e. without having to rely on a different language
like VBA. According to Brian Jones, Excel’s Head of Product, this was
the missing piece that finally makes Excel a “real” programming
language.1 This also means that Excel users should really be called
Excel programmers!
There is a special thing though about Excel programmers: most of
them are business users or domain experts without a formal
education in computer science. They are traders, accountants or
engineers to mention just a few examples. Their spreadsheet tools
are designed to solve a business problem and often ignore best
practices in software development. As a consequence, these
spreadsheet tools often mix inputs, calculations and outputs on the
same sheets, they may require non-obvious steps to be performed
for them to work properly and critical changes are done without any
safety net. In other words, the spreadsheet tools are lacking a solid
application architecture and are often undocumented and untested.
Sometimes, these issues can have devastating consequences: if you
forget to recalculate your trading workbook before placing a trade,
you may buy or sell the wrong number of shares, which can cause
you to lose money. And if it isn’t just your own money you are
trading, we can read about it in the news, as we’ll see next.

Excel in the News


Excel is a regular guest in the news and alone during the time I was
writing this book, two new stories hit the headlines. The first one
was about the HUGO Gene Nomenclature Committee that renamed a
few human genes so they wouldn’t be interpreted by Excel as dates
anymore. For example, to prevent that the gene MARCH1 would be
turned into 1-Mar, it was renamed into MARCHF1.2 In the second
story, Excel was blamed to be responsible for the delayed reporting
of 16,000 Covid-19 test results in England. The issue was caused by
the test results being written to the older Excel file format (xls) that
was limited to roughly 65,000 rows. This meant that larger datasets
were simply cut off beyond that limit.3 While these two stories are
showing the continued importance and dominance of Excel in today’s
world, there is probably no other “Excel incident” that is more
famous than the London Whale.
London Whale is the nickname of a trader whose trading mistakes
forced JP Morgan to announce a staggering loss of USD 6 billion in
2012. The source of the blowup was an Excel-based value-at-risk
model which was substantially underestimating the true risk of losing
money in one of their portfolios. The Report of JPMorgan Chase &
Co. Management Task Force Regarding 2012 CIO Losses4 (2013)
mentions that “the model operated through a series of Excel
spreadsheets, which had to be completed manually, by a process of
copying and pasting data from one spreadsheet to another”. On top
of these operational issues, they had a logical error: in one
calculation, they were dividing by a sum instead of an average.
If you want to see more of these stories, have a look at Horror
Stories, a web page maintained by the European Spreadsheet Risks
Interest Group (EuSpRIG).
To prevent your company from ending up in the news with a similar
story, let’s have a look at a few best practices next that make your
work with Excel massively safer.

Programming Best Practices


This section will introduce you to the most important programming
best practices, including separation of concerns, the DRY principle,
testing and version control. As we will see, following them will be
easier when you start using Python together with Excel.

Separation of concerns
One of the most important design principles in programming is
separation of concerns, sometimes also referred to as modularity. It
means that a related set of functionality should be taken care of by
an independent part of the program so it can be easily replaced
without affecting the rest of the application. At the highest level, an
application is often divided into the following layers:5

Presentation layer
Business layer
Data layer
To explain these layers, consider a simple currency converter as
shown in Figure 1-1. You’ll find the Excel file in the xl folder of the
companion repository.
Figure 1-1. currency_converter.xlsx

This is how the application works: type in the Amount and


Currency into cells A4 and B4, respectively, and Excel will convert
this into US Dollars in cell D4. Many spreadsheet applications follow
such a design and are used by businesses every day. Let me break
the application down into its layers:
Presentation layer
This is what you see and interact with, i.e. the user interface: the
values of cells A4, B4 and D4 together with their labels build the
presentation layer of the currency converter.

Business layer
This layer takes care of the application-specific logic: cell D4
defines how the amount is converted into USD. The formula =A4
* VLOOKUP(B4, F4:G11, 2, FALSE) translates to Amount
x Exchange rate.

Data layer
As the name suggests, this layer takes care of accessing the
data: the VLOOKUP part of cell D4 is doing this job.

The data layer accesses the data from the exchange rates table that
starts in cell F3 and that acts as the database of this little
application. If you paid close attention, you probably noticed that
cell D4 appears in all three layers: this simple application mixes the
presentation, business and data layers in a single cell. This isn’t
necessarily an issue for this simple currency converter, but often,
what starts off as a small Excel file turns soon enough into a much
bigger application. How can this situation be improved? Most
professional Excel developer resources advise you to use a separate
sheet for each layer, in Excel’s terminology usually called inputs,
calculations and outputs. Often, this is combined with defining a
certain color code for each layer, e.g. a blue background for all input
cells. In Chapter 11, we will build a real application based on these
layers: Excel will be the presentation layer, while the business and
data layers are moved to Python where it’s much easier to structure
your code properly.
Now that you know what separation of concerns means, let’s find
out what the DRY principle is!
DRY principle
The Pragmatic Programmer by Hunt and Thomas (Pearson
Education) popularized the DRY principle: don’t repeat yourself. No
duplicated code means fewer lines of code and fewer errors which
makes the code easier to maintain. If your business logic sits in your
cell formulas it’s practically impossible to apply the DRY principle as
there is no mechanism that allows you to reuse it in another
workbook. This, unfortunately, means that a common way to start a
new Excel project is to copy the workbook from the previous project
or from a template.
If you write VBA, the most common piece of reusable code is a
function. A function gives you access to the same code block from
multiple macros, for example. If you have multiple functions that you
use all the time, you might want to share them between workbooks.
The standard instrument to share VBA code across workbooks are
add-ins, but VBA add-ins lack a robust way of distributing and
updating them. While Microsoft has introduced an Excel internal
add-in store to solve that issue, this only works with JavaScript-
based add-ins, so it’s not an option for VBA coders. This means that
it is still very common to use the copy/paste approach with VBA:
let’s assume that you need a cubic spline function in Excel. The cubic
spline function is a way to interpolate a curve based on a few given
points in a coordinate system and is often used by fixed income
traders to derive an interest rate curve overall maturities based on a
few known maturity/interest rate combinations. If you search for
“Cubic Spline Excel” on the internet, it won’t take too long until you
have a page of VBA code that does what you want. The issue with
this is that most commonly, these functions were written by a single
person with probably good intentions but without formal
documentation or testing. Maybe they work for the majority of
inputs but what about some uncommon edge cases? If you are
trading a multimillion fixed income portfolio, you want to have
something you know you can trust. At least that is what you will
hear from your internal auditors when they find out where the code
is coming from.
Python makes it easy to distribute code by using a package manager
as we will see in the last section of this chapter. Before we get there,
however, let’s continue with testing, one of the cornerstones of solid
software development.

Testing
When you tell an Excel developer to test their workbooks, they will
most likely perform a few random checks: click a button and see if
the macro still does what it is supposed to do or change a few inputs
and check if the output looks reasonable. This is, however, a risky
strategy: Excel makes it very easy to introduce errors that are hard
to spot. For example, you can overwrite a formula with a hardcoded
value. Or you forget to adjust a formula in a hidden column.
When you tell a professional software developer to test their code,
they will write unit tests. As the name suggests, it’s a mechanism to
test individual components of your program. For example, unit tests
make sure that a single function of a program works properly. Most
programming languages offer a way to run unit tests automatically.
Running automated tests will increase the reliability of your
codebase dramatically and make reasonably sure that you won’t
break anything that currently works when you edit your code.
If you look at the currency conversion tool in Figure 1-1, you could
write a test that checks if the formula in cell D4 correctly returns
USD 105 with the following inputs: 100 EUR as amount and 1.05 as
the EURUSD exchange rate. Why does this help? Assume that you
accidentally delete cell D4 with the conversion formula and have to
rewrite it: instead of multiplying the amount with the exchange rate
you divide by it—after all, working with currencies can be confusing.
When you run the above test, you will get a test failure as 100 EUR /
1.05 will not result in 105 USD anymore as the test expects. Like
this, you can detect and fix the formula before you hand the
spreadsheet over to your users.
Pretty much all traditional programming languages offer one or more
test frameworks to write unit tests without much effort—but not
Excel. Fortunately, the concept of unit tests is simple enough and by
connecting Excel with Python you get access to Python’s powerful
unit testing frameworks. While a more in-depth presentation of unit
tests is beyond the scope of this book, I invite you to have a look at
my blog post where I walk you through the topic with practical
examples.
Unit tests are often set up to run automatically when you commit
your code to your version control system. The next section explains
what version control systems are and why they are hard to use with
Excel files.

Version control
Another characteristic of professional programmers is that they use a
system for version control or source control. A version control
system (VCS) tracks changes in your source code over time, allowing
you to see who changed what, when and why and allows you to
revert to old versions at any point in time. The most popular version
control system nowadays is Git. It was originally created to manage
the Linux source code and since then has conquered the
programming world—even Microsoft adopted Git in 2017 to manage
the Windows source code. In the Excel world, by contrast, the by far
most popular version control system comes in the form of a folder
where files are archived like this:

currency_converter_v1.xlsx
currency_converter_v2_2020_04_21.xlsx
currency_converter_final_edits_Bob.xlsx
currency_converter_final_final.xlsx
Another Random Document on
Scribd Without Any Related Topics
The following examples serve to show that the same extended types
of line which were found to be the commonest in Layamon’s Brut
(cp. p. 77) recur as the most usual types also in this poem:
A + C: Álle bèon he blíþe | þat tò my sóng lýþe! 1–2.
A + A: A sáng ihc schàl ȝou sínge | of Múrrȳ̀ þè kínge. 2–3.
A + A: He fónd bì þe strónde, | aríued òn his lónde, 35–6.
B + C: Àll þe dáy and àl þe nī́ȝt, | tìl hit spráng dái lìȝt. 123–4.
B + B: Fàirer nis nón þàne he wás, | hè was bríȝt sò þe glás. 13–14.

C + C: Bì þe sé síde, | ase hè was, wóned (⏑́× ) ríde. 33–4.

C + A: Of þìne méstére, | of wúde and òf rivére. 229–30.


D + A: Schípes fíftène | with sárazìn[e]s kéne. 37–8.
C + A: Þe chìld him ánswérde, | sóne so hè hit hérde. 199–200.
B + E: Hè was whít sò þe flúr, | róse-rèd was hìs colúr. 15–16.
In most cases we see that identical or similar types of verse are
connected here so as to form a couplet (printed by us as one long
line). Even where this is not so, however, the two chief accents in
each short line serve to make all the different forms and types of
verse occurring in this poem sound homogeneous. This admits of a
ready explanation, as the poem, in which no stanzaic arrangement
can be detected, although styled a ‘song’ (line 2), was certainly
never meant to be sung to a regular tune. On the contrary, it was
undoubtedly recited like the ‘Song’ of Beowulf—probably not without
a proper musical accompaniment—by the minstrels.
At all events the treatment of the words with regard to their
rhythmic use in this poem does not deviate from that of Layamon.
§ 51. The two poems are of the same period, and in both the
etymological and syntactical accentuation of natural speech forms
the basis of the rhythmic accentuation. Monosyllabic words and the
accented syllables of polysyllabic words having a strong syntactical
accent are placed in the arsis; unaccented inflectional syllables as a
rule form the theses of a verse; second parts of compounds and fully
sounding derivative syllables are commonly used for theses with a
somewhat stronger accent, and may, if placed in the arsis, even bear
the alliteration, or, if they are less strongly accented, the rhyme:
Þèr þas cníhtes cómen | bifòren þan fólc-kínge.
Lay. 13818–19.
Ah of éou ich wùlle iwíten | þurh sóðen èouwer wúrðscìpen.
ib. 13835–6.
A móreȝe bò þe dáy gan sprìnge, | þe kíng him ròd an
húntìnge.
Horn 645–6.
He wàs þe faíréste, | ànd of wít þe béste. ib. 173–4.
Unaccented inflexional syllables as a rule stand in the thesis of a
verse. Only in exceptional cases, which admit of a different
explanation (see above, pp. 74 and 76), they may bear the
rhythmical accent if the rhyme demands it.
That a thesis in Layamon’s Brut and in Alfred’s Proverbs may be
disyllabic or even trisyllabic both in the beginning and the middle of
a line is evident from the many examples quoted above.
In King Horn, where the division of the original long lines into two
short ones has been carried out completely, and where the rhythm
of the verse has consequently become more regular, the thesis, if
not wanting entirely, as usually the case, in the types C, D, E, is
generally monosyllabic. But, as the following examples, faírer ne
mìȝte 8, þe paíns còme to lónde 58, þanne schólde withùten óþe
347, will show, disyllabic theses do also occur, both after the first
and second arsis, and in the beginning of the line.
CHAPTER IV
THE ALLITERATIVE LINE IN ITS CONSERVATIVE
FORM DURING THE FOURTEENTH AND FIFTEENTH CENTURIES

A. The alliterative verse without rhyme.

§ 52. The progressive or free form of the alliterative line came to an


end as early as the middle of the thirteenth century, when it broke
up into short rhyming couplets. The stricter form was for nearly
three centuries longer a very popular metre in English poetry,
especially in the North-Western and Northern districts of England
and in the adjacent lowlands of Scotland. The first traces, however,
of its existence after the Norman Conquest are to be found in the
South of England, where some poetical homilies and lives of saints
were written at the end of the twelfth and in the beginning of the
thirteenth century which are of the same character, both as to their
subjects and to their metre, as the poetical paraphrases and homilies
written by Ælfric. These poems are Hali Meidenhad (a poetical
homily), the legends of St. Marharete, St. Juliana, and St. Katherine.
These poems have been edited for the Early English Text Society,
Nos. 18, 13, 51, 80; the first three by Cockayne as prose-texts, the
last by Dr. Einenkel, who printed it in short couplets regarded by him
as having the same four-beat rhythm (Otfrid’s metre) which he and
his teacher, Prof. Trautmann, suppose to exist in Layamon and King
Horn.[107] The Homilies have no rhymes.
The form of these homilies and legends occasionally exhibits real
alliterative lines, but for the most part is nothing but rhythmical
prose, altogether too irregular to call for an investigation here. Some
remarks on passages written in a form more or less resembling
alliterative verse may be found in our Englische Metrik, vol. i, § 94.
It is quite out of the question to suppose these Southern works, with
their very irregular use of alliteration and metre, to have had any
influence on the metrical form of the very numerous alliterative
poems written in the fourteenth and fifteenth centuries in the
Midland and Northern districts of England. It is, however, not at all
likely that alliterative poetry should have sprung up there without
any medium of tradition, and that it should have returned to the
strict forms of the Old English models. Nor can we assume that it
was handed down by means of oral tradition only on the part of the
minstrels from Old English times down to the fourteenth century.
The channel of tradition of the genuine alliterative line must be
sought for in documents which for the most part have been lost.
A few small remnants, however, have been preserved, viz. a charm
in a MS. of the twelfth century (cf. Zupitza, Zeitschrift für deutsches
Altertum, xxxi. 49), a short poem, entitled ‘Ten Abuses’, belonging to
the same period (E. E. T. S. 49, p. 184), a prophecy of five lines
contained in the chronicle of Benedict of Peterborough (Rerum
Britannicarum Scriptores, 49, ii. 139), finally a prophecy ascribed to
Thomas of Erceldoune (E.E. T. S., vol. 61, xviii, Thom. of Erc., ed. by
A. Brandl, p. 26). But these pieces, treated by Prof. Luick in Paul’s
Grundriss, ed. 2, II. ii, p. 160, are either too short or are too
uncertain in text to admit of our making definite conclusions from
them.
But from the middle of the fourteenth century onward we have a
large number of poems composed in regular alliterative verse, e.g.
King Alisaunder (Als.) and William of Palerne (W.), both in E. E. T. S.,
Extra-Ser. No. 1; Joseph of Arimathie (J.A.), E. E.T. S. 44; Sir Gawain
and the Green Knight (Gr.), E.E. T. S. 4; Piers Plowman (P. P.), by W.
Langland, E. E. T. S., Nos. 17, 28, 30, 38, 54; Pierce the Plowman’s
Crede (P. P. Cr.), E. E. T. S. 30; Richard the Redeles (R. R.), E. E. T.
S. 54; The Crowned King (Cr. K.), ibid.; The Destruction of Troy, E.
E.T. S. 39, 56; Morte Arthure, E. E. T. S. 8; Cleanness and Patience,
E. E. T. S. 1; The Chevalere Assigne, E. E.T. S., Extra-Ser. 6; and
others of the end of the fifteenth and the beginning of the sixteenth
centuries: see Prof. W. W. Skeat’s list in ‘Bishop Percy’s Folio MS.’,
London, 1867 (ed. Furnivall and Hales), vol. iii, p. xi, and many
recent publications of the Early English Text Society.
On the structure of this metre the opinions of scholars differ a
good deal less than on that of the progressive or free form of the
alliterative line. Yet there are a few adherents of the four-beat theory
who apply it to the alliterative line of this epoch, amongst others
Rosenthal (‘Die alliterierende englische Langzeile im 14.
Jahrhundert,’ Anglia, i. 414 ff.). The two-beat theory, on the other
hand, has been upheld also for this form of the alliterative line by
Prof. W. W. Skeat, Essay on Alliterative Poetry, Percy Folio MS. 1867
(ed. Furnivall and Hales), by the present writer in Englische Metrik, i,
pp. 195–212, and by Prof. Luick, Anglia, xi, pp. 392–443 and 553–
618, and subsequently in Paul’s Grundriss, ed. 2, II. ii, pp. 161–3.
§ 53. The use and treatment of the words in the verse is on
the whole the same as in the Old English period. The chief
divergence is, that in this period of the language the difference
between long and short syllables was lost, in consequence of the
lengthening of short vowels in open syllables which had taken place
in the interval, and that consequently the substitution of a short
accented syllable and an unaccented one for a long accented syllable
(the so-called resolution) was no longer admissible. Otherwise
syllables with a primary accent, syllables with a secondary accent,
and unaccented syllables are treated just as in the Old English
poetry. Accented syllables are as a rule placed in the arsis, as are
also second parts of compounds. Other syllables with secondary
accent (derivative and inflectional syllables) are only in exceptional
cases placed in the arsis of a verse.
It is of special interest, however, to notice that words of Romanic
origin which in the course of time had been introduced into the
language are in many cases accented according to Germanic usage.
Words of which the last syllable was accented in French have in their
Middle-English form the chief accent thrown on a preceding,
frequently on the first, syllable, and in consequence of this the
originally fully accented syllable in trisyllabic words receives the
secondary accent and is treated in the rhythm of the verse in the
same way as syllables with a secondary accent in English words. The
laws, too, which in Old English affect the subordination and position
of the parts of speech in their relationship to the rhythm of the verse
and to the alliteration, remain, generally speaking, in force. It is
remarkable that ‘if an attributive adjective is joined to a substantive,
and a verb to a prepositional adverb, the first part of these groups of
words still has the chief accent’ (Luick). The relationship, on the
other hand, of verse and sentence is changed. While in Old English
poetry run-on-lines were very popular and new sentences therefore
frequently began in the middle of a line, after the caesura, we find
that in Middle English, as a rule, the end of the sentence coincides
with the end of the line. Hence every line forms a unity by itself, and
the chief pause falls at the end, not, as was frequently the case in
Old English times, after the caesura.
§ 54. Alliteration. On the whole, the same laws regarding the
position of the alliterative sounds are still in force as before; it is
indeed remarkable that they are sometimes even more strictly
observed. In the Destruction of Troy, e.g. triple alliteration according
to the formula a a a x is employed throughout.
Now of Tróy forto télle | is myn entént euyn,
Of the stóure and þe strýfe, | when it distróyet wás.
Prol. 27–8.
Alongside of this order of alliteration we find in most of the other
poems the other schemes of alliteration popular in Old English times,
e.g. a x a x, x a a x, a b a b, a b b a:
In þe fórmest yére, | that he fírst réigned. Als. 40.
Þénne gonne I méeten | a mérvelous
svévene. P. P. Prol. 11.
I had mínde on my slépe | by méting of swéuen. Als. 969.
And fónd as þe méssageres | hade múnged
befóre. W. 4847.
Irregularities, however, in the position of the alliteration are
frequently met with, e.g. parallel alliteration: a a, b b:
What þis móuntein beméneþ | and þis dérke dále. P. P. i. 1;
or the chief alliterative sound (the ‘head-stave’) may be placed in the
last accented syllable (a a x a):
‘Now be Críst,’ quod the kíng, | ‘ȝif I míhte chácche. ib. ii. 167;
or it may be wanting entirely, especially in William of Palerne:
Sche kólled it ful kíndly | and áskes is náme. W. 69;
and there are even found a certain number of verses without any
alliteration at all in Joseph of Arimathie:
Whan Jóseph hérde þer-of, | he bád hem not demáyȝen.
J. A. 31.
In such cases it may sometimes be noticed that a line which has no
internal alliteration is linked by alliteration with a preceding or with a
following line, in the same way as was to be observed already in the
last century of the Old English period (cf. p. 50):
Bot on the Cristynmes dáye, | whene they were álle sémblyde,
That cómliche cónquerour | cómmaundez hym selvyne.
Morte Arth. 70–1.
Again an excess of alliteration is found, which happens in different
ways, either by admitting four alliterative sounds in one line (a a a a)
as was sometimes done even in Old English:
In a sómer séson | when sófte was þe sónne. P. P. Prol. 1;
or by retaining the same alliterative sound in several consecutive
lines, e.g. :
þenne was Cónscience icléþet | to cómen and apéeren
tofore the kýng and his cóunsel, | clérkes and óþure.
knéolynge Cónscience | to the kýng lóutede.
ib. iii. 109–11;
or, finally, by allowing the somewhat more strongly accented
syllables of the theses to participate in the alliteration:
and was a bíg bold bárn | and bréme of his áge. W. 18.
By the increasing use of this kind of alliteration it ultimately
degenerated so much that the real nature of it was completely
forgotten. This is evident from the general advice which King James
VI gives in his Revlis and Cavtelis to be observit and eschewit in
Scottis Poesie (Arber’s Reprint, p. 63):
Let all your verse be Literall, sa far as may be, quhatsumeuer
kynde they be of, but speciallie Tumbling verse [evidently the
alliterative line] for flyting. Be Literall I meane, that the maist
pairt of your lyne sall rynne vpon a letter, as this tumbling lyne
rynnis vpon F.
Fetching fade for to feid it fast furth of the Farie.[108]
He then gives a description of this kind of verse which makes it
evident that he looked upon ‘tumbling verse’ as a rhythm of two
beats in each hemistich or four beats in the full line, for he says:
Ȝe man observe that thir Tumbling verse flowis not on that
fassoun as vtheris dois. For all vtheris keipis the reule quhilk I
gave before, to wit the first fute short the secound lang and sa
furth. Quhair as thir hes twa short and are lang throuch all the
lyne quhen they keip ordour, albeit the maist pairt of thame be
out of ordour and keipis na kynde nor reule of Flowing and for
that cause are callit Tumbling verse.
King James VI was a contemporary of the last poets who wrote in
alliterative lines in the North and therefore undoubtedly had heard
such poems read by reciters who had kept up the true tradition of
their scansion. We have here then the very best proof we can desire
not only of the four-beat rhythm of the line, but also of the fact that
unaccented words, although they may alliterate intentionally, as they
do often in poems of the fifteenth century, or unintentionally, as
earlier, do not get a full accent in consequence of the alliteration, as
some scholars have thought, but remain unaccented.[109] As to the
quality of the alliteration the same laws on the whole still prevail as
in Old English poetry, but are less strictly observed. Thus frequently
voiced and unvoiced sounds alliterate together, and the aspiration is
neglected; f alliterates with v, v with w, w with wh, s with sh or with
combinations of s and other consonants, g with k, h with ch:
hértes and híndes | and óþer bestes mánye. W. 389.
of fálsnesse and fásting | and vóuwes ibróken.
P. P. Prol. 68.
bat he wíst wíterly | it was the vóis of a childe. W. 40.
to acórde wiþ þe kíng | and gráunte his wílle. ib. 3657.
I sáyle now in þe sée | as schíp boute mást. ib. 567.
such chástite withouten chárite | worþ cláymed in hélle!
P. P. i. 168.
On the other hand, sometimes (as e.g. in the Alisaunder fragments)
greater strictness may be noticed in regard to alliteration of vowels,
as only the same vowels[110] are allowed to alliterate:
wiþ þé érldam of Énuye | éuer forto láste. P. P. ii. 63.
Later on, in the fifteenth century, vocalic alliteration in general falls
into disuse more and more.
§ 55. Comparison of Middle English and Old English
alliterative verse. With regard to the rhythmic structure of the
verse the Middle English alliterative line is not very different from the
corresponding Old English metre. Two beats in each hemistich are,
of course, the rule, and it has been shown by Dr. K. Luick, in a very
valuable paper on the English alliterative line in the fourteenth,
fifteenth, and sixteenth centuries,[111] that all the different types
which Prof. Sievers has discovered for the two sections of the Old
English alliterative line occur here again, but with certain
modifications.
The modifications which the five chief types have undergone
originated in the tendency to simplify their many varieties exactly in
the same way as the Old English inflexional forms of the language
were simplified and generalized in the Middle English period.
Only three of the five old types, viz. those with an even number of
members (A, B, C), are preserved in the second section of the verse,
and those not in their original forms. They show further a certain
tendency to assimilate to each other.
In types B and C the variations with disyllabic anacrusis occurred
most frequently, as was also the case in type A, and verses of this
kind now become predominant. Furthermore, in the Old English
alliterative line, endings consisting of an accented and an
unaccented syllable (feminine endings) prevailed; and type B was
the only one of the symmetrical types ending with an accented
syllable. In Middle English the use of feminine endings goes so far
that the original type B has disappeared altogether and given place
to a new type with an unaccented last syllable corresponding to the
form × × –́ × –́ × .
Prof. Luick very properly calls this type BC, holding that it originated
from the variations × × –́ × ⏑́͜ × and × × ⏑́͜ × –́ × of the old
types B and C in consequence of the lengthening of the originally
short accented syllable. Verse-ends with two unaccented syllables,
which might have arisen in the same way from –́ × = ⏑́͜ × × , did
not become popular; and verse-ends with one unaccented syllable
predominated. Lastly, an important feature of the later verse-
technique deserves notice, that a monosyllabic anacrusis (an initial
unaccented syllable) is generally allowed in types where it was not
permitted in the Old English alliterative line. The consequence of
these changes is that the rhythm of the verse which was in Old
English a descending rhythm, becomes in Middle English ascending,
and is brought into line with the rhythm of the contemporary even-
beat metres.
This is the state of development presented by the Middle English
alliterative line in one of the earliest poems of this group, viz. in the
fragments of King Alisaunder, the versification of which, as a rule, is
very correct.
Here the three types only which we have mentioned occur in the
second hemistich.
Type A is most common, corresponding to the formula ( × ) –́
× × –́ × :
lórdes and óoþer 1, déedes of ármes 5, kíd in his tíme 11, térme of
his lífe 16,
or with anacrusis:
or stérne was hólden 10, and sóne beráfter 25.
More than two unaccented syllables may occur after the first
accented syllable. These two peculiarities seldom occur together in
one and the same second hemistich (though frequently in the first
hemistich); but there are some examples:
is túrned too him álse 165, and príkeden abóute 382, hee fáred òn
in háste 79;
in this last example with a secondary accent on the word òn as also
in the verse: þe méssengères þei cámme 1126.
Type C, ( × ) × × –́ –́ × :
was þe mán hóten 13, þat his kíth ásketh 65, as a kíng shólde 17,
withoute míscháunce 1179.
Type BC, ( × ) × × –́ × –́ × :
or it týme wére 30, in his fáders life 46, of þis méry tále 45, þat þei
no cómme þáre 507.
The same types occur in the first hemistich; but type C disappears
almost entirely, and in the other two the last syllable not
unfrequently is accented, especially if a considerable number of
unaccented syllables occur in the middle of the hemistich; such
verses may be looked upon as remnants of types B and E:
þo was cróuned kíng 28, hee made a uéry uów 281, and wédded
þat wíght 225, þe bérn couth þerbý 632, &c.
Type D also seems to occur sometimes:
móuth méete þertò 184, what déath drý[e] thou shàlt 1067.
Besides these types the first hemistich has, as in Old English times,
some forms of its own. The succession of syllables –́ × × –́ × (type
A) is extended either by several unaccented syllables before the first
accented one (polysyllabic anacrusis) or by the insertion of a
secondary accent between the two main accented syllables, or after
the second accented syllable, with a considerable number of medial
unaccented syllables.

(a) That ever stéede bestróde 10,


Hee brought his ménne to þe bórowe 259.
(b) And chéued fòrthe with þe chílde 78,
Þe cómpanìe was cárefull 359.
(c) α. Glísiande as góldwìre 180,
Þei craked þe cournales 295.
β. Hue lóued so lécherìe 35,
And Phílip þe férse kìng 276.
γ. Stónes stírred þei þò 293,
Þe fólke too fáre with hìm 158.
The examples under (a) show the tendency noticeable already in the
first hemistich of the Old English alliterative line to admit anacrusis.
The examples under (b) and (c) may be looked upon as extended
forms of types E and D.
§ 56. Several poems of somewhat later date deviate more
frequently from these types than the Alisaunder fragments, chiefly in
the following points:
The end of the hemistich sometimes consists of an accented syllable
instead of an unaccented one; the thesis is sometimes monosyllabic
instead of polysyllabic, especially in A, or the anacrusis may be
polysyllabic instead of monosyllabic. Secondary accents are
introduced more frequently into the second hemistich also, but by
poets whose technique is careful they are admitted only between the
two accented syllables. Owing to these licences, and to the
introduction of polysyllabic theses, the rhythm of the verse
sometimes becomes very heavy.
Belonging to this group are William of Palerne, Joseph of Arimathie,
both belonging to the middle of the fourteenth century, the three
editions of William Langland’s Vision concerning Piers Plowman, of
somewhat later date, and a few minor poems. The Romance of the
Chevelere Assigne, written in the East Midland district, at the end of
the fourteenth century, and the works of the Gawain-poet, viz. Sir
Gawain and the Green Knight, Cleanness, Patience, and the Legend
of St. Erkenwald (Horstmann, Altengl. Legenden, 1881, p. 265),
form the transition to another group of poems belonging to the
North of England, but differing somewhat from the preceding with
regard to their metre.
The most important amongst these is Langland’s great work, but it is
at the same time most unequal in respect to its versification. In
many passages, especially in the beginning of the several Passus, as
they are called, the flow of the verses is very regular; in other
passages the theses are frequently of such great length, and the
arsis stands out so indistinctly, that the rhythm of the verse can only
be made out with difficulty. Some examples taken from the B-text (c.
1377) may serve to illustrate this:
Extended second hemistich (Type A):
To bóres and to bróckes | þat bréketh adòwn myne hégges.
vi. 31.
And so I trówe tréwly | by þat men télleth of chárite.
xv. 158.
Ac ȝut in mány mo máneres | mén offènden þe hóligòste.
xvii. 280.
Extended first hemistich (Type A):
Léue him nòuȝt, for he is lécherous | and líkerous of tónge.
vi. 268.
Láboreres þat haue no lánde | to lýue on but her hándes.
ib. 309.
‘Now, by þe péril of my soúle!’ quod Pieres, | ‘I shal apéyre
ȝou álle!’
vi. 173.
Such verses obviously contain only two beats in each hemistich,
although at the same time some of the syllables forming the thesis
may have a somewhat stronger accent than others. For as a rule
such extended verses are succeeded by a normal line, clearly
bringing out again the general four-beat rhythm, as is the case with
the line (A + A) following immediately upon the last-mentioned
example:
And hóuped after húnger | þat hérd hym atte fírste. vi. 174.
Type A is in Piers Plowman the usual one, but the types C and BC
frequently occur. In the following examples we have type C in the
second hemistich:
And hadden léue to lye | al here lýf áfter. Prol. 49.
I seigh sómme that séiden | þei had ysóuȝt séyntes. ib. 50;
in the first hemistich it occurs rarely:
Ac on a Máy mórnynge | on Máluerne húlles. ib. 5.
Type B C is frequently to be met with in both hemistichs; e.g. in the
first:
In a sómer séson, | whan sóft was the sónne. ib. 1.
And as I láy and léned | and lóked in þe wáteres. ib. 9;
in the second:
Bídders and béggeres | fast abóute ȝéde. ib. 40.
Wénten to Wálsyngham, | and here wénches áfter. ib. 54.
Masculine endings, however (originating from the dropping of the
final -e in the last words of the types A and C, as e.g. in and drédful
of síght Prol. 16, cristened þe kýnge xv. 437, as þe kýng híght iii. 9),
occur very rarely here. They are, on the other hand, characteristic
forms in another group of alliterative poems.
§ 57. These belong to the North of England and the adjacent
parts of the Midlands.
In these districts the final e had by this time become silent, or was
in the course of becoming so. Thus many verses of West-Midland
poems were shortened in the North by omitting the final -e, and
then these forms were imitated there. Hence the middle of the line
was much less modified than the end of it.
Types A, C, B C, therefore, occur not only in the ordinary forms with
unaccented syllables at the end, but also, although more rarely, with
accented ones, viz. corresponding to the schemes:
A1, ( × ) –́ × × –́ , C1, ( × ) × × –́ –́ , BC1, ( × ) × × –́ × –́ .
These forms of the hemistich first occur in the Destruction of Troy, a
poem written in a West-Midland dialect very like to the Northern
dialect, and in the North-English poems, Morte Arthure and The
Wars of Alexander (E. E. T. S., Extra-Ser. 47). Examples of these
types (taken from the first-mentioned poem) are: of type A1 in the
second hemistich, for lérning of ús 32, þat ónest were áy 48; with a
polysyllabic thesis, and lympit of the sóthe 36; with a secondary
accent,with cléne mèn of wít 790; without anacrusis,[112] lémond as
góld 459, bléssid were Í 473; in the first hemistich, with disyllabic
anacrusis, þat ben drépit with déth 9, þat with the Grékys was grét
40; without anacrusis, Býg y-noghe vnto béd 397, Trýed men þat
were táken 258, &c.; examples for C1 (only occurring in the second
hemistich), þat he fóre with 44, into your lond hóme 611, ye have
sáid well 1122, þat ho bórne wás 1388, of my córs hás 1865;
examples for B C1, in the second hemistich (of rare occurrence),
when it destróyet wás 28, and to sórow bróght 1497, þere þe cítie
wás 1534.
The same modification of types took place later in other parts of the
Midlands, as appears from two works of the early sixteenth century,
Scottish Field and Death and Life (Bishop Percy’s Folio MS., edited by
Furnivall and Hales, i. 199 and iii. 49). The last North-English or
rather Scottish poem, on the other hand, written in alliterative lines
without rhyme, Dunbar’s well-known Satire, The twa mariit wemen
and the wedo, has, apart from the normal types occurring in the
North-English poems, many variants, chiefly in the first hemistich,
which are characterized by lengthy unaccented parts both at the
beginning of the line, before the second arsis, and after it;
frequently too syllables forming the thesis have a secondary accent
and even take part in the alliteration, as e.g. in the following
examples:
Ȝaip and ȝíng, in the ȝók | ane ȝéir for to dráw. 79.
Is bàir of blís and báilfull, | and greit bárrat wírkis. 51.
Sometimes the second hemistich participates in this cumulation of
alliterating words, which not unfrequently extends over several, even
as many as six or seven consecutive lines:
He gráythit me in gáy silk | and gúdlie arráyis,
In gównis of ingránit clayth | and greit góldin chénȝeis.
365–6.
This explains how King James VI came to formulate the metrical rule
mentioned above (p. 89) from the misuse of alliteration by the last
poets who used the alliterative line, or the alliterative rhyming line to
be discussed in the next paragraph, which shares the same
peculiarity.

B. The alliterative line combined with rhyme

§ 58. In spite of the great popularity which the regular alliterative


line enjoyed down to the beginning of the Modern English period,
numerous and important rivals had arisen in the meantime, viz. the
many even-beat rhymed kinds of verse formed on foreign models;
and these soon began to influence the alliterative line. The first mark
of this influence was that end-rhyme and strophic formation was
forced upon many alliterative poems. In a further stage the
alliterative line was compelled to accommodate its free rhythm of
four accents bit by bit to that of the even-beat metres, especially to
the closely-related four-foot iambic line, and thus to transform itself
into a more or less regular iambic-anapaestic metre. The alliterative
line, on the other hand, exercised a counter influence on the newer
forms of verse, inasmuch as alliteration, which was formerly peculiar
to native versification, took possession in course of time to a
considerable extent of the even-beat metres, especially of the four-
foot iambic verse. But by this reciprocal influence of the two forms of
verse the blending of the four-beat alliterative line with that of four
equal measures and the ultimate predominance of the even-beat
metres was brought about more easily and naturally.
Alliterative-rhymed lines, the connexion of which into stanzas or
staves will be treated of in the second part of this work under the
heading of the ‘Bob-wheel-stanza’, were used during the Middle
English period alike in lyric, epic, and dramatic poetry.
§ 59. Lyrical stanzas. The earliest stanzas written in alliterative
rhyming lines were lyrical.
We must distinguish between isometric and anisometric stanza
forms. In the former the whole stanza consists of four-beat
alliterative lines, commonly rhyming according to a very simple
scheme (either a a a a or a b a b). In the latter four-beat long lines
as a rule are combined with isolated lines of one measure only and
with several of two measures to form the stanza. The two-beat
verses frequently have a somewhat lengthened structure (to be
discussed further on sections on the epic stanzas), in consequence
of which many of them having theses with secondary accents can be
read either as even-beat verses of three measures or as three-beat
verses on the model of those in King Horn. The four-beat alliterative
lines, on the other hand, are mostly of more regular structure, the
distances between the first and second arsis not being so unequal
and the theses as a rule being disyllabic. The anacrusis too in these
verses admits of a somewhat free treatment. The difference,
however, between the first and second hemistich is less conspicuous
than it was in those forms of the Middle English alliterative line
before mentioned. Alliteration, on the other hand, is abundantly
used.
The main rhythmic character of the verse is again indicated here by
the frequent occurrence of the types A and A1. The types B C, B C1,
C, C1, however, likewise occur pretty often, and the two last types
present serious obstacles to the assumption that the lines of these
poems were ever recited with an even beat. But how exactly these
poems were recited or to what sort of musical accompaniment can
hardly be definitely decided in the absence of external evidence.
The first verses of a West-Midland poem of the end of the thirteenth
century (Wright’s Political Songs, p. 149) may serve as a specimen:
Ich herde mén vpo móld | máke muche món,
Hou hé beþ iténed | of here tílýnge:
Góde ȝeres and córn | bóþe beþ agón,
Ne képeþ here no sáwe | ne no sóng sýnge.
The second hemistichs in ll. 2 and 4 belong to type C. In other
poems also, with lines of more regular rhythm (chiefly type A), this
type may be met with now and then, e.g. in a poem published in
Wright’s Specimens of Lyric Poetry, p. 25, especially in the second
hemistich, e.g. haueþ þis mái mére, line 9, and þe gýlófre, line 40,
þat þe bór béde, line 44.
It is not difficult to distinguish such rhymed four-beat alliterative
lines from those of four measures which have fairly regular
alliteration, for the long line of the native metre always has a
somewhat looser fabric, not the even-beat rhythmic cadence
peculiar to the iambic verse of four measures, and, secondly, it
always has a caesura after the first hemistich, whereas the even-
beat verse of four measures may either lack distinct caesura or the
caesura may occur in other places in the verse as well as after the
second arsis. This will be evident by comparing the following four-
beat verses of the last stanza of a poem in Wright’s Spec. of Lyr.
Poetry, p. 31:
Ríchard | róte of résoun rýght,
rýkeníng of rým ant rón,
Of máidnes méke þóu hast mýht,
on mólde y hólde þe múrgest món;
with the following first four-beat alliterative lines of another poem
(ibid. p. 25):
Ichot a búrde in a bóure, | ase béryl so brýght,
Ase sáphir in sélver | sémly on sýht,
Ase iáspe þe géntil, | þat lémeþ wiþ lýht,
Ase gérnet in gólde, | and rúby wel rýht.
In similar lines are written several other poems, as Mon in þe mone
(ibid. p. 110); Of ribaudz y ryme (Wright’s Pol. Songs, p. 237); and
five songs by Laurence Minot (nos. ii, v, ix, x, xi), written in the
middle of the fourteenth century.
§ 60. In other poems the four-beat long lines used in the main part
of the stanza are followed by shorter lines forming the cauda, which
in part are of a variable rhythmic cadence either of three beats (or
three measures) or of two beats, as e.g. in the well-known poem in
Percy’s Reliques, ii, p. 1.[113] The first stanza may be quoted here:
Sitteþ alle stílle | and hérkneþ to mé:
Þe kýng of Alemáigne, | bi mi léauté,
Þrítti þousent pound | áskede hé
Forte máke þe pées | in þé countré,
Ant só he dùde móre.
Ríchard,
þah þou be éuer tríchard,
Trícchen shàlt þou néuer mòre.
In the following stanzas of this poem the four-beat rhythm, although
rarely marked by regular alliteration, is (in the main part or ‘frons’)
still more distinctly recognizable, in spite of several rhythmically
incorrect lines.
Second hemistichs of the type C1 are not infrequent, e.g. opon
swývýng 9, sire Édwárd 46, o þy lýárd 47. Lines 5 and 7 are of a
two-beat rhythm, l. 8 probably as well (cf. our scansion).
There is a decided similarity in regard to structure and versification
between this stanza and that of a poem in Wright’s Pol. Songs, p.
153, although the long lines are divided in the middle by interlaced
rhyme. This may be illustrated by its second stanza:
Nou haþ prúde þe prís | in éuervche pláwe,
By mony wýmmon owís | y súgge mi sáwe.
For ȝef a lády lýue ìs | léid after láwe,
Vch a strúmpet þat þer ís | such dráhtes wol dráwe.
In prúde
Vch a scréwe wol hire shrúde,
Þoh he nábbe nout a smók | hire fóule ers to húde.
There is no line here corresponding to l. 5 of the preceding poem.
Otherwise, however, the cauda of this poem is of a similar structure
to that of the preceding one, at least in this and possibly in the
following stanzas, whereas the last line of the first stanza has a two-
beat rhythm, and in the others the last lines probably are to be
scanned with three beats. The second line of the cauda of the first
stanza of this poem belongs to type C. Another poem (Wright’s Polit.
Songs, p. 155; Böddeker, P.L. no. iv) shows a very artificial form of
stanza, either corresponding to the formula a a 4 b 2 c c 4 b 2
d d 4 b 2 e e 4 b 2 f f g g g f 2 (if we look upon the
verses as four-beat and two-beat lines, which the poet probably
intended), or corresponding to the formula a a4 b3 c c4 b3 d d4 b3 e
e4 b3 f f g g g f2 (if we look upon the frons as consisting of ordinary
tail-rhyme-stanza lines of four and three even-beat measures).
The four- and two-beat cadence of the verses comes out still more
clearly in the stanzas of another poem (Wright’s Pol. Songs, p. 187;
Ritson, Anc. Songs, i. 51; Böddeker, P.L. no. v), the rhymes of which
follow the scheme a a a4 b2 c c c4 b2 (extended tail-rhyme-stanzas).
Some of its long lines, it is true, admit of being read as even-beat
verses of three measures, e.g. and béo huere chéuentéyn 20, and
móni anóþer swéyn 24, but the true scansion in all probability is and
béo huere chéuenteȳ̀n (or chèuentéyn): ant móni anòþer swéyn, in
conformity with the scansion of the following lines to cóme to parís:
þourh þe flóur de lís 52–6, or wiþ éorl and wiþ knýht: with húem
forte fýht 124–8.
As a first step to the epic forms of stanza to be considered in the
next paragraph a poem of the early fourteenth century (Wright’s Pol.
Songs, p. 212; Ritson, Anc. Songs, p. 28; Böddeker, P.L. no. vi) may
be quoted:
Lýstne, Lórdinges, | a newe sóng ichulle bigýnne
Of þe tráytours of Scótland, | þat táke beþ wyþ gýnne.
Món þat loveþ fálsnesse, | and nule néuer blýnne,
Sóre may him dréde | þe lýf þat he is ýnne,
Ich vnderstónde:
Sélde wes he glád,
Þat néuer nes asád
Of nýþe ant of ónde.
The fifth line has one arsis only (as appears more clearly from that
in the second stanza: wiþ Lóue), thus corresponding to the above-
mentioned poems (pp. 99, 100); the other lines of the cauda have
two stresses.
Prof. Luick[114] looks upon the long lines of this poem and of several
others (e.g. Wright’s Pol. Songs, pp. 69 and 187) as doubled native
verses of the progressive or Layamon form, but rhyming only as long
lines. This can hardly be, as the rhythmic structure of these verses
does not differ from that of the other poems quoted above, which
belong, according to Prof. Luick himself, to the class of the normal,
lyric rhyming-alliterative lines.
§ 61. Narrative verse. Alliterative-rhyming verses occur in their
purest form in narrative poetry, especially in a number of poems
composed during the fourteenth and fifteenth centuries in stanzas of
thirteen lines, and republished recently in a collective edition by the
Scottish Text Society in vol. 27 under the title Scottish Alliterative
Poems (ed. by F.J. Amours, Edinburgh, 1892). The poems contained
in this collection are Golagras and Gawane (also in Anglia, ii. 395),
The Book of the Howlat by Holland, Rauf Coilȝear (also in E. E. T. S.,
Extr.-Ser. vol. xxxix), The Awntyrs off Arthure at the Terne
Wathelyne, The Pistill of Susan (also in Anglia, i. 93). Douglas’s
Prologue to the Eighth Book of his translation of the Aeneid
(although written in the beginning of the sixteenth century) likewise
belongs to this group, as do also the poems of John Audelay,
composed in Shropshire in the fifteenth century (Percy Soc. xiv, p.
10 ff.), and a poem Of Sayne John the Euaungelist (E. E. T. S. 26, p.
87) written in stanzas of fourteen lines in the North of England. The
stanzas of all these poems—generally speaking—consist of two
unequal parts, the frons written in alliterative lines, rhyming
according to the formula a b a b a b a b, and the cauda which
contains five or six lines, the first of which may either be a long line
as in the frons, or, as in The Pistill of Susan, a short one-beat one,
with four two-beat sectional verses following. Only in the last-
mentioned poem does the cauda consist of six two-beat sectional
verses.
The rhythm of this alliterative-rhyming metre may first be illustrated
by the opening lines of Golagras and Gawane:
I.
In the týme of Árthur, | as tréw men me táld,
The king túrnit on ane týde | tówart Túskane,
Hym to séik our the séy, | that sáiklese wes sáld,
The sýre that sèndis all séill, | súthly to sáne;
With bánrentes, bárounis, | and bérnis full báld,
Bìggast of báne and blúde | bréd in Brítàne.
Thei wálit out wérryouris | with wápinnis to wáld,
The gàyest grúmys on grúnd, | with géir that myght gáne;
Dúkis and dígne lòrdis, | dóuchty and déir,
Sémbillit to his súmmòvne,
Rénkis of grete rénòvne,
Cùmly kíngis with cróvne
Of góld that wes cléir.
II.
Thus the róyale can remóve, | with his Róund Tábill,
Of all ríches maist ríke, | in ríall arráy.
Wes neuer fúndun on fóld, | but fénȝeing or fábill,
Ane fàyrar flóure on ane féild | of frésche men, in fáy; &c.
Lines like the four last quoted illustrate the normal structure of the
rhyming-alliterative verse, especially the relationship of rhyme and
alliteration to each other in monosyllabic and disyllabic words. It will
be seen that the rhyming syllable, as a rule the root-syllable, or at
least the accented syllable of the word, at the same time carries the
fourth accent of the line, and in consequence the fourth alliterative
sound. In all other respects the rhymed-alliterative verse is
structurally similar to that without rhyme, and it is therefore evident
that rhyme exercises no decisive influence on the rhythm of the
verse. In this comparatively pure form—if we do not take into
account the secondary accents occurring in the first hemistichs of
the stanza in the later poem—are written the great majority of the
lines in the earliest of poems mentioned above, viz. The Awntyrs off
Arthure.
§ 62. The relation, however, between rhyme and alliteration and
consequently the relation of the rhythmic accentuation of the words
to their natural accentuation is less clear in the first stanza quoted
above. The following verses rhyming together may serve to elucidate
this:
Than schir Gáwyne the gáy, | gúde and gráciùs....
Jóly and géntill, | and full chéuailrús.
Gol. 389, 391.
Ouer heor hédes gon hýng
Þe wínce and þe wéderlȳ̀ng.
Susan, 101–2;
or the verses Gol. 648, 650, 654:
Thus éndit the áuynantis | with mékil hónòur;
Thair bódeis wes béryit | báith in ane hòur,
Ane úthir heght Édmond, | that próuit páramòur.
In the first couplet the last syllable of the word gráciùs, although
bearing only a secondary accent and forming the last thesis of the
verse, rhymes with the last syllable of the word chéuailrús, which
likewise in ordinary speech has a secondary accent, but here is the
bearer of the fourth metrical accent of the verse. In the second
couplet the syllable lyng of the word wéderlỳng, which has a
secondary accent and forms part of the thesis, rhymes with the word
hyng which has the rhythmical accent. In the last group of verses
the last syllable of the words paramour, honour having secondary
accents rhymes with the word hour, the bearer of the last rhythmical
accent. Similar rhymes occur even in Modern English poetry, e.g. in
the works of Thomas Moore: Váin were its mélodỳ, Róse, without
thée or Whát would the Róse bè Únsung by thée?[115]
It also frequently happens that all the rhyming syllables, which have
a secondary accent and occur in the thesis of a verse, belong to
trisyllabic words, while the accented syllables in the arsis, whether
alliterating or not, do not take part in the rhyme, e.g.:

Þou brak gódes Comáundement,


To slé such an Ínnocent
With ény fals júggement. Susan, 321–3.
Similar unaccented rhymes are also met with in disyllabic words:

‘In fáith,’ said Schir Rólland,


‘That is fúll euill wýn land
To háue quhill thow ar léuand.’ Rauf Coilȝear, 917–19.
Other rhymes of the same kind are sémbland: léuand, conséntand :
endúrand, Gol. 428 ff., &c.
In all such cases the natural accentuation of the words is not
interfered with by the rhythm of the verse.
The kind of irregular rhyme most frequently occurring, however, is
that which is formed by the unaccented syllable of a disyllabic word
(the first syllable of which alliterates and bears the last arsis of the
verse) rhyming with a monosyllabic word which likewise bears the
fourth rhythmical accent of another alliterative line (or the second of
a short line forming part of the cauda) and takes part in the
alliteration as well, as e.g. in the rhymes Túskane: sane: Brítane:
gane and súmmovne: rénovne: crovne of the above-mentioned
stanza of the poem Golagras and Gawane.
It is not likely that a complete shifting of accent in favour of the
rhyming syllable ever took place, as the first syllables of the words
usually take part in the alliteration, and therefore have a strongly
marked accent. Sometimes, it is true, in the poems of this epoch,
unaccented syllables do participate in the alliteration, and in the case
of the words Tuskane, Britane, summovne, renovne their Romance
origin would explain the accent on the last syllable; but these words,
both as to their position and as to their treatment in the line, are
exactly on a par with the Germanic rhyme-words in ll. 870–2:
For he wes býrsit and béft,ỳ | ỳand bráithly blédand ...
And wáld that he nane hárm hyntỳ | ỳwith hárt and with hánd.
In both cases we thus have ‘accented-unaccented rhymes’ (cf.
Chapter I in Book II), which probably were uttered in oral recitation
with a certain level stress. This is probable for several reasons. First
it is to be borne in mind that Germanic words in even-beat rhythms
of earlier and contemporary poems were used in the same way, e.g.:
Quhen thái of Lórne has séne the kíng
Set ín hymsélff sa grét helpíng. Barbour, Bruce, iii. 147–8.
And bád thame wénd intó Scotlánd
And sét a sége with stálward hánd. ib. iv. 79–80.
Only in these cases the rhythmical accent supersedes the word
accent which has to accommodate itself to the former, while in the
uneven-beat rhythm of the four-beat alliterative line the word-accent
still predominates. In the even-beat lines, therefore, the rhythmical
accent rests on the last syllable of a disyllabic rhyme-word, but in
the alliterative lines it rests on the penultimate. In the case of words
of Romance origin, however, which during this period of the
language could be used either with Germanic or with Romanic
accentuation, the displacement of the word-accent by the rhythmic
accent in non-alliterative words may in these cases have been
somewhat more extensive; cf. e.g. rhymes like rage: curáge: suáge
Gol. 826–8; day : gay: journáy ib. 787–9; assáill: mettáill: battáil R.
Coilȝear, 826–8, &c. (but ȝone bérne in the báttale Gol. 806).
As a rule, however, for these too the same level-stress accentuation
must be assumed as for the rhyme-words of the first stanza of
Golagras quoted above (p. 102)
§ 63. This is all the more probable because, in these alliterative-
rhyming poems, there are many sectional verses corresponding to
the old types C and C1, these answering best the combined
requirements of alliteration and of end-rhyme, for which frequently
one and the same Germanic or Romanic word had to suffice in the
second hemistich, as e.g. in the following sectional verses rhyming
together:—What is þi góod réde: for his kníȝthéde: (by crósse and
by créde) Awnt. of Arth. 93–7; (and bláke to þe bóne): as a
wómáne ib. 105–7; enclósed with a crowne: of the trésóne ib. 287–
91; of ane fáir wéll: téirfull to téll: with ane cástéll : kéne and
crúèll, or, as Prof. Luick scans, kéne and cruéll (but l. 92 crúel and
kéne) Gol. 40–6; at the mýddáy: (wént thai thar wáy) Howl. 665–7.
&c.
Also in the even-beat metres the influence of this type is still
perceptible; cf. rhymes like
Súmwhat óf his clóþíng
Fór þe lóue of héuene kýng. Rob. Mannyng, Handl. Sinne, 5703–4.
which are of frequent occurrence.
For the rest both in these alliterative-rhyming poems and in the
poems with alliteration only the types A and A1, B C and B C1 are
frequent. These alliterative-rhyming lines have this feature in
common with the pure alliterative lines, that the first hemistich
differs materially from the second in having often an anacrusis of
several syllables (initial theses) and somewhat lengthened theses in
the middle of the line, and in permitting such theses with only a
secondary accent to take part in the alliteration. All this tends to give
a somewhat heavy rhythmic cadence to the whole line.
§ 64. The same difference is perceptible, as Prof. Luick was the first
to show (Anglia, xii, pp. 438 ff.), in the single two-beat lines of the
cauda, the three first (ll. 10–12 of the whole stanza) having the
looser structure of the extended first hemistichs of the long lines,
while the last two-beat line (line 13 of the whole stanza) has the
normal structure (commonly type A, A1, as e.g. Birnand thrétty and
thré Gol. 247; Of góld that wes cléir ib. 1) of second sections of the
long line, as is evident from the first stanza of Golagras and Gawane
quoted above (p. 102). In this concluding line, however, other types
of verse peculiar to the second hemistich of long lines may also be
met with, as e.g. C, C1, B C , B C 1 , e.g.: For thi mánhéde Awnt. of
Arth. 350; Withoutin dístánce Gol. 1362; As I am tréw kníght Gol.
169; Couth na léid sáy ib. 920; In ony ríche réime ib. 1258, Quhen
he wes líghtit dóun ib. 130.
In other poems the group of short lines rhyming according to the
scheme a a a b and forming part of the cauda is preceded neither by
a long alliterative line nor by a one-beat half section of it (as in
Susan), but by a complete two-beat sectional verse, which then, in
the same way as the last verse rhyming with it, corresponds in its
structure to that of the second hemistich of the long line; as e.g. in
The Tournament of Tottenham (Ritson’s Ancient Songs, i. 85–94),
rhyming on the scheme A A A A b c c c b (the capitals signifying the
long lines), and in The Ballad of Kynd Kittok, possibly by W. Dunbar
(Laing, ii. 35, 36; Small, i. 52, 53; Schipper, 70).
In Sayne John the Euaungelist the ‘cauda’ has the structure of a
complete tail-rhyme-stanza, the order of rhymes of the whole stanza
being A B A B A B A B c c d c c d
§ 65. In connexion with this it is particularly interesting to note that
such two-beat sections of the alliterative line are also used by
themselves for whole poems written in tail-rhyme-stanzas (as was
first shown by Prof. Luick, Anglia, xii, pp. 440 ff.); cf. e.g. the
translation of the Disticha Catonis (E.E.T.S. 68), the two first stanzas
of which may be quoted here:

If þóu be made wíttenèsse,


For to sáy þat sóþ ìs,
Sáue þine honóur,
Als míkil, as þou may fra bláme,
Lame þi fréndis sháme,
And sáue fra dishonóur.

For-sóþ flípers,
And alle fáls fláters
I réde, sone, þou flé;
For þen sálle na gode mán,
Þat any góde lare cán,
Þár-fore blame þé.

In the same stanza The Feest (Hazlitt, Remains, iii. 93) is written.
Still more frequently such lines were used for extended tail-rhyme-
stanzas rhyming on the scheme a a a b c c c b d d d b e e e b, as
e.g. in a poem, The Enemies of Mankind, of the beginning of the
fourteenth century, published by Kölbing (Engl. Studien, ix. 440 ff.).
The first stanza runs as follows:
Þe sìker sóþe who so séys,
Wiþ dìol dréye we our dáys
And wàlk máni wil wáys
As wándrand wíȝtes.
Al our gámes ous agás,
So mani ténes on tás
Þurch fónding of fele fás,
Þat fást wiþ ous fíȝtes.
Our flèsche is fóuled wiþ þe fénd;
Þer we fínde a fals frénde:
Þei þai héuen vp her hénde,
Þai no hóld nouȝt her híȝtes.
Þis er þré, þat er þrá,
Ȝete þe férþ is our fá,
Dèþ, þat dérieþ ous swá
And díolely ous díȝtes.
Here, again, the difference between the lines on the pattern of the
first hemistich of the long line, which form the body of the stanza (a
a a, b b b, c c c, d d d), and those on the pattern of the second
hemistich used as tail-rhyme lines (b, b, b, b) is plainly recognizable.
The same is the case in other poems written in this form of stanza,
as e.g. in the Metrical Romances, Sir Perceval, Sir Degrevant
(Halliwell, Thornton Romances, Camden Society, 1844, pp. 1, 177)
and others; cf. Luick, Anglia, xii, pp. 440ff., and Paul’s Grundriss, ii a,
p. 1016. But in these later works, one of the latest of which probably
is the poem The Droichis Part of the Play, possibly by Dunbar (Laing,
ii. 37; Small, ii. 314; Schipper, 190), the two-beat lines are
frequently intermingled and blended with even-beat lines, which
from the beginning of the fifth stanza onward completely take the
place of the two-beat lines in the last-mentioned poem. Likewise in
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

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.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like