<?xml version="1.0" encoding="windows-1252"?>
<node id="437032" title="The Lighter Side of Perl Culture (Part IV): Golf" created="2005-03-06 07:30:18" updated="2005-08-13 21:57:22">
<type id="120">
perlmeditation</type>
<author id="176576">
eyepopslikeamosquito</author>
<data>
<field name="doctext">
&lt;P&gt;
&lt;blockquote&gt;

&lt;P&gt;
Traditionally computer languages try to be as orthogonal as possible, meaning their features are all at right angles to each other, metaphorically speaking. The problem with that is that people don't solve problems that way. If I'm in one corner of a park and the restrooms are in the opposite corner of the park, I don't walk due east and then due north. I go northeast -- unless there's a pond in the way or something.
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- Larry Wall in &lt;a href="http://www.techgnosis.com/wall1.html"&gt;interview with Erik Davis, 1998&lt;/a&gt;&lt;/small&gt;
&lt;/P&gt;

&lt;P&gt;
The clichéd example is, of course, the well-known exercise
of getting a language to print "Hello World". In Java,
that's:
&lt;CODE&gt;
      class HelloWorldApp {
         public static void main(String[] args) {
            System.out.println("Hello World!");
         }
      }
&lt;/CODE&gt;
It's a cheap shot to point out how syntactically
overburdened that is, but it does illustrate a far more
important point: that it's *cognitively* over-burdened too
...
Perl gets by with:
&lt;CODE&gt;
print "Hello World\n";
&lt;/CODE&gt;
in which the only arcane part is that C-ish "\n" newline. And in Perl 6, even that won't be needed:
&lt;CODE&gt;
say "Hello World";
&lt;/CODE&gt;
And that's what attracts me to Perl. The demands of the
language itself don't get in the way of *using* the
language.
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- Damian Conway in &lt;a href="http://www.builderau.com.au/program/0,39024614,39160082,00.htm"&gt;Builder AU interview&lt;/a&gt;&lt;/small&gt;
&lt;/P&gt;

&lt;P&gt;
I think the one that has the best broad coverage is Java, but I'm a really biased sample.
If you're doing things that are heavily into string pattern-matching, Perl can be pretty nice. I guess actually those are the ones I use much at all these days.
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- James Gosling in &lt;a href="http://www.gotw.ca/publications/c_family_interview.htm"&gt;Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling&lt;/a&gt;&lt;/small&gt;
&lt;/P&gt;

&lt;/blockquote&gt;
&lt;/P&gt;

&lt;P&gt;
Guided by a core set of principles and goals, every
language designer is tormented by thousands of
agonizing choices. Gosling chose differently to Wall.
A perhaps unintended side effect of some of Larry's choices
-- such as Perl's "diagonal-ness" and TMTOWTDI --
is that playing golf in Perl is fun.
By contrast, &lt;I&gt;and I've never tried it&lt;/I&gt;, I imagine playing golf in Java (or Cobol) would feel oppressive
in the extreme.
&lt;/P&gt;

&lt;P&gt;
Of course, like obfuscation and poetry, only a
minority of Perl programmers actually pursue golf
as a hobby.
James Gosling, for instance, though he readily
acknowledges writing many Perl programs,
has never entered a Perl golf tournament,
to the best of my knowledge.
&lt;/P&gt;

&lt;P&gt;
This, the fourth episode of the long running
series on the lighter side of Perl culture, focuses on
&lt;a href="http://perlgolf.sourceforge.net/"&gt;Perl Golf&lt;/a&gt;.
&lt;/P&gt;

&lt;readmore&gt;

&lt;P&gt;&lt;B&gt;History&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;
&lt;blockquote&gt;

&lt;P&gt;
There were secrets to those IBM machines that had been painstakingly
learned by some of the older people at MIT with access to the 704
and friends among the Priesthood. Amazingly, a few of these programmers,
grad students working with McCarthy, had even written a program that
utilized one of the rows of tiny lights: the lights would be lit in
such an order that it looked like a little ball was being passed from
right to left: if an operator hit a switch at just the right time,
the motion of the lights could be reversed--Computer Ping-Pong!
This obviously was the kind of thing that you'd show off to impress
your peers, who would then take a look at the actual program you
had written and see how it was done.
&lt;/P&gt;

&lt;P&gt;
To top the program, someone else might try to do the same thing with
fewer instructions--a worthy endeavor, since there was so little room
in the small "memory" of the computers of those days that not many
instructions could fit into them. John McCarthy had once noticed how
his graduate students who loitered around the 704 would work over
their computer programs to get the most out of the fewest instructions,
and get the program compressed so that fewer cards would need to be
fed to the machine. Shaving off an instruction or two was almost an
obsession with them. McCarthy compared these students to ski bums.
They got the same kind of primal thrill from "maximizing code" as
fanatic skiers got from swooshing frantically down a hill. So the
practice of taking a computer program and trying to cut off instructions
without affecting the outcome came to be called "program bumming,"
and you would often hear people mumbling things like "Maybe I can
bum a few instructions out and get the octal correction card loader
down to three cards instead of four."
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- &lt;a href="http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)"&gt;John McCarthy&lt;/a&gt;'s grad students playing golf (&lt;I&gt;"program bumming"&lt;/I&gt;) in machine language on the IBM 704 computer in 1959 (from &lt;a href="http://en.wikipedia.org/wiki/Hackers:_Heroes_of_the_Computer_Revolution"&gt;Hackers, Heroes of the Computer Revolution&lt;/a&gt; by Steven Levy)&lt;/small&gt;
&lt;/P&gt;

&lt;P&gt;
I recently read an article where Knuth describes a game of golf on a 50's machine. The machine read cards, and one could put 8 machine instructions on a card. The goal was to write a program fitting on one card that would read in a number, and reverse it.
Noone was able to do it, but Knuth once stunned his fellow students. He came in, put a card in the reader, entered the number 123456789, ran the program, and the program outputted 987654321.
Of course, the program would always output 987654321, regardless of the number on input.
Later, the machine got an extension. A whopping extra register, with front panel toggles. Which could be used to store an instruction as well. Knuth was delighted that that enabled him to write a single card program that reversed a number.
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- Abigail talks about Knuth on comp.lang.perl.misc 23 March 2001&lt;/small&gt;
&lt;/P&gt;

&lt;P&gt;
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague. In the case of a well-known conversational programming language I have been told from various sides that as soon as a programming community is equipped with a terminal for it, a specific phenomenon occurs that even has a well-established name: it is called "the one-liners." It takes one of two different forms: one programmer places a one-line program on the desk of another and either he proudly tells what it does and adds the question, "Can you code this in less symbols?"---as if this were of any conceptual relevance!---or he just says, "Guess what it does!". From this observation we must conclude that this language as a tool is an open invitation for clever tricks; and while exactly this may be the explanation for some of its appeal, viz., to those who like to show how clever they are, I am sorry, but I must regard this as one of the most damning things that can be said about a programming language.
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- Edsger Wybe Dijkstra (1930-2002) in his 1972 essay: The Humble Programmer (cited in [id://81870])&lt;/small&gt;
&lt;/P&gt;

&lt;/blockquote&gt;
&lt;/P&gt;

&lt;P&gt;
As indicated by the quotes above, playing golf in
computer languages started long before Perl did.
It's just that it wasn't called golf back then.
&lt;/P&gt;

&lt;P&gt;
Perl's main claim to fame in this golf business is that
a Perl hacker, namely Greg Bacon, actually coined the term
&lt;a href="https://groups.google.com/group/comp.lang.perl.misc/msg/7b97c434492c8d20"&gt;
Perl Golf&lt;/a&gt;
in a comp.lang.perl.misc thread on 28 May 1999.
And the term &lt;I&gt;golf&lt;/I&gt; has been applied to other
computer languages since then.
Ironically, Greg may have intended the term as
derogatory -- just as
&lt;a href="http://www.kirjasto.sci.fi/hoyle.htm"&gt;Fred Hoyle&lt;/a&gt;
coined the term "Big Bang" to mock that theory --
because Greg
&lt;a href="http://www.mail-archive.com/fwp@perl.org/msg02033.html"&gt;once dismissed golf as really, really boring&lt;/a&gt;.
&lt;/P&gt;

&lt;P&gt;As you might expect, the earliest exponents of Perl Golf
were probably Larry and Randal. For example,
&lt;a href="http://groups.google.com/groups?as_umsgid=2969@jato.Jpl.Nasa.Gov"&gt;here&lt;/a&gt;
is an early golfish Larry post from March 1990. And in
&lt;a href="http://groups.google.com/groups?selm=1991Apr29.072206.5621%40jpl-devvax.jpl.nasa.gov"&gt;this one&lt;/a&gt;
Larry implies that Randal was his golfing buddy in those
early days.
&lt;/P&gt;

&lt;P&gt;
In March 1995, Adam Back and Hal Finney caused a stir by &lt;a href="http://www.cypherspace.org/rsa/org-post.html"&gt;implementing RSA encryption and decryption in Perl&lt;/a&gt; as a signature file. Later &lt;a href="http://www.cypherspace.org/rsa/story.html"&gt;Clifford Adams and others joined in the fun&lt;/a&gt;.
&lt;/P&gt;

&lt;P&gt;
In September 1995, in what was probably the first golf contest with money prizes, the surprising winner of this
&lt;a href="http://groups.google.com/groups?threadm=42ifbm%242tt%40vixen.cso.uiuc.edu"&gt;comp.programming.contests C golf contest&lt;/a&gt;
was a Perl hacker (some might say &lt;I&gt;the&lt;/I&gt;
Perl hacker;-).
The goal of this competition was to find the shortest
C program that reverses all words in a file.
I found this exchange amusing.
&lt;/P&gt;

&lt;P&gt;
&lt;blockquote&gt;
&lt;CODE&gt;
: &gt;Well, if that's your goal, you're gonna have to work a little harder.
: &gt;I sent this out last week, but it never made it off my machine.  It's
: &gt;50 characters, counting the final newline.
: &gt;
: &gt;    main(){system("perl -pe 's/\\w+/reverse$&amp;/eg'");}
: &gt;
: &gt;It's almost readable, too.
: &gt;
: &gt;Larry Wall
:
: Well, if we're allowed to write our own interpreters then yours is
: easy to beat!
:
:     main(){system("a");}
:
: 20 characters! (Not counting the final newline.)
:
: You haven't heard of my interpreter "a"?  Well it just so happens
: that, without any command line arguments, it filters stdin to stdout
: in a manner that is identical to any of the valid entries to this
: competition, like your entry above for example.  :-)
:
: John Ellson

Well, hey, I said you'd have to work a *little* harder, not a lot harder.  :-)

Larry
&lt;/CODE&gt;
&lt;/blockquote&gt;
&lt;/P&gt;

&lt;P&gt;
Jumping forward to July 2000, Uri Guttman initiated the
ill-fated
&lt;a href="http://bumppo.net/lists/fun-with-perl/2000/07/msg00005.html"&gt;
Perl Golf Apocalypse&lt;/a&gt;
scheduled to run, accompanied by witty commentary,
in front of a live audience at TPC 4.
Alas, a number of technical glitches caused the event
to be cancelled, replaced by a Damian Conway talk.
Given that Larry was in the audience, it's little
wonder that Uri is still
&lt;a href="http://www.mail-archive.com/fwp@perl.org/msg02035.html"&gt;
scarred&lt;/a&gt;
by it today. To my knowledge, no one has been brave enough
to attempt a live Perl Golf contest since.
The Apocalypse questions formed part of a golf
competition run by [jmcnamara] in [id://82878] and
[id://84767] here at the monastery. I note with
interest that [mtve] found some improvements to the
original contest solutions some years later
(this seems to be a speciality of [mtve] and
[thospel]).
&lt;/P&gt;

&lt;P&gt;
During 2001, there was such a rush of golf posts
here at the monastery, that [chipmunk]
sent out a plea, [id://82470], to calm things
down a bit.
&lt;/P&gt;

&lt;P&gt;Just before Christmas 2001, the fwp mailing list
exploded with a flurry of golf threads, starting with the
&lt;a href="http://www.mail-archive.com/fwp@perl.org/msg00574.html"&gt;Santa Claus Golf Apocalypse&lt;/a&gt;
won by Eugene van der Pijll. This tournament introduced
an innovation: strict rules and a test program that all
entries must pass before being accepted. A much improved
version of this early test program can be found
&lt;a href="http://www.xs4all.nl/~thospel/golf/gentest.pl"&gt;here&lt;/a&gt;.
These golf contests spawned a new mailing list
golf@perl.org, split off from fwp.
&lt;/P&gt;

&lt;P&gt;
A new magazine,
&lt;a href="http://www.theperlreview.com/"&gt;The Perl Review&lt;/a&gt;,
launched early in 2002, sponsored a series
of golf tournaments run at &lt;a href="http://perlgolf.sourceforge.net/"&gt;SourceForge&lt;/a&gt;
by Dave Hoover and Jérôme Quelin. These tournaments
were run monthly throughout 2002, the top five money
winners at the end of season being:
&lt;blockquote&gt;
&lt;CODE&gt;
1  Ton Hospel                 $ 4,384,000.00 (10/13)
2  Rick Klement               $ 3,712,000.00 (12/13)
3  Eugene van der Pijll       $ 3,540,000.00 (10/13)
4  Stephen Turner             $ 1,955,200.00 (11/13)
5  Mtv Europe                 $ 1,837,040.00 (9/13)
&lt;/CODE&gt;
&lt;/blockquote&gt;
&lt;/P&gt;

&lt;P&gt;
In 2003, the TPR tournaments moved to
&lt;a href="http://terje2.frox25.no-ip.org/"&gt;Terje Kristensen's minigolf site&lt;/a&gt;
where Ton Hospel, Mtv Europe and Rick "tybalt89" Klement continued to dominate. Around this time, golf enjoyed a surge of popularity in Poland, courtesy of games run at the kernelpanic.pl web site and the Polish comp.lang.perl newsgroup.
After two to three seasons, these sites became inactive and the game of Perl Golf transmogrified into Code Golf. Serious golf competitions in Perl, Python, Ruby and PHP are nowadays run at &lt;a href="http://codegolf.com/"&gt;Code Golf&lt;/a&gt;, while less serious ones (in 51 different languages) are played at &lt;a href="http://golf.shinh.org/"&gt;shinh's golf site&lt;/a&gt;.
&lt;/P&gt;

&lt;P&gt;&lt;B&gt;What is Perl Golf?&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;
Is it an art, a sport, just a bit of fun,
a waste of time, or a threat to sound coding
practices?
I don't want to dwell too much on this; it is
different things to different people.
Hopefully, as with obfuscation, people are sensible
enough to &lt;I&gt;not&lt;/I&gt; start golfing on production code.
My personal view is that golf is mostly about fun
and competition.
&lt;/P&gt;

&lt;P&gt;
As for the usefulness of Perl golf, apart from being
a fun way to explore TMTOWTDI, notice that
Perl golf, by its nature, pushes the language to
its limits, often exercising boundary conditions.
It should come as no surprise therefore that quite a
few perl bugs have been unearthed during golf
tournaments, especially by Ton Hospel.
&lt;/P&gt;

&lt;P&gt;&lt;B&gt;Golf Competitions&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;
&lt;blockquote&gt;

&lt;P&gt;
&lt;I&gt;
I think Felix (the contest judge) made a bad judgement,
because the winning program was not nearly as confusing
as mine---it was actually very simple.
&lt;/I&gt;
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;
-- MJD on TPJ OPC 5 judging at
&lt;a href="http://perl.plover.com/obfuscated/"&gt;perl.plover.com&lt;/a&gt;
&lt;/small&gt;
&lt;/P&gt;

&lt;/blockquote&gt;
&lt;/P&gt;

&lt;P&gt;
Competitions requiring judges, such as Olympic gymnastics
and obfuscated Perl competitions, are easily spoiled
by poor judging, as alluded to above by MJD.
The wonderful thing about Perl Golf
competitions compared to obfuscated ones is that golf
is typically judged simply by counting up the number
of characters in your solution. I've never seen any
ugly disputes or complaints about who should have won.
&lt;/P&gt;

&lt;P&gt;
Of course, the winning golf solution may be horribly
ugly or highly inefficient. So several people have
suggested alternative types of competitions,
judged by different criteria. Perhaps the most commonly
suggested is the &lt;I&gt;100 metre dash&lt;/I&gt; where each solution
is timed and the fastest wins. A novel twist on this idea
is to measure not the CPU or wall clock time, but the
number of Perl ops. For more information on Perl ops see
&lt;a href="http://www.ccl4.org/~nick/P/Fast_Enough/"&gt;Nicholas Clark's excellent paper "when perl is not quite fast enough"&lt;/a&gt;. Yet another alternative is
&lt;a href="http://perl.plover.com/qotw/"&gt;
MJD's Perl Quiz of the Week&lt;/a&gt;
where human judges comment on the "quality" of
a solution after a 60 hour grace period.
&lt;/P&gt;

&lt;P&gt;
&lt;blockquote&gt;

&lt;P&gt;
&lt;I&gt;
The story goes that Marshall discovered this variation
9 years before he played it, and avoided defending with
the Ruy Lopez for 9 years until he had a chance to
spring it on Capablanca.
&lt;/I&gt;
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;
-- Quote taken from
&lt;a href="http://www.geocities.com/SiliconValley/Lab/7378/capamars.htm"&gt;
note by Bill Wall (any relation to Larry?)&lt;/a&gt;
&lt;/small&gt;
&lt;/P&gt;

&lt;/blockquote&gt;
&lt;/P&gt;

&lt;P&gt;
It's a mark of Capablanca's genius that he was able
to refute over the board a variation his grandmaster
opponent had been studying and preparing for nine years.
&lt;/P&gt;

&lt;P&gt;
In similar style to Capablanca, during the TPR tournaments
four expert golfers would sometimes cook up a problem,
study it in consultation for a month, and conclude
the best solution possible was, say, 120 strokes.
Yet within a couple of hours, the remarkable Ton
Hospel would then go and post a score of around 100!
&lt;/P&gt;

&lt;P&gt;
In many ways, Perl Golf tournaments resemble
a fiercely contested chess tournament.
&lt;/P&gt;

&lt;P&gt;&lt;B&gt;Some Classic Golf Games&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;
One golf that seems to come up again and again is the
famous 99 bottles of beer song. It's been
discussed here at the monastery in: [id://43619], [id://146498], [id://191643], [id://243431] and [id://363199]. For the record, I believe the shortest
known solution is not in any of those nodes, but was
concocted by [thospel] and [mtve] as follows:
&lt;CODE&gt;
sub
b{[@b=(abs||No,bottle."s"x!!++$_,of,beer),on,the,wall]}print
"@{+b},\n@b,\nTake one down, pass it around,\n@{+b}.\n"
for-pop||-99..-1
&lt;/CODE&gt;
This version takes a command line argument specifying
the number of bottles (default 99). If you find a
shorter one, respond away!
&lt;B&gt;May 2011 Update:&lt;/B&gt; Shorter bottle golf solutions are now described in [id://903641].
&lt;/P&gt;

&lt;P&gt;
The most interesting golf games occur when several
solutions, all with a similar score, are possible.
To illustrate, consider
&lt;a href="http://perlgolf.sourceforge.net/TPR/0/5a/"&gt;TPR(0,5a)&lt;/a&gt;,
an infix to postfix converter. This problem could be
solved with: an operator stack; via overload; a recursive
regex; top-down parsing; or
Eugene's winning Mad Dutch algorithm
(invented for this game). Sometimes, a truly
astonishing approach is found, as when
Jukka Suomela in
&lt;a href="http://perlgolf.sourceforge.net/TPR/0/4b/"&gt;TPR(0,4b)&lt;/a&gt;
observed that perl itself has a built-in topological sorter: the garbage collector. Chris Dolan's
explanation can be found
&lt;a href="http://nntp.perl.org/group/perl.golf/1289"&gt;here&lt;/a&gt;.
&lt;/P&gt;

&lt;P&gt;&lt;B&gt;Some Standard Golfing Techniques&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;
&lt;blockquote&gt;

&lt;P&gt;
&lt;I&gt;
Common operations should be "Huffman coded." That is, frequently used operators should be shorter than infrequently used ones.
&lt;/I&gt;
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- Larry Wall in &lt;a href="http://dev.perl.org/perl6/apocalypse/A03.html"&gt;Apocalypse 3&lt;/a&gt;&lt;/small&gt;
&lt;/P&gt;

&lt;P&gt;
&lt;CODE&gt;
: OK.  Still, it'd be nice to get anonymous scalars somehow.

The Huffman encoding of that is do{\my$x}.
&lt;/CODE&gt;
&lt;/P&gt;

&lt;P align="right"&gt;
&lt;small&gt;-- Larry Wall on p5p, 30 April 1999&lt;/small&gt;
&lt;/P&gt;

&lt;/blockquote&gt;
&lt;/P&gt;

&lt;P&gt;
An excellent introduction to the basics of shortening your Perl code be found in [id://551876].
&lt;/P&gt;

&lt;P&gt;As discussed in
&lt;a href="http://www.mail-archive.com/fwp@perl.org/msg03431.html"&gt;
this thread&lt;/a&gt; (update: and &lt;a href="http://www.nntp.perl.org/group/perl.fwp/2012/03/msg4169.html"&gt;this thread&lt;/a&gt; and &lt;a href="http://www.catonmat.net/blog/secret-perl-operators/"&gt;here&lt;/a&gt;), some well-known golfing techniques are:
&lt;CODE&gt;
Golfing Technique                     Inventor           Year
-----------------                     --------           ----
@{[]}  aka baby cart                  The Larry or       1994
                                      The Schwartz
}{     aka eskimo greeting            The Abigail        late 1990s
~~     aka inchworm                   ???
~-     aka inchworm-on-a-stick        The Hospel         2002
$_ x= boolean expression              The Larry          early 1990s
y///c aka Abigail's Length Horror     The Hall           1996
stuff value into $\ for printing      The van der Pijll  2001
}for(...){ variation of eskimo        The Hospel         2001
--$| magical flip-flop                The Hospel         2002
\$h{X} is one less than ++$h{X}
       aka Thelen's Device            The Thelen         2002
-i and $^I for data value             The Sperling       2002
&lt;/CODE&gt;
&lt;/P&gt;

&lt;P&gt;&lt;B&gt;References&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;
 &lt;ul&gt;
  &lt;li&gt;[id://67304]
  &lt;li&gt;[id://77230]
  &lt;li&gt;[id://81395]
  &lt;li&gt;[id://81870]
  &lt;li&gt;[id://53423|Masem home node with many PM golf links]
  &lt;li&gt;[id://82470]
  &lt;li&gt;[id://82878]
  &lt;li&gt;[id://84767]
  &lt;li&gt;[id://129151]
  &lt;li&gt;[id://130140]
  &lt;li&gt;[id://336888]
  &lt;li&gt;[id://420148]
  &lt;li&gt;[id://551876]
  &lt;li&gt;[id://591617]
  &lt;li&gt;[id://592386]
  &lt;li&gt;[id://594299]
  &lt;li&gt;[id://759963]
  &lt;li&gt;[id://761053]
  &lt;li&gt;[id://762180]
  &lt;li&gt;[id://763105]
  &lt;li&gt;[id://811919]
  &lt;li&gt;[id://814900]
  &lt;li&gt;[id://903641]
  &lt;li&gt;[id://995190]
  &lt;li&gt;&lt;a href="http://groups.google.com/groups?selm=1991Apr29.072206.5621%40jpl-devvax.jpl.nasa.gov"&gt;Larry plays golf with himself (and Randal)&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://groups.google.com/groups?as_umsgid=2969@jato.Jpl.Nasa.Gov"&gt;Larry golfing again&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.cypherspace.org/rsa/org-post.html"&gt;Original Perl RSA program posted to cypherpunks list&lt;/a&gt; 9 Mar 1995 by Adam Back, response by Hal Finney
  &lt;li&gt;&lt;a href="http://www.cypherspace.org/rsa/story.html"&gt;RSA signature file in Perl history&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://groups.google.com/groups?threadm=42ifbm%242tt%40vixen.cso.uiuc.edu"&gt;Larry wins money prize in comp.programming.contests C golf contest, Sep 11 1995&lt;/a&gt;
  &lt;li&gt;&lt;a href="https://groups.google.com/group/comp.lang.perl.misc/msg/7b97c434492c8d20"&gt;
Greg Bacon coins the term Perl Golf&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.xs4all.nl/~thospel/golf/challenge.html"&gt;ircnet #perl golf challenge, Christmas 2001&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.xs4all.nl/~thospel/golf/gentest.pl"&gt;Ton Hospel's generic golf tester&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://perlgolf.sourceforge.net/"&gt;TPR Golf Contests&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://terje2.frox25.no-ip.org/"&gt;terje's mini golf site&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://terje2.frox25.no-ip.org/~golf-info/Book.html"&gt;
Terje/mtv pdf book about Perl Golf&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://kernelpanic.pl/perlgolf-list.mx"&gt;Polish Perl Golf site&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://nntp.perl.org/group/perl.golf/"&gt;perl golf mailing list archive&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.nntp.perl.org/group/perl.golf/1895"&gt;Final TPR Career Money Leader List&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://bumppo.net/lists/fun-with-perl/2000/07/msg00005.html"&gt;
Perl Golf Apocalypse Invite&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.perl.com/pub/a/2002/09/p6pdigest/20020901.html?page=2"&gt;
First ever Perl 6 golf post cited in this 2002 Perl 6 Summary&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://c2.com/cgi/wiki?PerlGolf"&gt;c2.com PerlGolf entry&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://c2.com/cgi/wiki?ShortestWikiContest"&gt;Shortest Wiki Contest&lt;/a&gt;
  &lt;li&gt;[id://649814|Shortest Sudoku Solver in many different languages by Mark Byers]
  &lt;li&gt;&lt;a href="http://codegolf.com/"&gt;Golf competitions in Perl, Ruby, Python or PHP&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://phpgolf.org/"&gt;PHP golf site&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://vimgolf.com/"&gt;Golf competitions in Vim&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://golf.shinh.org/"&gt;Golf games played in 51 different languages (under construction by shinh)&lt;/a&gt;
  &lt;li&gt; &lt;a href="http://codegolf.stackexchange.com/"&gt;stackexchange codegolf and programming puzzles question and answer&lt;/a&gt;
  &lt;li&gt; &lt;a href="http://codegolf.stackexchange.com/questions/197/freely-available-books-for-code-golfing/"&gt;codegolf books&lt;/a&gt; (see especially hallvabo answer which mentions Japanese "Short Coding" book by Ozy)
  &lt;li&gt; &lt;a href="http://www.spoj.pl/"&gt;Sphere online judge (SPOJ) programming competitions&lt;/a&gt;
  &lt;li&gt; &lt;a href="http://shiva.norgrind.net/~tom/cgolf/"&gt;Golf competitions in C (beta)&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://perl.plover.com/qotw/"&gt;
MJD's Perl Quiz of the Week&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.softpanorama.org/People/Wall/larry_wall_articles_and_interviews.shtml"&gt;
Larry Wall Articles and Interviews&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.builderau.com.au/program/0,39024614,39160082,00.htm"&gt;Damian Conway interviewed by Builder AU&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.gotw.ca/publications/c_family_interview.htm"&gt;Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.sysprog.net/quotjava.html"&gt;Some quotes about programming languages&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://history.perl.org/PerlTimeline.html"&gt;history.perl.org Perl Timeline&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://aroberge.blogspot.com/2005/12/pycontest-challenge-117-character-long.html"&gt;Python golf contest&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.ccl4.org/~nick/P/Fast_Enough/"&gt;Nicholas Clark YAPC::Eu paper: when perl is not quite fast enough&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://www.cs.utexas.edu/users/EWD/"&gt;Edsger Dijkstra manuscript archive&lt;/a&gt;
  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hackers:_Heroes_of_the_Computer_Revolution"&gt;Hackers, Heroes of the Computer Revolution&lt;/a&gt; by Steven Levy
  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Code_golf"&gt;Code golf (wikipedia)&lt;/a&gt;
 &lt;/ul&gt;
&lt;/P&gt;

&lt;P&gt;&lt;B&gt;Other Articles in This Series&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;
 &lt;ul&gt;
  &lt;li&gt; [id://410774]
  &lt;li&gt; [id://412464]
  &lt;li&gt; [id://424355]
  &lt;li&gt; [id://451207]
  &lt;li&gt; [id://540609]
 &lt;/ul&gt;
&lt;/P&gt;

&lt;P&gt;
&lt;small&gt;
Updated aug 2011: Added John McCarthy (1959) and RSA (1995) reference.
&lt;/small&gt;
&lt;/P&gt;

&lt;/readmore&gt;</field>
</data>
</node>
