Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Perl Programming

Linux Journal interviews Larry Wall 75

jbc writes "Linux Journal's cover story for May was an interview with Larry Wall, which is now online. Some good stuff on the future of Perl, whether or not Open Source is a passing fad, and why Activestate is not necessarily evil. "
This discussion has been archived. No new comments can be posted.

Linux Journal interviews Larry Wall

Comments Filter:
  • It's available on every platform, it's as easy or hard to use as you want to make it, and there are literally hundreds of different ways to accomplish a task - all of them as "valid" as the next.
    It also smells great!
  • # Nevertheless, Perl blows

    Huh huh, OK Beavis.


    # and I think its design philosophy is why, rather than some
    # implementation detail or other accident. It was interesting to see what
    # kind of language we would end up with with the design principle of no
    # design principles. Well, the language we ended up with is one that I
    # find egregiously bad.

    But there were and are design principles. I imagine you know this, though.


    # Obviously I was stating my opinion, not trying to offer a proof of why
    # Perl is bad.

    It was not obvious. Usually, in my experience, when intelligent people express their opinions publicly, they try to offer some reason why others should agree. I am not insinuating you are unintelligent, but the opposite: I assumed that because you are intelligent, you were trying to offer some evidence of why Perl is "bad". I assumed incorrectly. I won't do so again.


    # The ``X'' that Perl is is ``sucky.'' I hold that truth to be
    # self-evident.

    Nonsense. That all men are created equal and are endowed by their Creator with cretain unalienable rights can be said to be self-evident (and in fact, I believe it was). That Perl is "sucky" is not. Are you kidding here, or are you trying to hurt your argument^Wopinion?


    # But don't confuse the act of giving the programmer freedom of
    # expression, and the act of giving the programmer a simple, consistent,
    # easy-to-undertand tool. You can do both.

    I don't find consistency to be that important, or simplicity. Some of our more complex and inconsitent tools are our most powerful. Like Unix itself. Then again, you probably don't like Unix.

    Regardless, Perl is pretty simple. It is also very complex. It is what you want. Babies can speak English, and yet it is rich enough for the most complex expression of ideas.


    # Just because a tool is a simple
    # and easy-to-understand device (like a lever, or rope) doesn't mean it
    # restricts the artistic expression of those using it. Help, help, I'm
    # being oppressed!

    No, but a canvas and paint offers more room for expression than a rope does. That's why the Louvre has ropes protecting the paintings and not vice versa.


    # I consider simplicity, consistency, and orthogonality to be good things
    # in a tool. I think that when you want to provide a tool to solve a
    # problem, you should think the problem through, and cover all the
    # permutations. Figure out what's needed, and do it in a simple way.
    # That's not the Perl approach. The perl approach is much more haphazzard
    # than that, and usually involves a new line-noise syntax and some regular
    # expressions.

    If you are talking about the approach of some Perl programmers, that's true. If you are talking about the approach of the developers of perl, that's false.


    # Perl most assuredly does encourage a particular programming style. It
    # does this by the shortcuts it provides. Perl encourages you to think
    # about everything as text manipulation, when (news flash!) most things
    # aren't. It encourages use of regular expressions, even when they would
    # be inappropriate (which, news flash, is almost all the time.) It doesn't
    # force you, no, but it makes one path easy and the other path hard, and
    # that's all it takes.

    Perl does not encourage bad programming, it attracts bad programmers (and good ones, too). The language cannot be reasonably faulted for allowing bad programmers to program badly with ease. You are wrong to say that regexes are easier than other methods.

    And, sure, bit manipulation in Perl is not the easiest (though if you understand bits, it isn't exactly difficult, either). But substr and rindex and index and split are very simple functions to use. I daresay they are significantly easier to use than regexes. The problem with people using regexes when they shouldn't is not technical or linguistic but social. People are incorrectly taught, one way or another, to use regexes when they don't belong. Again, you're talking about bad programmers. They are bad in any language. I'd rather have bad programmers using Perl regexes inappropriately than using C pointers inappropriately.


    # Furthermore, ``There's more than one way to do it'' is not a virtue in a
    # multiple programmer environment. When someone else is going to see your
    # code (and unless you're doing an art project all on your own, someone
    # will) your responsibility as a programmer is not only to make the
    # program work, but also make it maintainable.

    You have not demonstrated that TMTOWTDI is the enemy of maintainability. Maybe it is just your opinion, but unless you are going to back it up, don't expect anyone to care what your opinion is.
  • I use Perl a lot, and have a lot of respect for Larry Wall, Tom Christiansen, et. al. But Larry's comments about Perl being the first "postmodern" language are silly.

    The Perl motto is cute, but it implictly sets up a strawman, because no language I can think of says "There's Only One Way To Do It." All languages, including Perl, put some restrictions on the programmer. That's pretty much what the word "language" means. Yes, in Python, you have to use whitespace as syntax. Oh, but in Perl you can't use whitespace as syntax. There may be more than one way to do it in Perl, but that ain't one of them. Yes, in Lisp you have to use parentheses. Oh, but in Perl you have to use "$", "@", and "%" to start names. Unpunctuated names aren't an option! There's only one way to do it!

    Sorry for venting, but I get a little tired of the posturing in the Perl camp. They try to sell the language by implying that other languages are uncool, which is itself very uncool: "many programmers are still slaves of the cyber police." Give me a break.
  • [PHP] was easier and faster than Perl for CGI stuff.
    If you haven't used the standard CGI.pm, you're missing out on some of the easy part, and if you haven't used mod_perl [modperl.com], then you're missing out on some of the fast part. :-)

    --tom

  • Perl seems to my mind to actually
    help readability in many ways. the
    fact that you can tell at a glance
    that $array is a scalar variable and
    @variable is an array
    is (again depite the name) and array
    is easy.

    I do write a lot more Perl than I have
    to read but I've been told by those
    who have to maintain my old code that
    they can tell what is going on and modify
    it when they need to. It's
    the only language that I trip across
    old embarrasing code of mine in on the
    net that sucks rocks, but it does still
    work.

    The "write only" aspect of Perl can be seductive
    though. At the moment I'm writing piles
    of code for the pharmaceutical biz and I
    try really hard to write in "baby talk" so that
    if I get hit by a meteor any random hacker
    with a smattering of perl can pick it up
    and run with it, but.. jeez. I could compress
    that 200 line program down to into something
    that would fit in a .sig block and then all the
    grrls would think I was k3wl... but that's the
    Dark Side.

    garyr
  • by Elias Ross ( 1260 ) on Tuesday June 01, 1999 @12:17PM (#1871556) Homepage
    I think the geek and coder community needs to make a calendar of all the heros of open source, open standards, the internet, etc. Larry Wall would have to be, Mr. June or July or something.

    We could have Larry, Linus, the Samba Team, etc. A new face every month. And a couple good quotes to go along with them...

  • I just finished reading Scott Meyers' "Effective C++" and "More Effective C++". I can assure you that the C++ user is always wrong! ;-) C++ is far too complex for mere mortals to grok. No surprise that so much "modern" software sucks!

    (If you do program in C++, I highly recommend you read Scott Meyers' C++ books. They are indispensable.)



  • (Since when is Eiffel a scripting language? Tsk, tsk, MJR...)

    I was more surprised to see Wall focus on the rather minor feature of whitespace; syntax is only part of design philosophy, and Python's primary feature isn't its use of whitespace, any more than Algol-68's primary feature was its introduction of the "fi" keyword. Instead, Python's primary idea is really namespaces. Modules are namespaces. Classes are a bunch of namespaces with rules on how to look through them, and instances are namespaces on top of classes. It's noteworthy that Python's object model could be mapped to Perl fairly straightforwardly, influencing Perl 5's OO features.

  • However, I think LW's point comes down to the sheer pointlessness of the whitespace construction in Python, almost syntax for syntax's sake.

    Rather, it's a consequence of the observation that people indent their programs anyway, even though in the languages which use various symbols for marking "blocks" (whether {/}, begin/end, if/fi/do/done, ...) don't require it. You could say Python enforces the readability people normally would add to their code.

    (The only reasonable argument against it, IMHO, is that it makes looking for "block end" slightly more difficult than to look for '}'.)

  • I work with C /C++ ( used to be ASM on various platforms) and anytime I look at something written in PERL it just makes me sick. It is quite possible that this language is perfect but its syntax seem to be designed to scare off people. It sort of resembles to me output generated by encrypting software ...
  • by Anonymous Coward
    Perl is the reason i started using *NIX, i switched from ASP/NT to Perl on Linux/BSD, and i have never ever, not even once, looked back.

    Once you get over the initial confusion of what all those wierd slashes mean, Visual Basic starts to look like a bad joke, at least for CGI programming.

    Larry Wall, while i have never met him, and while he may have a nasty habit of making religious references all the time, is, in my opinion, a damn good guy, who has given me the most useful software tool i ever came across.

    -Pete
  • I have used Perl nearly since its earliest public releases and have written a lot of code in it. I still use it as my main scripting language. I've written database management tools, pattern recognition tools, experimental design tools, and lots of CGI stuff in it (including a bug tracker).

    Perl is a very useful tool, and when it came out it was a big improvement over awk/sed/sh, and it was free to boot. That's why it succeeded. Nowadays, most people simply use it because it's there (among other things, it's the only CGI language my ISP offers).

    But far from being an advantage, Perl's haphazard error checking and "postmodern" syntax do cause problems in practice. For example, one of the big government projects Larry mentions lost a lot of data because Perl did not flag bad numerical input as an error but simply uses 0 by default (a design flaw that has since been partially corrected through addition of "-w"). And even the Perl system itself has problems with its syntax--there are many circumstances where Perl compiler or runtime error messages are way off.

    The lesson I hope budding language designers will take away from Perl is that providing useful functionality in a timely manner and a free package is more important for success than clean design or robustness. But within the constraints of time to market, one should still strive for clean, robust designs, or one should at least aim to fix things up later. To Perl's credit, many of the initial design problems have been fixed.

    And while Larry seems to think languages like Lisp and Python were designed by some CS types for thought control, reality is that, for example, Lisp evolved over nearly 40 years to meet the needs of its user community (and, in a twist of irony, Perl's syntax itself has followed a little bit of the same trajectory already; let's see where it ends up in another 30 years).

    To me, Perl succeeded despite its quirks and problems, not because of them.

  • The cool thing that gets everybody all charged up about Perl (at least the people I've shown it to) is regular expressions. The ability to say "hey, give me every line that has 5 entries, separated by spaces, with the 2nd entry containing either 3 letters or starting with a letter that isn't in this list" seems impressive to people who've only coded in C. It's like showing a hammer to people who've lived their lives driving nails with a pair of vice grips. A cool tool for a particular set of problems, and a decent one for lots of others. One big problem with Perl is that you may return to your code and find it utterly unreadable.
  • Given that the Palm is far better at displaying text than graphics, I'd say Perl would be a natural for it.

    Except that writing code with Graffiti would sort of suck.
  • PHP3 is highly specialized to do Web pages. Perl is generically well suited for doing many things, including Web pages. Therefore, Perl is a more useful language than PHP3, in general. The fact that "database-driven Web sites" is an emerging technology leads us to believe that there is no date of obsolescence; however, I believe we just don't see it yet. To quote from the article:
    We've already seen the deaths of many over-specialized organisms in computing: Lisp machines, Ada chips and many so-called fourth generation languages. Any program ever written in assembly language for an obsolete architecture is now obsolete. Likewise, any program that ties its fortunes to a single operating system is likely to go down with the ship.
    Personally, I'm a big fan of ColdFusion (similar to PHP3), and currently make my living writing ColdFusion-based intra/extranets for organizations that still use NT, but I believe (as Larry seems to) that anything that can't or doesn't adapt will become obsolete (hence my Linux/PHP play-box at home.) Before getting too religious about any software or platform, remember: this rule of obsolescence applies to people as well as software.
  • Python doesn't force you to indent any particular amount, and it doesn't force you to indent the same amount everywhere. All it requires is that your indentation structure reflects your block structure. It appears that most people pay more attention to indentation than to syntax (consider the classic nested if/else-with-incorrect-indentation example), so arguably this is a good thing.
  • Yeah, I was wondering about that. I don't know Perl, so I can't really comment, but it struck me (as an outsider, though I do know some Python) that his earlier comment about requiring extra punctuation (is it a $?) for variables making CS people mad is exactly the same thing as Python's whitespace. But it's just an example, I suppose. He's trying to say it's postmodern. I don't quite get that, but what the hey! If Python's only limitation is that your code can't look like modern art, I can deal with it.
  • I was very excited about PHP when I first came across it. It was easier and faster then Perl for CGI stuff. But then I kept coming to spots where I really needed a function or language contruct that PHP just didn't have. In the end I went back tp Perl full time. it's a much more full-featured and mature language. I'm still watching PHP development closely though and may use it for other projects in the future.
  • Larry is a cool guy, but I really hate perl. Despite that I find myself using it - mostly because there is a perl module that talks to everything.

    But perl makes for buggy code. Languages like Eiffel have endeavoured to make coding more rigourous. And the power, conciseness and structured way of thinking of Lisp makes for elegant and thus maintainable code.

    But perl it's too easy to write bad code. In some cases it just plain encourages bad code. I think the main reason perl is popular is just because it talks to everything. And it talks to everything because it's popular. It lulls you into a false sense of security. Doing something small in perl is quick. So you start using it. Soon you're doing something big and serious and still using it. And then you're in a bit of a mess.

    If perl is post-modern - then give me modern please. The purity of careful thinking really is better than a hap-hazard, do it in hundreds of different ways thinking.

    I try to use Scheme and Guile whenever I can. I think it can do as good or better job for everything (I'm not a post-modern thinker). But to do everything better it needs to have as many modules as Perl. It's got quite a few, but not as many as perl yet. So that's why I use perl.
  • Yeah! One of my favourite sites! Check out The Trick! Wild!

    http://www.chick.com/catalog/tractlist.a sp [chick.com]
  • exactly. I know I've had to decode stuff written
    by psycho-looser-poor-ass-excuse-for-a-programmer.
    What I was saying is that even if they do use
    terrible names the "line noise" of perl at least
    gives you a hint. sure, $first_name could be
    a reference to an array of first names but at least its a hint.

    garyr
  • My comment above may come across as too critical, so just for clarification. What I was saying is that I think Perl has some quirks and I don't like to see those elevated to language design principles.

    But having said that, I still think among scripting languages, Perl is one of the most useful, and it gets a lot of things right, and I certainly appreciate all the effort that has gone into it.

  • I actually picked up a copy of Linux Journal, and I encourage others to do the same. It's a nice magazine. As for the Larry Wall interview, it was pretty interesting. He really goes into depth when answering the directed questions (something you rarely find in interviews, most of which are rushed.)

    I liked the point where he was looking for a name for his language. To actually fumble through the dictionary at every 4 letter word. THAT'S dedication. :P

    "We're not just talking about dinosaurs here, but also snail darters and cheetahs and a bazillion beetles in Brazil---not to mention Visual Basic."

    HEH.

    -- Give him Head? Be a Beacon?

  • Larry has a very interesting take on language disign. I liked is postmodernism comments. Perl definitly feals more like english then other langauges, but maybe that's just because I'm addicted. I don't think, however, that we are at all ready for a ``universilly postmodern'' approach to computation or programming langauges as there is just too much which need to be rigorous. I think we will ultimatly need something more like the Lucky [uni-frankfurt.de] project for Haskell [haskell.org] to do the parsing side anything. That is to say Larry's philosophy is importent even if we do need stronger theoretical building blocks then traditional imperitive programming provides.

    Jeff

    BTW> Lucky is a monadic parser. Monads are a very powerful way to resolve the contradictions between functional and object oriented programming philosophies. A monadic parser has all the elegance, flexibility, and raw power of a functional parser without the grammer constrains normaly imposd on a functional parser.
  • That said, Perl has some nice features that could be part of any language:
    1. regular expressions and pattern matching of course
    2. automatic memory allocation and garbage collection
    3. relaxed data typing and argument passing
    4. familiar C-like syntax
    5. convenient primitives for files, lists, stacks, queues, and hash tables
    6. eval

    With one exception, you've just described JavaScript.

    The one exception is convenient access to files, and that's the killer that has prevented it from being used as a batch-mode shell scripting language until now.

    I really wish someone would fix that, because I would love to be writing scripts in JS instead of Perl. (It wouldn't take much: just a little syntactic sugar to make the act of listing, opening, and closing files be a less verbose process.)

    Here's a telling example of the differences between the two languages: both allow you to treat everything as text manipulation (streams of bytes, regexps, etc.) And both allow you to construct objects and assign them behavior and manipulate things at a high level.

    But there is a particular focus built into the language. Sure, there's ``more than one way to do it,'' but the nature of Perl, the nature of the language's shortcuts, encourages you think about things as matching patterns in text, instead of as communication between objects. While allowing both, JS focuses on the latter.

    ``All the world's a stream of bytes'' is the most horrible and damaging part of Unix's legacy. It has stunted a whole generation of programmers.

  • by Anonymous Coward
    ;)
  • It might just be me, but I always think that "There's more than one way to do it" is implicitly followed by " as long as it's in Perl" even though I know it isn't.
  • Larry gave a great talk at Linux World on "Perl, the first postmodern computer language". The transcript is here [wall.org] (51kb) on the wall family website [wall.org].
  • Since the Bible is one of the most influential books on Western Civilization, I'm more than a little suprised that biblical quotes aren't in greater use. ;-)

    They probably aren't in greater use because some people feel that if you mention the bible, or religion, in daily use, you must be a missionary or a bible-thumper. hehe

    :-)
  • by vinh ( 31094 ) on Tuesday June 01, 1999 @12:11PM (#1871586)
    I found this article very interesting, even if you're just a "Sunday" Perl programmer (like me) :)

    For those who have read _The design and evolution of C++_ by Stroustroupp (sp??) it is interesting to note that Perl and C++ share some design philosophies. Like "the user is always right" school of thought. Maybe that's why both of these languages are popular?

    Anyway, you gotta admit larry Wall has a pretty big vocabulary:
    • ...three chief virtues of a programmer: Laziness, Impatience and Hubris...
    • ...Third, I look for projects that franchise the disenfranchised...
    • ...explicitly designed to be postmodern...
    • ...free-form syntax...
    • ..I must have a conjunctive rather than a disjunctive brain...

    and etc. etc... I sure would have got higher scores in school had I used words like that! :)

  • Perl is not algebra. Perl is an abstraction to a more complex system. There is not scientific reason, no logical reason, no reason at all why this is necessarily wrong or bad. You're arguing from a specific opinion and worse, arguing definitions from definitions. Programming languages are X, Perl is not X, so Perl is not a very good programming language. But what if the idea that programming languages are X is disputed? Indeed, this is the case.

    I'm not saying you need to like Perl or its design. You don't. But I would just hope that if you are going to be making a formal argument, as you appear to be doing, that you support your argument a little bit better than you have. Your definition of what a programming language should be is rejected by Larry Wall and the developers of perl, as well as many of the users of perl. So to use that definition as a basis for discussion isn't interesting.

    Of course, Perl technically _is_ a formal mathematical system. It's just a really complex one with lots of quirks, idioms, and apparent inconsistencies. But of course its _spirit_ is nothing resembling a formal mathematical system. This is a good thing, your unaccepted definition of "programming languages" notwithstanding.

    You say this fuzziness is inappropriate for a computer language. I disagree. I think it is highly apprpriate. Programming is, to me, art. It is a craft. And Perl lets me be expressive. This is important, and in my opinion, Perl's "fuzziness" is essential to the goal of allowing users to be optimally expressive. And the process of creation is just as important (to me) as the end goal.

    And since you don't give any real support for your opinion, mine is just as good as yours, except I like mine better, so I win. :)

    pudge@pobox.com
    http://pudge.net/
  • Lucky is a monadic parser. Monads are a very powerful way to resolve the contradictions between functional and object oriented programming philosophies. A monadic parser has all the elegance, flexibility, and raw power of a functional parser without the grammer constrains normaly imposd on a functional parser.
    Keep in mind that monadic has other meanings as well. The OED definition 1b for `monadic' is:
    of a proposition, fact, function, etc., or the predicate contained therein, when the predicate is non-relational and applies to only one subject term. [emphasis mine --tchrist]
    For example, Monadic Classes [perl.com] are a fancier term for Highlander Classes (`There can be only one!'). And lest you think this an irrelevant tangent, the link above actually has Perl content. [Someone actually posted a Haskell-inspired Functional.pm today, too. Funny how things show up together in more than one place all at once.]

    --tom

  • ...was when developing an app that used user-input for pattern-matching. I kept wondering why things weren't working if the user didn't supply a pattern: the pattern defaulted to the null string, which to my mind should match everything!

    After a few hours of banging my head against the wall, I discover this little gem buried on p. 70 of the Camel Book:

    If the PATTERN evaluates to a null string, the last successfully executed regular expression not hidden within an inner block ... is used instead.

    D'oh!
    --

  • No, not a flame on your spelling or grammar, which is fine, but a useful tip on getting meaningful system variable names if you want them.

    perldoc English and perldoc perlvar will tell you more.

    After all, there is more than one way to do it :-)

  • I have excatly the same feeling about PERL. It just looks like hack, unreadable and encouraging to write cryptic code. For now I will stay with C++ and use Python for scritping stuff ...
  • > it is interesting to note that Perl and C++ share some design philosophies. Like "the user is always right" school of thought.

    C++ ? User always right? Yeah, right.
  • I forget the original use of the word monad, but I think it was to refer to an idea of ``soul'' and the Catholic church burnd the guy who said that.. Then Libnitz used it both in his religious philosophy and *maybe* in his philosophical justifications for his calculous. Now, the Haskell use of the word monad comes directly from Category Theory (a very abstract branch of Mathematics) which probable got it from Libnetz. I do not know why Category theory used the word monad, but their use of it has been somewhat vindicated by the ``almost soul like importance'' of the monad in solving the issue of where the state of an object is in a functional langauge. Blah..

    Anywho, the realevence of this to the programmer world is that this stuff moves us closer to a functional langauge which agree with as least part of the Perl philosophy and feal. Postmodernisn improved by modernist research.. sorta.. of couse that's not at all ruled out by postmodernism. If anything Perl's dependance on it's imperitive style is keeping it from being more postmodern. Er.. Well.. Whatever.. Maybe I'm spouting bullshit here.. I'm never quite shure about these things..

  • by Anonymous Coward
    He mentions that he has been "playing around" with
    his Palm Pilot. Does that mean we can hope to
    see a subset of Perl on the Pilot? God I hope
    so. That would rule.
  • "Perl seems to my mind to actually
    help readability in many ways. the
    fact that you can tell at a glance
    that $array is a scalar variable and
    @variable is an array
    is (again depite the name) and array
    is easy. "

    I'm going to have to object to your line of reasoning here. Any psycho-looser-poor-ass-excuse-for-a-programmer that names their variables "array" or their arrays "variable" deserves every form of torture their maintainers can dream up.

    Maintainers can get downright creative when it comes to thingking up new and interesting ways to inflict pain on the original coder. Be nice to the people who may someday have to read your code. Comments and a clean writing style are all that stand between you and a sever thwacking.
  • Well obviously your perl code must at some point resolve to something computable.

    Programming languages let you do all sorts of things that violate "purity". What do you think a type cast is? C will let you shoe horn anything you want as long as it doesn't cause a segfault.

    Perl is by no means fuzzy. Every operation is founded on a set of principles that can be deduced by reading the source.
  • I think the postmodern business is silly. Perl has to be a formal language, just like any other programming language.

    That said, Perl has some nice features that could be part of any language:

    1. regular expressions and pattern matching of course
    2. automatic memory allocation and garbage collection
    3. relaxed data typing and argument passing
    4. familiar C-like syntax
    5. convenient primitives for files, lists, stacks, queues, and hash tables
    6. eval
    For short programs and "exploratory programming", these features are nice because you can avoid tedious details (declarations, memory allocation, pointers) that get in the way of what you want to really want to think about. Larger programs, however, need more constraints to at least ensure widespread agreement on names and types and to limit unexpected behavior (e.g., an eval might do anything).

    There are quite a few things I don't like in Perl, e.g., heavy use of $_, uncommented regular expressions, and omitting optional parentheses can make Perl programs look like so much gibberish. It would have been nice if one goal of Perl was to ensure that any program looks semi-sensible to a C programmer, but I guess you can't have everything you want unless you create your own language.

  • Perl/TK would be perfect for the PalmPilot, but that may require a bit more RAM than they typically hold. OTOH, if 3COM wanted the PalmPilot to have thousands of craven freeware programmers writing to their platform, then that is exactly what they'd do. Hmmm....
  • by gavinhall ( 33 ) on Tuesday June 01, 1999 @12:05PM (#1871603)
    Posted by d106ene5:

    I don't know how else to say it - his presentations at conferences are so offbeat, his interviews always entertaining.

    Of course, perl is offbeat and entertaining. Its bizarre and obscure at times, but anyone who can write it with skill usually swears by it.
  • Perl seems to my mind to actually help readability in many ways. the fact that you can tell at a glance that $array is a scalar variable and @variable is an array is (again depite the name) and array is easy.
    Except that $array could also be a reference to an array.

    I've spent a bit of time beating my head against complex data structures in Perl, and while I'm sure I'll get the hang of these things eventually, I've had to make liberal use of Data::Dumper to prevent the syntax from biting me.

    Of course, since Unicode support is coming to Perl, and all of the Zapf Dingbats are in Unicode, we can just extend the syntax to...

  • Perl is a general purpose language with applications in system and application software.
    PHP only applies to web content.

    Perl is popular because of its power, extensibility, flexibility, openness, and because
    it's been well marketed (yes, even as it is free).
  • by Anonymous Coward on Tuesday June 01, 1999 @11:43AM (#1871607)
    I used to work for the NSA. We used Perl for scripting tasks etc. But most of our filters were done in C. When i was in Menwith Hill, we had to do Sparc Assembly as well, you should now how hard it is to write software that has to monitor gigs per seconds, you have to tune your systems to perfection.
  • ...what is Perl itself written in? Perl, or C? My, how orthogonal. How modernist.

    I like Perl a lot. It's easy, fast, and cool. But I too weary at times of the idea that Perl is "better" than other languages because it's so free-form.

    The only way post-modernism -- including Perl -- can really work is if there is a "modernist" foundation under it. When everyone literally abandons ethical standards (because "there's more than one way to do it"), we have chaos. So too with Perl: it is dependent upon an orthogonal OS to even run! Or shall we rewrite Linux in Perl?

    His principles can only be applied so far. Which means they're not useful for everything. Just like Perl.

  • It's line noise!! Muhahahaha!

    $_="It's line noise!!\r"; $|=1;
    $e='s/([\x41-\x5a])(\W*)([\x61-\x7a])/\l\1\2\u\3 /g';
    print while select('','','',.1),eval $e || $e=~tr [4567lu] [6745ul];
  • Perl can only be understood by its creator

    As a poor commenter myself, I can assure you that anything I write in any language is going to be difficult for someone to understand. This doesn't make my code bad, the application bad, or the language I wrote in bad. It just makes me bad! ;)


  • Doing something small in perl is quick. So you start using it. Soon you're doing something big and serious and still using it. And then you're in a bit of a mess.

    I'm not really objecting to your point of view, I've used a lot of languages, and all of them have their strong (well-loved) and weak (hated) points.

    I do note though, on the particular point above, that you're not making a straight-up comparison.

    I assume that when you do something big/serious in Lisp, you're making use of various constructs in the language such as (depending on dialect) packages, closures (lambda), OO (CLOS/Flavors), etc. You could certainly write a lot of conditional sexp's instead, but you want these features expressly because they improve the quality of the code.

    Well, gee, Perl has these constructs too. (You just never see them in one-off, quick and dirty CGI scripts). It simply takes an investment of time before you learn how to use them.

  • Perl without Larry's morality
    or oblique biblical references
    is like Python without a parrot
    skit or ip framing without reference
    to carrier pigeons.

    Really, I'm the canonical agnostic
    Secular Humanist but Larry is the
    best advertisement for Christianity
    I've ever seen. [no one ever expects
    the Spanish Inquisition - stop that
    Guido...] His faith is an intregral
    part of everything he writes. Maybe
    this is what he meant when he said
    that Perl has done more for missionaries
    than if he had become one. He is a great
    book review for his Author.

    garyr
  • I've met Larry a few times, and he's a great guy. His writings are always highly entertaining (I especially loved his `` perl as postmodernism [wall.org]'' speech, that was just hilarious. (BTW, I also highly recommend How to Deconstruct Almost Anything: Chip's Postmodern Adventure [communities.com].)

    Larry has a consistent philospohy behind the design of Perl (or rather, the intentional lack of overall design.) It's an interesting idea, certainly, and one that I think hasn't been consciously applied to a programming language before. However, if Perl is the kind of language that that approach produces, then I think the experiment is a failure.

    While Larry is a smart fellow, the problem is that he is also a linguist. And having spent a few years working with linguists (doing a natural-language understanding boondoggle), my experience is that linguists should never ever be allowed near computers.

    Computer languages aren't really languages, not in the sense that linguists know languages. Computer languages are formal mathematical systems, which are a totally different beast. Computers are very literal-minded, not fuzzy at all, so one must talk to them precisely. The fuzziness that appears in human languages is inappropriate in a computer language.

    The ``language'' of mathematics doesn't have linguistic drift. Where is the ``slang'' in arithmetic? Where are the ``dialects'' of algebra? It doesn't happen, because mathematical systems exist by design, not by evolutionary pressure and random mutation.

    Accretion works well for some things, like DNA, forests, and cities. But I for one am glad that my car's engine was designed to be efficient and self-consistent, and I prefer the software I use (including languages) to be the same, rather than a sprawling Winchester Mystery House [winchester...yhouse.com] of a language like Perl.

    Of course, I end up using Perl anyway, because often it's the most convenient tool for the job for any number of not-very-good reasons. The way Perl manages to suck so bad and yet still be marginally useful is probably what makes it the perfect complement to Unix itself. Worse is Better [jwz.org], after all.

    Actually, now that I think about it, Tcl is even more horrible than Perl, so it's a wonder it hasn't taken over.

    Maximal obscurity! Now!

  • I really admire Larry Wall. I am a geek Christian too, and I must admit, in our industry it is not a very popular thing to proclaim your faith, unless you're anything but a Christian.

    Larry loves to slip in to his speeches and stuff references to what he believes. And whether you like Jesus Christ or not, you have to admit, the man is a man of integrity, and believes what he says he believes. Go big camel!
    ----- if ($anyone_cares) {print "Just Another Perl Newbie"}
  • See: LARRY WALL Divine Invention Author Erik Davis talks to Perl creator Larry Wall http://www.feedmag.com/re/re172_master.ht ml [feedmag.com] Larry explains it all. Go Brother Larry! -Peace
  • Hum - I've been trying PERL for writing CGI, but switched to PHP3 real quick. Frankly, I haven't used PERL that much to talk about it, but it seems to me that PHP3 is way better, at least as for as Web development goes. Could anyone explain why PERL is so popular ? I don't really get it.
  • by Anonymous Coward
    (Sorry for my bad english, i'm french speaking)

    IMHO Perl/DBI is better that PHP :
    1) DBI Module
    With DBI (the DataBase Interface module for Perl)
    Your perl source code are independent from the Database. If your database swap from MySQL to Informix (or Oracle) You don't have to change the code. PHP use native call, it's more speeder but not very portable.

    2) Reglular Expression

    4) Modules (CGI, FTP, MAIL, IRC/API, USENET)
    A lot of interesting module are available in perl for easy Gate to do accross a Web-Database
    eg :
    Web/Database/Usenet
    Web/Database/IRC
    Web/FTP
    Web/SMS

    5) No other language to learn
    PHP is easy and work fine in Unix and NT and seem to be a easy choice for Newcommer in WebDevelopment World. but it's JUST a WebDB language.

    However, Perl/DBI a better choice for long time, and long vison project.

    Well ! i home that will help you ! :o)
    Perl/DBI users looks very rare, i'm feeling lonly on the PHP Hype :o) HEeeeeeLLPp MEEEeee ! :o)
  • There is not scientific reason, no logical reason, no reason at all why this is necessarily wrong or bad.

    No, there's not. As I said, it was an interesting experiment. Nevertheless, Perl blows, and I think its design philosophy is why, rather than some implementation detail or other accident. It was interesting to see what kind of language we would end up with with the design principle of no design principles. Well, the language we ended up with is one that I find egregiously bad. Interesting data point. Let's not try that again. Acknowlege, move on.

    You're arguing from a specific opinion and worse, arguing definitions from definitions. Programming languages are X, Perl is not X, so Perl is not a very good programming language. But what if the idea that programming languages are X is disputed? Indeed, this is the case.

    And you're arguing syntax. Obviously I was stating my opinion, not trying to offer a proof of why Perl is bad. The ``X'' that Perl is is ``sucky.'' I hold that truth to be self-evident. Beyond that, I suggest that this suckiness is a result of the thing about Perl that is different from prior, less sucky languages: the fact that Perl rejects outdated academic concepts like consistency and simplicity.

    You say this fuzziness is inappropriate for a computer language. I disagree. I think it is highly apprpriate. Programming is, to me, art. It is a craft.

    And to me. But don't confuse the act of giving the programmer freedom of expression, and the act of giving the programmer a simple, consistent, easy-to-undertand tool. You can do both. Just because a tool is a simple and easy-to-understand device (like a lever, or rope) doesn't mean it restricts the artistic expression of those using it. Help, help, I'm being oppressed!

    People can live free with tools that haven't themselves gone hog-wild with baroque gilding.

    I consider simplicity, consistency, and orthogonality to be good things in a tool. I think that when you want to provide a tool to solve a problem, you should think the problem through, and cover all the permutations. Figure out what's needed, and do it in a simple way. That's not the Perl approach. The perl approach is much more haphazzard than that, and usually involves a new line-noise syntax and some regular expressions.

    And while ``there's more than one way to do it [as long as you use line noise punctuation and regexps]'', Perl most assuredly does encourage a particular programming style. It does this by the shortcuts it provides. Perl encourages you to think about everything as text manipulation, when (news flash!) most things aren't. It encourages use of regular expressions, even when they would be inappropriate (which, news flash, is almost all the time.) It doesn't force you, no, but it makes one path easy and the other path hard, and that's all it takes.

    Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

    Furthermore, ``There's more than one way to do it'' is not a virtue in a multiple programmer environment. When someone else is going to see your code (and unless you're doing an art project all on your own, someone will) your responsibility as a programmer is not only to make the program work, but also make it maintainable.

  • >To actually fumble through the dictionary at every 4 letter word. THAT'S dedication. :P

    One might assume he just used /usr/dict/words in combinarion with a little "pearl".
  • Hey, I'm cool with perl's syntax checking. The syntax checker is all that stops me from losing it completely. Having to order my mind enough to fight it within the syntax constraints of any given language is part of the development process, it helps me understand the problem.

    As it is, my code is getting looser and looser (is that really a word) to the point while explaining bits to my supervisor (a PhD. equipped scientist, not computing) I have to gloss over the bits that look like line noise
    "That line that says s/[\_[\. \,\?]//g; does have useful function, it does xxxx"

    At least we're writing computer code that looks like computer code, we could all be writing CoBOL, RMS protect us from that....

  • by Anonymous Coward
    as long as there's no swimsuit edition.
  • If "postmodern" means having 100+ 2 character built-in variables consisting a dollar sign ($) and a random punctuation mark, I'll "regress" into "modernism", thanks.

    Seriously, coming from C, Perl seems to make for needlessly archaic and unreadable code. Hard as I try, I can't get myself as excited about coding for Perl as half the open source community seems to be.
  • Much like any other programmer, Perl can be difficult to read. However I had to maintain a couple of thousand lines of Perl code written by a couple of other people, and one of them commented well, and that made it much easier to read. So Perl being a read only language does in a large part depend on the person writing it, much like any other language.

Real programmers don't bring brown-bag lunches. If the vending machine doesn't sell it, they don't eat it. Vending machines don't sell quiche.

Working...