The Real 3 Virtues of Perl
Introduction[edit | edit source]
When Larry Wall revealed to the the Perl faithful in 1996 [1] that the ”Three Virtues of a Perl Programmer”
were: laziness, impatience, and hubris; he also described what he meant, which was in contrast to the actual
meanings of those terms. Unfortunately the words that he chose continue to be passed along as actual virtues,
while what he meant to convey has been lost to the sands of time. Worse of all, they are touted as virtues, when
in fact, they are all vices. The Perl Community aims to correct this situation by focusing on the actual virtues
described by Perl’s founder.
Virtues versus Vices[edit | edit source]
The concept of virtues is very old, dating back to Nicomachean Ethics. Aristotle identified virtues as character
traits that enable individuals to live a good life and achieve eudaimonia (flourishing or happiness). Examples include
courage, temperance, and justice. Virtue was seen as the ”golden mean” between two extremes (e.g., courage is the
balance between recklessness and cowardice). Aristotle’s virtues, such as courage, justice, and temperance emphasize
achieving a balanced and flourishing life through reason. These ideals directly influenced formal Christian virtues,
particularly through St. Thomas Aquinas’ prolific writings, which integrated them with faith, hope, and charity as
moral principles for spiritual growth. For example, the medieval codes of chivalry reflected this synthesis, urging
knights to embody classical virtues like courage, meekness, humility, and compassion, as seen in their oaths to
protect the weak and uphold justice.
Here we describe what Larry Wall meant in correct, virtuous, and perhaps even chivalrous, terms.
Practical Wisdom or Prudence, Not Laziness[edit | edit source]
Unlike the vice of laziness, this virtue refers to practical wisdom, or prudence. It involves the ability to make
sound decisions and take appropriate actions based on understanding, experience, and ethical considerations. This
aligns closely with Larry’s definition of laziness, summarized as: ”...the quality that makes you go to great effort
to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful
and document what you wrote so you don’t have to answer so many questions about it.”
Spiritedness, Not Impatience[edit | edit source]
Accounting for the passionate aspect of human nature, this encompasses emotions like anger, righteous indig-
nation, and the drive to achieve justice or excellence. Who among us has not experienced this in some form,
particularly during heated online discussions? This aligns well with Larry’s definition of impatience, summarized
as: ”...the anger you feel when the computer is being lazy. This makes you write programs that don’t just react to
your needs but actually anticipate them—or at least pretend to.”
Good Order, Not Hubris[edit | edit source]
Far from harmful pride, this refers to maintaining good order and governance, both in societal contexts and
personal conduct. Applied to programming, it signifies creating well-structured, organized, and maintainable code.
This aligns well with Larry’s definition of hubris, summarized as: “...the quality that makes you write (and maintain)
programs that other people won’t want to say bad things about.”
Conclusion[edit | edit source]
The following virtues enable individuals and groups to achieve eudaimonia—flourishing—universally, for the
entire family of Perl programmers. The timeless and time-tested foundation for achieving this has always been, and
will always be, based on exercising virtue. There are other virtues that could benefit the Perl Community as we
move forward, but let us begin by correctly speaking about the first principles established by Perl’s creator. Thank
you, Larry Wall!
References[edit | edit source]
[1] Larry Wall, Tom Christiansen, and Randal L. Schwartz. Programming Perl. O’Reilly & Associates, 2nd edition,
1996