Larry Wall

From Quotes
There is one thing that matters—to set a chime of words tinkling in the minds of a few fastidious people.
Logan Pearsall Smith
(Redirected from Wall, Larry)
Jump to: navigation, search

Larry Wall is a programmer, best known as the creator of the Perl programming language.

Sourced

Usenet postings

1990

  • Although the Perl Slogan is There's More Than One Way to Do It, I hesitate to make 10 ways to do something.  :-)
  • And don't tell me there isn't one bit of difference between null and space, because that's exactly how much difference there is.  :-)
  • Because . doesn't match \n. [\0-\377] is the most efficient way to match everything currently. Maybe \e should match everything. And \E would of course match nothing.  :-)
  • Chip Salzenberg sent me a complete patch to add System V IPC (msg, sem and shm calls), so I added them. If that bothers you, you can always undefine them in config.sh.  :-)
  • Piet van Oostrum: I find this a nice feature but it is not according to the documentation. Or is it a BUG?
    Larry Wall: Let's call it an accidental feature. :-)
  • If you want to program in C, program in C. It's a nice language. I use it occasionally...  :-)
  • It is, of course, written in Perl. Translation to C is left as an exercise for the reader.  :-)
  • It won't be covered in the book. The source code has to be useful for something, after all...  :-)
  • Dan Smith: I've tried (in vi) 'g/[a-z]\n[a-z]/s//_/'...but that doesn't cut it. Any ideas? (I take it that it may be a two-pass sort of solution).
    Larry Wall: In the first pass, install perl. :-)
  • There are probably better ways to do that, but it would make the parser more complex. I do, occasionally, struggle feebly against complexity...  :-)
  • There are still some other things to do, so don't think if I didn't fix your favorite bug that your bug report is in the bit bucket. (It may be, but don't think it.  :-)

1991

  • Besides, including <std_ice_cubes.h> is a fatal error on machines that don't have it yet. Bad language design, there...  :-)

1992

  •  : And it goes against the grain of building small tools.
    Innocent, Your Honor. Perl users build small tools all day long.
  • If I don't document something, it's usually either for a good reason, or a bad reason. In this case it's a good reason.  :-)
  • If you want to see useful Perl examples, we can certainly arrange to have comp.lang.misc flooded with them, but I don't think that would help the advance of civilization.  :-)
  • > (It's sorta like sed, but not. It's sorta like awk, but not. etc.)
    Guilty as charged. Perl is happily ugly, and happily derivative.
  • Lispers are among the best grads of the Sweep-It-Under-Someone-Else's-Carpet School of Simulated Simplicity. [Was that sufficiently incendiary?  :-)]
  • ...this does not mean that some of us should not want, in a rather dispassionate sort of way, to put a bullet through csh's head.
  • Unix is like a toll road on which you have to stop every 50 feet to pay another nickel. But hey! You only feel 5 cents poorer each time.

1994

  • Well, enough clowning around. Perl is, in intent, a cleaned up and summarized version of that wonderful semi-natural language known as
    'Unix'.
  • Anyway, there's plenty of room for doubt. It might seem easy enough, but computer language design is just like a stroll in the park.

    Jurassic Park, that is.

1997

  • I want to see people using Perl to glue things together creatively, not just technically but also socially.
  • As usual, I'm overstating the case to knock a few neurons loose, but the truth is usually somewhere in the muddle, uh, middle.
  • Of course, I reserve the right to make wholly stupid changes to Perl if I think they improve the language.  :-)
  • That could certainly be done, but I don't want to fall into the Forth trap, where every running Forth implementation is really a different language.
  • Tcl long ago fell into the Forth trap, and is now trying desperately to extricate itself (with some help from Sun's marketing department).
  • The whole intent of Perl 5's module system was to encourage the growth of Perl culture rather than the Perl core.
  • Life gets boring, someone invents another necessity, and once again we turn the crank on the screwjack of progress hoping that nobody gets screwed.
  • No prisoner's dilemma here. Over the long term, symbiosis is more useful than parasitism. More fun, too. Ask any mitochondria.
  • P.S. Perl's master plan (or what passes for one) is to take over the world like English did. Er, *as* English did...
  • I think you didn't get a reply because you used the terms 'correct' and 'proper', neither of which has much meaning in Perl culture.  :-)
  • We didn't put in ^^ because then we'd have to keep telling people what it means, and then we'd have to keep telling them why it doesn't short circuit.  :-/
  • Real theology is always rather shocking to people who already think they know what they think. I'm still shocked myself.  :-)
  • The following two statements are usually both true:
    There's not enough documentation.
    There's too much documentation.
  • The random quantum fluctuations of my brain are historical accidents that happen to have decided that the concepts of dynamic scoping and lexical scoping are orthogonal and should remain that way.
  • I'm serious about thinking through all the possibilities before we settle on anything. All things have the advantages of their disadvantages, and vice versa.
  • Part of language design is perturbing the proposed feature in various directions to see how it might generalize in the future.
  • It's appositival, if it's there. And it doesn't have to be there. And it's really obvious that it's there when it's there.
  • A 'goto' in Perl falls into the category of hard things that should be possible, not easy things that should be easy.
  • Well, that's more-or-less what I was saying, though obviously addition is a little more cosmic than the bitwise operators.
  • You tell it that it's indicative by appending $!. That's why we made $! such a short variable name, after all.  :-)
  • As someone pointed out, you could have an attribute that says 'optimize the heck out of this routine', and your definition of heck would be a parameter to the optimizer.
  • It is my job in life to travel all roads, so that some may take the road less travelled, and others the road more travelled, and all have a pleasant day.
  • It's getting harder and harder to think out loud. One of these days someone's gonna go off and kill Thomas a'Becket for me...
  • I was about to say, 'Avoid fame like the plague,' but you know, they can cure the plague with penicillin these days.
  • But the possibility of abuse may be a good reason for leaving capabilities out of other computer languages, it's not a good reason for leaving capabilities out of Perl.
  • P.S. I suppose I really should be nicer to people today, considering I'll be singing in Billy Graham's choir tonight...  :-)
  • Magically turning people's old scalar contexts into list contexts is a recipe for several kinds of disaster.
  • I wasn't recommending that we make the links for them, only provide them with the tools to do so if they want to take the gamble (or the gambol).
  • This has been planned for some time. I guess we'll just have to find someone with an exceptionally round tuit.
  •     switch (ref $@) {
        OverflowError =>
    warn 'Dam needs to be drained';
        DomainError =>
    warn 'King needs to be trained';
        NuclearWarError =>
    die;
        }
  • If you remove stricture from a large Perl program currently, you're just installing delayed bugs, whereas with this feature, you're installing an instant bug that's easily fixed. Whoopee.
  • Historically Tcl has always stored all intermediate results as strings. (With 8.0 they're rethinking that. Of course, Perl rethought that from the start.)
  • To ordinary folks, conversion is not always automatic. It's something that may or may not require explicit assistance. See Billy Graham.  :-)
  • Well, you can implement a Perl peek() with unpack('P',...). Once you have that, there's only security through obscurity.  :-)
  • It may be possible to get this condition from within Perl if a signal handler runs at just the wrong moment. Another point for Chip...  :-)
  • The Harvard Law states: Under controlled conditions of light, temperature, humidity, and nutrition, the organism will do as it damn well pleases.
  • That gets us out of deciding how to spell Reg[eE]xp?|RE . . . Of course, then we have to decide what ref $re returns...  :-)
  • I was trying not to mention backtracking. Which, of course, means that yours is 'righter' than mine, in a theoretical sense.
  • Not that I'm against sneaking some notions into people's heads upon occasion. (Or blasting them in outright.)
  • (To the extent that anyone but a Prolog programmer can understand \X totally. (And to the extent that a Prolog programmer can understand 'cut'. :-))
  • Well, hey, let's just make everything into a closure, and then we'll have our general garbage collector, installed by 'use less memory'.
  • The way these things go, there are probably 6 or 8 kludgey ways to do it, and a better way that involves rethinking something that hasn't been rethunk yet.
  • I'm afraid my gut level reaction is basically, proceed is cute, but cute doesn't cut it in the emergency room.
  • Boss: You forgot to assign the result of your map!
    Hacker: Dang, I'm always forgetting my assignations...
    Boss: And what's that 'goto' doing there?!?
    Hacker: Er, I guess my finger slipped when I was typing 'getservbyport'...
    Boss: Ah well, accidents will happen. Maybe we should have picked APL.
  • And other operators aren't so special syntactically, but weird in other ways, like 'scalar', and 'goto'.

1998

  • Er, Tom, I hate to be the one to point this out, but your fix list is starting to resemble a feature list. You must be human or something.
  • Well, you know, Hubbard had a bunch of people sworn to commit suicide when he died. So of course he never officially died...
  • I would estimate that the number of programs it breaks in the world will be less than 10. As long as one of those 10 isn't CGI.pm, we're probably okay.
  • I'm reminded of the day my daughter came in, looked over my shoulder at some Perl 4 code, and said, 'What is that, swearing?
  • Y'know, there are other possibilities if we assume that filenames are UTF-8...yikes...wait, put down that meat cleaver! Aieeee!!!
  •  : I could understand principles of Perl source in 2-3 days [. . .]

    Gee, it took me about eleven years.  :-)
  • There's often more than one correct thing.
    There's often more than one right thing.
    There's often more than one obvious thing.
  • The way I see it, if you declare something portable, you'll always be wrong, and if you declare it non-portable, you'll always be right.  :-)
  •  : Why Bible quotes exclusively? What happened to the Eastern religions?<BR>
    I'm still working on the Unicode mods.
  • Maybe we should take a clue from FTP and put in an option like 'print hash marks on every 1024 iterations'.  :-)
  • And besides, if Perl really takes off in the Windows space, I think the rest of us would just as soon have a double-agent within ActiveState.  :-)
  • The court finds everyone to be in contempt (including himself :-), and orders everyone sentenced to five years hard labor. (Working on Perl, of course.)
  • I view the JVM as just another architecture that Perl ought to be ported to. (That, and the Underwood typewriter...)
  • So please don't think I have a 'down' on the MVS people. I'm just pulling off their arms to beat other people over the head with.
  • It's, uh, pseudo code. Yeah, that's the ticket...
    [...]
    And 'unicode' is pseudo code for $encoding.  :-)
  • Well, sure, I explicitly mentioned 'vtables' last time I brought this up. But a single pointer is fairly paltry, as tables go.  :-)
  • I dunno. Perhaps you should be happy that I have a policy of refraining from grumbling about handicapped operating systems.  :-)
  • So I'm thinking about ??, or !!, or //, or \\, or whatever. But I think I like ?? the best so far. Or the least worst.
  • Would you trust the linguistic intuitions of someone who has been studying Latin or Greek for three days?
  • But I know what's important to me, and what isn't. And I think I know what people can get used to, and what they can even learn to like. (It just takes some people longer than others. :-)
  • That being said, I think we should immediately deprecate any string concatenation that combines '19' with '99'.  :-)

2003

  • We don't have enough parallel universes to allow all uses of all junction types--in the absence of quantum computing the combinatorics are not in our favor...
  • I try not to confuse roles and traits in my own life. Being the Perl god is a role. Being a stubborn cuss is a trait.  :-)
  • And in the limiting case where the optimizer is completely broken because it's not implemented yet, we get to work around that too. Optionally...

Source code

Quotations come from the source code to Perl version 4. Some may be present in more recent versions as well.

cons.c

  • double value; /* or your money back! */
    short changed; /* so triple your money back! */
  • /* now make a new head in the exact same spot */

perl.c

  • #define NULL 0 /* silly thing is, we don't even use this */
  • #define SIGILL 6 /* blech */
  • if (rsfp = mypopen('/bin/mail root','w')) { /* heh, heh */

stab.c

  • /* And you'll never guess what the dog had */
    /* in its mouth... */
  • break; /* don't do magic till later */
  • stab_val(stab)->str_nok = 1; /* what a wonderful hack! */
  • tmps_base = tmps_max; /* protect our mortal string */

util.c

  • pos += screamnext[pos] /* does this goof up anywhere? */
  • str->str_pok |= SP_FBM; /* deep magic */
    s = (unsigned char*)(str->str_ptr); /* deeper magic */

Configure

The Configure script in the Perl source code is generated by a tool called Metaconfig, which was also used in a number of Larry Wall's other programs.

  • echo 'Congratulations. You aren't running Eunice.
  • echo 'Hmmm...you don't have Berkeley networking in libc.a...'
    echo 'but the Wollongong group seems to have hacked it in.
  • echo 'ICK, NOTHING WORKED!!! You may have to diddle the includes.';;
  • echo $package has manual pages available in source form.
    echo 'However, you don't have nroff, so they're probably useless to you.
  • echo 'Your stdio isn't very std.'
  • [End of diatribe. We now return you to your regularly scheduled programming...]
  • OOPS! You naughty creature! You didn't run Configure with sh! I will attempt to remedy the situation by running sh for you...
  • That means I'll have to use $ans to suppress newlines now.
    Life is ridiculous.
  • There is, however, a strange, musty smell in the air that reminds me of something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
  • You can't have filenames longer than 14 chars. You can't even think about them!
  • Your csh still thinks true is false. Write to your vendor today and tell them that next year Configure ought to 'rm /bin/csh' unless they fix their blasted shell. :-)

Other files

  • /* we have tried to make this normal case as abnormal as possible */
    • cmd.c
  • s = (char*)(long)retval; /* ouch */
    • doio.c
  • signal(i, SIG_DFL); /* crunch, crunch, crunch */
    • doarg.c
  • if (instr(buf,sys_errlist[errno])) /* you don't see this */
    • eval.c
  • /* dbmrefcnt--; */ /* doesn't work, rats */
    • hash.c
  • #else /* !STDSTDIO */ /* The big, slow, and stupid way */
    • str.c
  • /* This bit of chicanery makes a unary function followed by a parenthesis into a function with one argument, highest precedence. */
    • toke.c

Documentation

  • Be consistent.
    • In the perl man page
  • Does the same as the system call of that name. If you don't know what it does, don't worry about it.
    • In the perl man page regarding chroot(2)
  • Even if you aren't in doubt, consider the mental welfare of the person who has to maintain the code after you, and who will probably put parens in the wrong place.
    • In the perl man page
  • Help save the world!
    • In README
  • If you want your program to be readable, consider supplying the argument.
    • In the perl man page
  • In general, they do what you want, unless you want consistency.
    • In the perl man page
  • Okay, that's definitely enough hype.
    • In the perl man page
  • Perl is designed to give you several ways to do anything, so consider picking the most readable one.
    • In the perl man page
  • Remember though that
    THERE IS NO GENERAL RULE FOR CONVERTING A LIST INTO A SCALAR.
    • In the perl man page
  • The autodecrement is not magical.
    • In the perl man page
  • *** The previous line contains the naughty word '$&'.\n
    if /(ibm|apple|awk)/; # :-)
    • In the perl man page
  • When in doubt, parenthesize. At the very least it will let some poor schmuck bounce on the % key in vi.
    • In the perl man page

Public Talks

"3rd State of the Onion"

Taken from the transcript of the talk.

  • But I'm not here to talk about postmodernism. I tried to do that last spring, and afterwards I was thoroughly deconstructed by the deconstructionists for attempting to deconstruct deconstructionism. At least, that's the construction I put on their construction of it. I was talking about postmodern culture, and they thought I was talking about postmodern literature. Not at all the same thing!

"Present Continuous - Future Perfect"

Taken from the transcript of the talk.

  • And C was good at something I like to call manipulexity, that is the manipulation of complex things. While shell was good at something else which I call whipuptitude, the aptitude for whipping things up.
  • So... Perhaps the Perl 6 slogan should be "All Your Paradigms Are Belong To Us". We'll get to that.
  • I simultaneously believe that languages are wonderful and awful. You have to hold both of those. Ugly things can be beautiful. And beautiful can get ugly very fast. You know, take Lisp. You know, it's the most beautiful language in the world. At least up until Haskell came along. (laughter) But, you know, every program in Lisp is just ugly. I don't figure how that works.
  • Now, I'm not the only language designer with irrationalities. You can think of some languages to go with some of these things.
    • "We've got to start over from scratch" - Well, that's almost any academic language you find.
    • "English phrases" - Well, that's Cobol. You know, cargo cult English. (laughter)
    • "Text processing doesn't matter much" - Fortran.
    • "Simple languages produce simple solutions" - C.
    • "If I wanted it fast, I'd write it in C" - That's almost a direct quote from the original awk page.
    • "I thought of a way to do it so it must be right" - That's obviously PHP. (laughter and applause)
    • "You can build anything with NAND gates" - Any language designed by an electrical engineer. (laughter)
    • "This is a very high level language, who cares about bits?" - The entire scope of fourth generation languages fell into this... problem.
    • "Users care about elegance" - A lot of languages from Europe tend to fall into this. You know, Eiffel.
    • "The specification is good enough" - Ada.
    • "Abstraction equals usability" - Scheme. Things like that.
    • "The common kernel should be as small as possible" - Forth.
    • "Let's make this easy for the computer" - Lisp. (laughter)
    • "Most programs are designed top-down" - Pascal. (laughter)
    • "Everything is a vector" - APL.
    • "Everything is an object" - Smalltalk and its children. (whispered:) Ruby. (laughter)
    • "Everything is a hypothesis" - Prolog. (laughter)
    • "Everything is a function" - Haskell. (laughter)
    • "Programmers should never have been given free will" - Obviously, Python. (laughter)
  • How do you type it? With your keyboard.

The State of the Onion 10

Taken from The State of the Onion 10

  • If there's a particular problem that Perl is trying to solve, it's the basic fact that all programming languages suck. Sort of the concept of original sin, applied to programming languages.
  • There are a lotta computer languages out there doing drugs.
  • In computer science, it is said that premature optimization is the root of all evil.

Larry Wall Speaks at Google (2008)

Video on YouTube.

  • The only reason I've managed to run this open source project, is that I have learned to delegate even the delegation to other people. (final words of the video)

IRC

Note: On IRC, Wall uses the nickname "TimToady" (a play on TIMTOWTDI, which are the initials of the Perl Motto "There is More Than One Way to Do it").

<TimToady>  TimToady's Lament: The pain in reign falls mainly in the 'splain.

Freenode's #perl6 on 26 February, 2007. Source.

Other

  • [Boxed] Multiple bouncing balls in a box are a metaphor for community. Notice how the escaping balls explode. This is what happens to people who move from Perl to Ruby.
  • ...Then you start building things like the Berlin wall to keep people inside your community. In anthropological terms, that's tribalism. A tribal Perl programmer might say, "If you leave the Perl tribe to go and join the Python tribe, we will hunt you down, cook you, and eat you." Or if you join the Ruby tribe, you will explode. By and large, I am not in favor of tribalism. Except for my tribe, of course.
    • ibid.
  • The three chief virtues of a programmer are: Laziness, Impatience and Hubris.
    • From the glossary of the first Programming Perl book
  • The problem with being consistent is that there are lots of ways to be consistent, and they're all inconsistent with each other.
  • There's really no way to fix this and still keep Perl pathologically eclectic.
    • Larry Wall, Tom Christiansen, and Jon Orwant, Programming Perl, third edition, section 3.10

Attributed

  • Q. Why is this so clumsy?
    A. The trick is to use Perl's strengths rather than its weaknesses.
  • I already have too much problem with people thinking the efficiency of a perl construct is related to its length. On the other hand, I'm perfectly capable of changing my mind next week...  :-)
  • I'll say it again for the logic impaired.
  • I might be able to shoehorn a reference count in on top of the numeric value by disallowing multiple references on scalars with a numeric value, but it wouldn't be as clean. I do occasionally worry about that.
  • Interestingly enough, since subroutine declarations can come anywhere, you wouldn't have to put BEGIN {} at the beginning, nor END {} at the end. Interesting, no? I wonder if Henry would like it. :-)
  • It is easier to port a shell than a shell script.
  •  : I've heard that there is a shell (bourne or csh) to perl filter, does
    : anyone know of this or where I can get it?
    Yeah, you filter it through Tom Christiansen.  :-)
  • Tactical? TACTICAL!?!? Hey, buddy, we went from kilotons to megatons several minutes ago. We don't need no stinkin' tactical nukes. (By the way, do you have change for 10 million people?)
  • > This made me wonder, suddenly: can telnet be written in perl?
    Of course it can be written in Perl. Now if you'd said nroff, that would be more challenging...
  •  : 1. What is the possibility of this being added in the future?
    In the near future, the probability is close to zero. In the distant future, I'll be dead, and posterity can do whatever they like...  :-)
  • (Presuming for the sake of argument that it's even *possible* to design better code in Perl than in C.  :-)
    • On core code vs. module code design
  • Obviously I was either onto something, or on something.
    • On the creation of Perl
  • It's the Magic that counts.
    • On Perl's apparent ugliness
  • May you do Good Magic with Perl.
    • Larry Wall's blessing
  • I knew I'd hate COBOL the moment I saw they'd used 'perform' instead of 'do'.
    • On a not-so-popular programming language
  • But we can both blame it all on Henry.
    • On perl's regex engine
  • Hmm, doubtful. The source code generally wasn't there when I needed it.
    • When asked if he learned Perl from the perl source
  • If ease of use was the highest goal, we'd all be driving golf carts.
  • Many computer scientists have fallen into the trap of trying to define languages like George Orwell's Newspeak, in which it is impossible to think bad thoughts. What they end up doing is killing the creativity of programming.
  • What you'll need most is courage. It is not an easy path that you've set your foot upon.
  • Optimizations always bust things, because all optimizations are, in the long haul, a form of cheating, and cheaters eventually get caught.

External links

Wikipedia
Wikipedia has an article about: