
Larry Wall on why he wrote Perl - Tsiolkovsky
http://www.linuxjournal.com/article/2070
======
jilebedev
Programming started for me as "hey, check out what I can do with BASIC" and
turned into "now defend your algorithm using the O(n) notation." There was
never any time to play with the things I had learned, to fall in love with
them. It became a chore. Something to put up with for a while until you became
... a paid programmer, wherein what you did had enormous consequences, and
there was even less time for play.

Programming and its teaching has always felt like a culture of passionate
people who refused students the passion of discovering and learning but rather
decreed their own rules, learned from their own mistakes. It isn't a
particular fault of programmers or educators - this is natural inclination of
all of us to deny others the painful experience of learning from mistakes. But
it's no fun. It's no fun, damnit, and I want nothing to do with things that
are no fun.

I would never have developed the mastery of vim that I have now had someone
told me "hey, this is what you need to do. This is how you should do it.
Here's a semester long course on how to effectively edit text." Everything I
learned, I learned on my own, out of necessity. I now consider myself a
proficient user of vim, but that would never have happened without the
thousands of sequential _j_ s pressed before I discovered text objects out of
a hunch that "dang it, this is slow and silly. there has to be a better way."

I want to fall in love with something, and write the stupidest possible code,
and then learn why it was stupid, and be embarrassed by its stupidity 6 months
down the road.

This is why Perl appealed to me. Because it allows for messy, playful,
immediate gratification, tweaking _fun_. Perhaps I haven't the attention span
to be a proper programmer.

I'd be embarrassed to admit this to most of my friends.

~~~
joe_the_user
I'm designing a mini-configuration-language as I go along while writing a
large application.

I am amazed how powerful and useful to my purpose I can make this language.
Yet I would be the first to admit this the language has some fundamental flaws
that would prevent it from becoming more general purpose.

So I feel like I can appreciate from the outside the effectiveness of
languages which are designed to incrementally scratch itches. You can come up
with a program with a fiercely loyal user base because if you've managed to
roll the proper set of things that "just work". I imagine that this is the
secret of both Perl and Matlab.

The only thing is I personally hate both these programs, somewhat irrationally
I'll admit.

But I think it show the weakness of "grow like a weed to touch the necessary
bases" school of language design. It ultimately fails for those outside the
immediate target audience because they have assimilate the entire accretion
process to really get the language. For a lot of situations, that feels an
impudent, almost obscene demand for someone who likely comes to the language
wanting to do something simple.

So I feel like that explains the rise and fall Perl. It rose with the Unix
community and the web grew together and fell as more and more people felt need
for a coherent general purpose language not tied to all things Unixy.

~~~
sjwright
> I'm designing a mini-configuration-language as I go along while writing a
> large application.

Why not just use Lua or Javascript?

~~~
joe_the_user
Essentially I want a system where the configuration files are generally
transparently editable by non-programmers. Most of the information is simple
configuration information.

Lua, Javascript, VBA and other such languages might be called "configuration
languages" but they're really object-automation languages. They allow a user
to write standard-imperative-programming macros which address the underlying
objects of a given system. They don't provide simple, clean facilities for
just assigning default values to objects.

And what I have my configuration doing aside from assign default value is
more-or-less filtering into and put, specifying tree-transformation commands
for various inputs and output using one big, recursive loop and a bit of if-
else logic. Basically, I'm producing a system which can take multiple web API
sources and have them look like a single source. I began using XSLT but when I
started having to also transform json, having my own transform system looked
just as easy as transforming json to XSLT and then further adapting XSLT for
my purposes.

I could use json or XML for my underlying data storage format but it is too
verbose for easy human readability so instead I use simple ini format with
just a bit of syntax added and it works quite well.

------
kator
I remember unpacking PERL from usenet and compiling it on my Xenix box!

Really back then it was amazing. At the time I was writing everything in C and
having the flexibility without the pain of C that PERL provided was such a
great gift. I wrote literally 100,000's of lines of PERL (one project alone
was 25k LOC) and enjoyed it all the way up until maybe 1993!

CPAN is hard to beat, having modules that work, etc. But I won't defend PERL
because the reality is I almost never use it anymore. Not because there is
something wrong with it, just because more often I run into problem sets that
either require me to return to C (Think 45,000 QPS under 4 ms response time)
and/or web stuff my dev team is more comfortable with on PhP.

PERL transformed my life and my thinking. It taught me that "Just because you
CAN do something a particular way doesn't mean that you SHOULD do it that
way.".. I took this much further then PERL and learned to apply it to all my
projects and started writing in the "right language for the problem set".
Instead of trying to fit every problem to the handful of languages I could
program at that time.

Now I write in so many languages and utilize so many platforms and systems
that the concept is just part of who I am when I am presented with a new
problem to solve. For that I owe Larry a lifetime of beers whenever he wants
one I'll be there to buy it for him! :-)

~~~
btilly
The language is named Perl, not PERL. See
[http://perldoc.perl.org/perlfaq1.html#Whats-the-
difference-b...](http://perldoc.perl.org/perlfaq1.html#Whats-the-difference-
between-%22perl%22-and-%22Perl%22%3f) for proof.

~~~
peterwwillis
_Thank you._ I didn't want to be the person to say it.

~~~
astrodust
PERL and MAC (vs. Mac) are equal parts annoying, but at least PERL doesn't
mean something different.

~~~
kator
Please don't start me on what it's named..

If I remember correctly when he posted it to usenet it was:

    
    
        P = Practical
        E = Extraction
            and
        R = Reporting
        L = Language
    

Sorry if you object to the caps.. I was just being nostalgic..

From the Original comp.sources.unix SHAR file:

    
    
        X.TH PERL 1 LOCAL 
        X.SH NAME 
        Xperl - Practical Extraction and Report Language 
        X.SH SYNOPSIS 
        X.B perl [options] filename args 
    
    

[https://groups.google.com/group/comp.sources.unix/tree/brows...](https://groups.google.com/group/comp.sources.unix/tree/browse_frm/month/1988-02?_done=%2Fgroup%2Fcomp.sources.unix%2Fbrowse_frm%2Fmonth%2F1988-02%3F&);

~~~
cygx

      $ perldoc perl | tail -n 14
    
             Perl actually stands for Pathologically Eclectic Rubbish Lister, but
             don't tell anyone I said that.
    
      NOTES
             The Perl motto is "There's more than one way to do it."  Divining how
             many more is left as an exercise to the reader.
    
             The three principal virtues of a programmer are Laziness, Impatience,
             and Hubris.  See the Camel Book for why.
    
    
    
      perl v5.14.2                      2012-07-12                           PERL(1)

~~~
sigzero
It's a backronym. In the beginning it didn't stand for anything. Backronyms
were tacked on later. Perl for the language and perl for the interpreter.

~~~
btilly
Not completely true!

In conversation with Larry Wall I found out that the existence of two
reasonable backronyms was part of why he chose to call it Perl. Therefore the
backronyms were known before the name itself was finalized.

~~~
sigzero
Really? I have never heard that before. I have heard that it was going to be
"Pearl" but there was something else out there with that name and so it ended
up "Perl".

Interesting...

~~~
btilly
My source is conversation with Larry Wall at lunch at OSCON in, I believe,
2006.

And yes, I've heard the Pearl claim before. As well as the claim that the
original acronym was going to be Practical Extraction And Reporting Language.

All of the claims that I have heard fit together if you assume that the actual
sequence of events was this. Larry wanted to name it pearl for whatever
combination of reasons. Came up with a nice acronym for it. Decided not to
name it pearl for whatever combinations of reasons. Was playing around and
came up with the Perfectly Eclectic Rubbish Lister. Preferred that over pearl
for various reasons (not in use, greppable, likes puns, etc). And therefore
named the language perl. Therefore the language name is not an acronym, but
both popular backronyms predate the actual language name.

I was not present. But this is my best guess as to what did happen.

------
bitwize
My left brain wants to call Larry Wall to task for using a simplistic pop-
psych brain-lateralization analogy when the truth of the brain is vastly more
complicated but my right brain is like "Eh, he's from the Pacific Northwest,
up there they believe in whatever makes them happy."

~~~
aangjie
+1. My first reaction was similar too _._ \-- I am non-american so the Pacific
Northwest connotation is weaker.but got the drift.

------
Falling3
I stopped reading at the word "art".

And then I started reading again. Larry took it in a different direction that
I presumed and it's certainly an interesting claim to make.

I'm just not really sure if I buy it... It sounds to me like dropping someone
in a Home Depot surrounded by various tools and materials and saying "Go ahead
build a dog house anyway you like." "Art!"

I greatly enjoy the creativity involved in programming and I can appreciate
the aspects that set Perl apart from other languages at its inception. But I
get a lot more satisfaction out of simplicity and elegance in my language than
the ability to put a condition on either side or whether scalars, arrays, and
hashes have unique identifiers in the variable name.

Maybe I got into it at the wrong time, but Perl has never felt like art to
me...

~~~
ionforce
Have you seen Perl poetry?

~~~
tete
If not:

<https://en.wikipedia.org/wiki/Black_Perl>

------
kbd
Again, when you post an old article, put the date in parens. In this case,
(1997).

~~~
pauldelany
Parens are optional

~~~
lanstein
As always, TIMTOWTDI.

~~~
ThePherocity
It's funny, because for me this is it's greatest weakness. I prefer not to
wonder if I'm making the wrong decision every line.

~~~
jonathansizz
On the other hand, Perl programmers don't have to lose sleep worrying about
whether what they're doing is sufficiently 'Perlesque', in notable contrast to
similar languages I could mention.

~~~
cgh
It's doubtful anyone loses sleep over such things.

------
moe

      When they first built the University of California
      at Irvine they just put the buildings in. They did not
      put any sidewalks, they just planted grass.
    
      The next year, they came back and put the sidewalks
      where the trails were in the grass. Perl is just that
      kind of language. It is not designed from first
      principles. Perl is those sidewalks in the grass.
    
      -Larry Wall

~~~
ken
I don't know if it's true in this case or not, but I'm pretty sure this same
story about sidewalks has been told about every university in North America.

At <[http://ask.metafilter.com/62599/Where-the-sidewalk-
ends>](http://ask.metafilter.com/62599/Where-the-sidewalk-ends>); there are
reports of it at Columbia (by Eisenhower), Tufts, Long Beach State, University
of South Florida, Iowa State and/or Iowa, and CMU. I certainly heard it about
my alma mater (none of the above).

At
<[http://books.google.com/books?id=C_FFMePR204C&lpg=PA184&...](http://books.google.com/books?id=C_FFMePR204C&lpg=PA184&ots=qfTwVQLL2V&dq=Disneyland%20walkways%20paved&pg=PA184#v=onepage&q=Disneyland%20walkways%20paved&f=false>);
they claim this was done at Disneyland.

------
ninetax
This is such a great piece of writing. Tongue in chic at every turn, but it
really washes over me when he talks about the art. It makes me remember that
computer science is less about computers than astronomy is about telescopes.

~~~
karamazov
It's "tongue in cheek", by the way.

~~~
tjic
Not if you're doing it the new cool way. ;-)

------
K2h
Written in 1997 - interesting, but don't click this thinking you'll get a
recent defense of PERL.

~~~
timClicks
Perl 5 is still what a large portion on what the community uses, so it's not
out of date. Then again, very little of the text refers to anything technical.
It's a discussion of the cultural differences between Perl and other
communities.

~~~
gizzlon
" _Perl 5 is still what a large portion on what the community uses, so it's
not out of date_ "

Just FYI, Perl 5 have changed a lot the last 10 years..

~~~
berntb
... but is still very, very backwards compatible.

(Just to be complete.)

------
cjdrake
Part of me wants to say something snarky about Perl to contradict or joke
about things Larry said in this article, but Guido Van Rossum's keynote at
PyCon 2012 really resonated with me. He basically said that Perl/Python/Ruby
are all very similar and we should all just get along.

------
bane
Fair warning for those interested in learning Perl...it will ruin you as a
programmer. Before I learned Perl I was a pretty decent C++ guy, built most of
the guts of an OS in Java as a fun project to learn the language, could hack
out a little x86, MIPS, x68k and z80 and a couple specialty asms and knew a
smattering of a half-dozen other serious languages.

Perl absolutely ruined me. Right after learning Perl for some text processing
I was doing, I also made a career change into a technology adviser and analyst
for a large R&D firm. 6 months into that new job I happened to have a need to
process some data. They had Java and Perl on the machine as a leftover from
the previous owner of the box (C++ environments were still fairly expensive
back then, security wouldn't let me install Linux or Cygwin, and anything else
wouldn't pass muster).

I didn't want to fool around with Java's file I/O mess, so I just picked Perl.
I got shit done, a _lot_ of shit. I got 5 awards from the firm in 3 years and
a nomination for a lifetime achievement award and all I was doing was hacking
up some one-off Perl scripts to crunch some data! I was much more familiar
with C++ and Java, and I simply hadn't thought about how much I was
accomplishing and with such little effort.

Over the next few years I quietly left behind all of the other languages and
got into a serious Perl groove. Solving issues in a few days that were
stumping teams of a dozen for months. I am not a particularly talented
programmer. I built little web apps to scratch department itches that came up
during meetings ("why isn't there an acronym database?", "I wish we had a
meta-search engine that search Yahoo, Altavista and Lycos at the same time!",
"I wish I could scan these documents quickly for all of the chemicals in our
chemical warehouse", etc. etc.) Then I started solving harder problems. My
Perl prototype code was often passed off to a team where it was rewritten in a
"real" language, but since I was the one who solved the tricky problem, it was
my solution that ended up being rewritten in C++ or Java.

Then came a time I needed to write something in Java based on a deliverable
requirement. You know what? I couldn't do it. I don't mean technically, I mean
mentally. _everything_ seemed like a huge pain in the ass. The delta from
thought to code seemed so drawn out that by the time I had put my thought down
into code I had often forgotten what the hell I was coding in the first place.
Simple exercises involving half a dozen lines of code and minimal thought
turned into half hour long dives into the standard library docs...yes I said
it, the Perl solution might be longer than the Java one, but the time to just
code it out was an order of magnitude faster. I ended up in groove with Perl I
simply couldn't achieve even after years of working in other languages. I
finished the Java project and swore off "real" languages for good after that.
I had simply been _broken_ by Perl and ruined for good.

Perl just simply came together like how my brain worked. I could dump out
ideas and it just _worked_...and I got shit done. With a little careful
planning I could even tackle larger projects, a couple that approached a 100k
lines of Perl (and had the annoying habit of running faster than the later
Java rewrites, which eventually had to be rewritten in hand optimized multi-
threaded C++ with in-line ASM to beat the original 5 year old Perl in
performance)

It was the difference between typing text with a keyboard and handwriting all
caps, backwards in a mirror, while translating each word from English to
Russian via a English-French dictionary then French-Russian dictionary in the
dark by candlelight.

All that being said the long Perl 5->6 winter had me reaching outside of Perl
for a while into Python and it was "ok". I liked how my code was automatically
readable and simple. The standard libraries are badass. But it just didn't
have the _there_ there that Perl has. The automagic flow from synapse to
working code. I'm happy to see the community starting to pick back up but
sadly I'm hopelessly locked in 2001 Perl and many of the idioms from that
time. It would simply take too much of a time investment to get entirely up-
to-speed with where Perl is today. I'd probably be better spending the time on
something more marketable with better and more modern library support.

Here's the real kicker, I ended up using Perl to get really good at my non-
programming (but still technical) job that it would probably take me years of
dedicated effort to get back up to speed with where modern development is at
all. I'm old enough now that I'd simply be much more comfortable managing
modern developers than being one.

So yeah, that's how Perl might ruin you.

~~~
pooriaazimi
I've been wanting to learn Perl for the past 2 years. I still don't have time,
but in 5-6 months I'll be able to finish what I'm doing and start Perl (as a
hobby, not a full-time endeavor!).

Some languages have a "magic" book or article, that you'll never learn
anything deeply before reading it. For me and JavaScript, it was Douglas
Crockford's "JavaScript: The Good Parts". It literally opened my mind when I
read it last week and my Node.js code (which is in CoffeeScript BTW) would
never be the same (hopefully it'll be an order of magnitude better).

Is there a magic book on Perl? And is there any point starting with Perl 6
(considering I don't want to write mission critical programs with Perl just
yet, and don't mind to be an early adopter at all _if_ the product will see
the light of the day in the next 2-3 years)?

Thanks a lot.

~~~
chromatic
Crockford's book was a direct inspiration for my Modern Perl:

<http://onyxneon.com/books/modern_perl/index.html>

~~~
pooriaazimi
That sounds great. Thank you!

And as you already have an ePub version, I would like to suggest selling it
(or giving it away free, as you already do) in the iBookStore as well. iPad is
an amazing device for reading technical books, and I spend few hours every day
reading ePub books in iBooks.app (I read Crockford's book and 3 other O'Reilly
books just in the past 2 months).

Right now there are many Perl books in the iBookStore, but they're mostly
cookbooks (step-by-step tutorial), not a no-bullshit introduction to the
language as your book is! I'm sure many many more would discover or benefit
from your book if it was available there as well :)

------
yesbabyyes
On the topic of dimensions of programmers.

 _We can further subdivide the Artists into those who enjoy getting their
revenge by being more than properly miserable, and those who prefer to get
their revenge by being less than properly miserable. Artists of the first sort
will prefer to work in a more formal medium, one that inflicts extra pain on
the Artist, such as composing sonnets, dancing ballet, or programming C++.
Artists of the second sort tend to be much more fun-loving, free-wheeling and
undisciplined, whether the verb in question is composing, dancing,
programming, or slinging. (Especially slinging. There's nobody quite so joyful
as a B.S. artist. I should know...)

There is, of course, a third category of Artist, the one who oscillates
between the two extremes._

------
peterwwillis
To know Perl is to understand Larry Wall. If you don't get him, you won't get
it.

~~~
flyinRyan
Larry's writing always reminded me of the college guys I knew who smoked
tremendous amounts of hash.

------
gbog
Art being an activity of free will and constraints free is a common
misconception I am surprised to see shared by Larry Wall.

If you write music for piano or play piano you are moving in a highly
constrained environment. The extreme example is Chinese calligraphy, probably
the most constrained form of art, and at the same time the one where the
artistic expression of the self is the most salient.

So no, please don't oppose art and discipline, it's a mistake.

~~~
cdcarter
Even further, John Cage and his ideology of chance. Non-determinism only
worked under heavy constraint, and it worked amazingly.

------
mynameishere
This guy's apparent jokey lunacy is what always kept me away from Perl. The
camel book--my god, if I want a laugh I'll buy Al Franken's latest.

~~~
dkuder
Like
[http://www.thepoliticalguide.com/Profiles/Senate/Minnesota/A...](http://www.thepoliticalguide.com/Profiles/Senate/Minnesota/Al_Franken/Bills/112/)

Lots of chuckles there. But you don't have to buy them, they are free.

------
mmphosis

      perl came out early enough before the flood
      it was pretty much the CGI language by default
      it would crop up in a project and glue everything together
      at that point in the project when nobody cares anyway
      it was on my iBook in 2001 when PHP and Python were not
      it flew out of my keyboard rewriting a lost dot-com era PHP game  
      the $a and $b global variables are accumulators to paint with

