Slashdot Mirror


Perl's State of the Onion 10

chromatic writes "Larry Wall's annual State of the Onion addresses cover subjects such chemistry, science, music, lingustics, and screensavers. They occasionally discuss Perl too. This year's, State of the Onion 10 compares raising children into productive adults to guiding the development and design of a programming language. Perl turns 19 soon; Larry says that she'll truly grow up with Perl 6."

126 comments

  1. Legal, is she? by Qa1 · · Score: 3, Funny
    Perl turns 19 soon; Larry says that she'll truly grow up with Perl 6.

    Great, so Perl 6 is legal now. Any chance of seeing her while we still have our youth?

    1. Re:Legal, is she? by Anonymous Coward · · Score: 5, Funny

      Perl just turned legal? Great. Perl has been fucking me for the last 10 years, and now I hear this. Honestly, Larry told me that she was 35! I didn't know.

    2. Re:Legal, is she? by RuBLed · · Score: 1

      It's like a SIMONE thing. Besides do you think Larry would do that favor for slashdotters considering our current reputation of... oh nevermind...

  2. Summary by kestasjk · · Score: 2, Interesting

    An interesting and fun read, it lists and explains the challenges being faced with Perl 6 very well. Unfortunately it doesn't explain how Perl 6 will respond to those challenges; just that Perl 6 will be WOP (whatever oriented programming), which is more than a little vague.

    After having read it I get the feeling Perl 6 is having an identity crisis, but that Wall knows what he's doing.

    --
    // MD_Update(&m,buf,j);
    1. Re:Summary by Scarblac · · Score: 3, Informative

      To know what Perl 6 will be like, read the Synopses.

      My own reaction was more like, wow this guy really is nuts, but I really want to see what he'll manage to come up with. :-) (and I say that as a professional Perl programmer...)

      --
      I believe posters are recognized by their sig. So I made one.
    2. Re:Summary by NickFortune · · Score: 2, Insightful
      I was disappointed. Larry usually does a better job of connecting the off topic stuff pack to Perl. This time he had maybe five or six puns and that was about it. The main thing I took away from it was the big slides with whatever. That and the theme of "learning not to care"

      It all read to me as if he's disengaging himself from the Perl development process and looking forward to spending more time on Real Life. Good luck to him, if so; he's surely earned some time off to spend with his family.

      Pity about the speech though.

      --
      Don't let THEM immanentize the Eschaton!
    3. Re: Summary by jonadab · · Score: 2, Insightful

      > Unfortunately it doesn't explain how Perl 6 will respond to those challenges;
      > just that Perl 6 will be WOP (whatever oriented programming), which is more
      > than a little vague.

      Ah. What you've missed is that this is Larry's State of the Onion speech. If you want to see details such as how Perl6 will respond to certain challenges, what paradigms the language supports and how it supports them, and so on, you subscribe to the mailing lists or at least read the Synopses. If you just want to be entertained for a few minutes, you listen to the annual State of the Onion.

      --
      Cut that out, or I will ship you to Norilsk in a box.
  3. More useful stuff about Perl 6 by Ed+Avis · · Score: 4, Informative

    You can start programming in Perl 6 today using Pugs.

    --
    -- Ed Avis ed@membled.com
    1. Re:More useful stuff about Perl 6 by Billosaur · · Score: 1

      As a Perl programmer, I have to ask: why? I don't want Pugs, I want Perl 6! The last thing I need is another language to clutter things up. I'm not going to go about converting Perl 5 scripts to Pugs then having to convert them over to Perl 6. Or is LW going to wave a magic wand one day and Pugs will magically transmogrify into Perl 6? I love Perl, I really do -- it's the Swiss Army knife of languages, good for just about anything you can think of. Whether there is a Perl 6 in the future is really irrelevant because I bet I'll be maintaining the vast abundance of Perl 5 code for many years to come before most places even think of converting.

      --
      GetOuttaMySpace - The Anti-Social Network
    2. Re:More useful stuff about Perl 6 by Abcd1234 · · Score: 1

      Umm... what? Pugs is an attempt at a reference implementation of... Perl 6. If you write code and it runs in Pugs, then it should run in any other Perl 6 implementation. Unless, that is, I'm missing something...

    3. Re:More useful stuff about Perl 6 by dkf · · Score: 1

      I've also always regarded Perl as the swiss army knife of scripting languages too.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    4. Re:More useful stuff about Perl 6 by arodland · · Score: 1

      Your statement is akin to "I don't want gcc! I want C! You expect me to write my programs for this free gcc crap? What, will RMS just wave a wand someday and gcc will be C?"

  4. Perl 6 might be great... not. by VGPowerlord · · Score: 2, Informative
    Perl 6 may be great. However, having read some of the docs, I don't think so.

    For example, here's two choice quotes from the Perl 6 operators page.
    • -> becomes ., like the rest of the world uses.
    • The ? : conditional operator becomes ?? !!.

    Hypocrisy in action, folks.
    --
    GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    1. Re:Perl 6 might be great... not. by bytesex · · Score: 1

      -> becomes ., like the rest of the world uses.

      I don't get it - the rest of the world doesn't use C or C++ ? Is that what you're saying ?

      --
      Religion is what happens when nature strikes and groupthink goes wrong.
    2. Re:Perl 6 might be great... not. by grinder · · Score: 5, Interesting

      Hypocricy? I don't think this word means what you think it means. Could you explain what you think is so hypocritical about this design decision?

      From what I understand, the Perl6 operators were chosen according to Huffman compression principles. Frequently used operators became shorter, less frequently used operators became longer.

      The bare colon operator turned out to be much more useful elsewhere. The dash-arrow operator was initially borrowed from C++, but these days, most dynamic languages all use dot for the same purpose.

      This sound more like pragmatism than anything else.

    3. Re:Perl 6 might be great... not. by Anonymous Coward · · Score: 0

      Perhaps you don't like those operators, but it's hardly a fundamental language issue. It's not something that could make a language "good" or "bad" at any rate.

    4. Re:Perl 6 might be great... not. by revlayle · · Score: 1

      only for a pointer to a class instance/struct. for straight up heap-based class and struct expressions... we still use "."... a LOT

    5. Re:Perl 6 might be great... not. by Anonymous Coward · · Score: 0
      -> becomes ., like the rest of the world uses.
      -> is the infix dereference operator, btw.

      And no, not all the world uses . or -> to access object members. I'm using generic functions with method specialization. Dispatch on more than one argument, baby!
    6. Re:Perl 6 might be great... not. by Scaba · · Score: 1
      Hypocricy? I don't think this word means what you think it means.

      Hypocrisy? I don't think this word is spelled like you think it's spelled.

    7. Re:Perl 6 might be great... not. by I+Like+Pudding · · Score: 1

      > The ? : conditional operator becomes ?? !!.
      > Hypocrisy in action, folks.

      I agree. The new ternary syntax is going to be easily confused with the ORLY?? and OMG!! operators.

    8. Re:Perl 6 might be great... not. by osgeek · · Score: 1

      He's saying that they're changing one bit of syntax to conform with what people are used to in other languages while totally corrupting something else that was perfectly consistent with what everyone else already knew.

    9. Re:Perl 6 might be great... not. by CTachyon · · Score: 1

      To quote Larry in Apocalypse 3:

      The basic problem is that the old ?: operator wastes two very useful single characters for an operator that is not used often enough to justify the waste of two characters. It's bad Huffman coding, in other words. Every proposed use of colon in the RFCs conflicted with the ?: operator. I think that says something.

      If you haven't been keeping up, one of Larry's basic premises in Perl 6 is to improve the "Huffman coding" of the language: things that people use every day should be easy to type, and things that people use infrequently should be harder to type. There's only a finite number of punctuation marks to use for operators, so something has to give.

      For instance, the change from -> to . is a big win because method calls are heavily used. The change will save a bit of typing, cut down on typos (>-, -. and the like), and help the C++ and Java refugees figure out what's going on. However, in the process it ousts the string concatenation operator, which gets stuck playing musical punctuation since it's not as frequently used.

      Similarly, the change from (?:...) to [...] is a big win. In a regex, non-capture grouping is an extremely common operation, but it looks like line noise in Perl 5. You can just use plain parens to create capture groupings, which are easier to type and read, but now your regex uses more memory to run and might take much, much longer to run. (We're talking about optimizations that can cut match time from days to seconds in some extreme cases. Captures don't actually fit very well into the finite automaton model that underlies the regex.) In comparison, while character ranges are still occasionally useful, they're going out of fashion thanks to Unicode, and they're hogging some valuable punctuation real estate. The change from [A-Z] to <[A-Z]> or <Upper> , while breaking compatibility in a major way and making character ranges less handy, frees up some punctuation to make other things more handy (and gets rid of the ugly \p{Property} construct to boot).

      Finally, to address your main complaint, the change from a ? b : c to a ?? b :: c frees up both the question mark (possibly for a new boolean cast operator) and the colon ("Larry's First Law of Language Redesign: Everyone wants the colon") while making an ugly and infrequently used operator look more visually distinctive and less confusing to read. That's a huge win in my book. It's not hypocrisy; it's what Larry's been promising all along for Perl 6.

      --
      Range Voting: preference intensity matters
    10. Re:Perl 6 might be great... not. by bytesex · · Score: 1

      Well I can be just as pedantic as you if you will; stack-based 'structs' (perl arrays and hashes) don't use dots at all; they're indexed by [] and {}, respectively. 'heap-based' structs (pointers) _do_ use '->' and are mirrored perfectly adequately in perl with the use of the same operator for references. So there.

      --
      Religion is what happens when nature strikes and groupthink goes wrong.
    11. Re:Perl 6 might be great... not. by VGPowerlord · · Score: 1
      The Merriam-Webster definition for hypocrite puts it best:
      a person who acts in contradiction to his or her stated beliefs or feelings"

      i.e. saying "-> becomes ., like the rest of the world uses." and then changing the ternary operator from something everyone else uses to something completely different.

      Changing -> to . has other repercussions, too. In case you'd forgotten, "." was already used for concatenation. So, now concatenation now becomes "~". But wait, ~ was already used to bind scalars to a pattern match. So those now change from =~ and !~ to ~~ and !~~.

      I really doubt that the Huffman Compression principle states that changing one operator should change two other frequently used operators simply because "the rest of the world" uses said operator.

      It also strikes me as a really stupid idea to arbitrarily change operators people already to something completely different between versions of a programming language. I've never seen it done before Perl 6. Have you?
      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    12. Re:Perl 6 might be great... not. by chromatic · · Score: 1
      It also strikes me as a really stupid idea to arbitrarily change operators...

      Good thing it's not arbitrary then.

    13. Re:Perl 6 might be great... not. by VGPowerlord · · Score: 1
      3 a : based on or determined by individual preference or convenience rather than by necessity or the intrinsic nature of something
      So, yes, arbitrary.
      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    14. Re:Perl 6 might be great... not. by chromatic · · Score: 1

      Fine, but by that definition everything in the design a programming language is arbitrary, so that's a fairly useless description. I thought you meant the capricious or random definition, which (while incorrect in this case) actually means something in context.

    15. Re:Perl 6 might be great... not. by Anonymous Coward · · Score: 0

      Says who? I use the string concat . operator all the time. I only use -> to dereference data structs, because I write mostly procedural code. There's probably just about as many . and -> in my code right now. Moving stuff around like this doesn't benefit me on bit.

    16. Re:Perl 6 might be great... not. by Anonymous Coward · · Score: 0

      Why would you? What's wrong with:

      • interpolation
      • (s)printf
      • formats
      • templating
      ?

      Concatenation makes for ugly code

    17. Re:Perl 6 might be great... not. by Anonymous Coward · · Score: 0

      You will not need so often concatenation in Perl6, interpolation double-qoute strings will work much better.

  5. Larry is boring by Eivind · · Score: 2, Interesting
    Larry Wall is just boring.

    He tries desperately hard to be creative, funny, surprising, to add new perspectives.

    Yet, when it comes down to it, he ultimately writes 5 pages of nonsense. He really does say amazingly close to nothing in all those pages. No. A large white square with the literal text "Whatever" in the middle doesn't really tell anyone anything significant.

    And no. The skills needed for successfully managing a family and raising children doesn't, infact, have much in common with those skills needed to develop and maintain a programming-language.

    Every time I read something from Larry, I become happier that I left Perl for good several years ago.

    1. Re:Larry is boring by melonman · · Score: 2, Insightful

      The large square panels are presumably slides from his live presentation. They aren't supposed to stand alone, in fact I suspect that the whole presentation would make (as much) sense without any of them.

      Personally, I find Wall's prose simply wonderful: I've been known to read entire chapters of the Camel book just for the asides. I think that to judge this presentation you have to imagine the equivalent speech about "the future of typing in C++" or "the evolution of the object model in java" and ask yourself if anyone would be awake by the end of page one. Wall is one of the few people I've come across who stands far enough back to get beyond "Side Effects Good/Bad", "Parentheses Good/Bad", "Strict Typing Good/Bad" and so on.

      And at least the man does seem to have a nodding acquaintance with other languages. Try Learning Java for the other approach, where the opening chapters compare Java with other languages, and point to several weaknesses or omissions in perl. Unfortunately, perl does all the things the author thinks it doesn't, and it did some of them before Java had crawled out of the C.

      --
      Virtually serving coffee
    2. Re:Larry is boring by Anonymous Coward · · Score: 0
      've been known to read entire chapters of the Camel book just for the asides

      I'm sure if you read it just for the asides it's wonderfully entertaining. However, when you've inadvertantly shot yourself in the foot for the fifth time that day, you're looking at something representing random characters, and you try reading it just to find out what the fuck is going on, the jokes become a lot less funny. If $_ is behaving in an unexpected way, Bilbo Baggins' family tree is the last thing on your mind. In a situation like that, something like K&R C is exactly what you want.

      Every time I think about Perl, I thank my lucky stars I don't use it any more.

    3. Re:Larry is boring by jerald_hams · · Score: 1

      Come on: "Here's a mommy and a daddy truck. They live on a truck farm, and raise little trucks." You don't think this is adorably funny.

      Anyways, I'm sure Perl is also quite happy that you left.

    4. Re:Larry is boring by Anonymous Coward · · Score: 0
      Come on: "Here's a mommy and a daddy truck. They live on a truck farm, and raise little trucks." You don't think this is adorably funny.

      Dude...if that's your idea of funny, then you really need to get out more.
    5. Re:Larry is boring by melonman · · Score: 1

      If $_ is behaving in an unexpected way, I use variable names. K&R is almost completely useless IMO because it hardly mentions any of the optional extras like, um, input and output. If you want to implement encryption, K&R gives you a totally generic and unbelievably low-level set of tools to do it with. The Camel book points you to CPAN. The difference is best measured in man-months...

      --
      Virtually serving coffee
    6. Re:Larry is boring by mrsbrisby · · Score: 2, Interesting
      I become happier that I left Perl for good several years ago.
      We're glad you stopped programming.

      And no. The skills needed for successfully managing a family and raising children doesn't, infact, have much in common with those skills needed to develop and maintain a programming-language.
      I think programmers understood that he wasn't suggesting otherwise.

      See, there are a lot of programmers (especially those that learned in the last 5 years, but plenty still that have been working in software development for longer) that programming constructs are taxonomic so e.g. an Apple is a Fruit which is an Edible, or Apple follows the protocols (interface in Java-speak) [hasColor,hasShape,somewhatRound], and that if we can just classify everything, programming would only have to tackle new patterns and problems that have never been tackled before.

      These people are, however, wrong. Just as it is with kids, exceptions and special-cases are the norm, so it makes sense to acknowledge this.

      A large white square with the literal text "Whatever" in the middle doesn't really tell anyone anything significant.
      People have a lot of crap to do, and most of the things that they have to do, they accept a very fuzzy concept of how fast, or how clean that it has to be. They just want it done. Perl has always been good at filling that. The naysayers like to talk about what kind of a niche that is, and clarity or raw performance is much more important, but the reality remains that these niche exceptions and special cases are just so-common that they need a readily available system for dealing with them. Some people call it a programming language. Others call it Perl. Others say "whatever".

      What you meant to say is it doesn't tell you anything significant. That's a completely different thing, and it might have to do with you not being a programmer.
  6. Debugging by cerberusss · · Score: 2, Informative

    What I would really REALLY like to come with Perl isn't about the language itself, but about the tools.

    Perl has a really nice debugger, but you can't use it for debugging scripted web pages. There are solutions, but mostly they're not provided with the standard Linux distributions. I'd like some sort of online solution that doesn't require lots of configuration.

    --
    8 of 13 people found this answer helpful. Did you?
  7. Perl is so damned ugly though by tygerstripes · · Score: 1
    It's really touching, all that stuff about raising a family that he goes into, but (while Heidi might be strangely attractive) does he realise how ugly his kids might be? Course not, he's a father.

    Honestly, if I plugged my mouse into the keyboard port and spat the input into a text editor, it'd look like Perl. I know that's an incredibly immature way of looking at a language but, dammit, even Assembly is prettier! Should that really be the case?

    (Disclaimer: this is not a comment on Perl's functionality.)

    --
    Meta will eat itself
  8. Podcast by cerberusss · · Score: 3, Funny

    This is all nice, but where's the podcast?

    --
    8 of 13 people found this answer helpful. Did you?
  9. Operator Error by Killer+Eye · · Score: 4, Interesting

    While indeed Perl operators are becoming more "consistent" among themselves, I think Perl's decision to undefine decades-old comforts like the ternary operator (?:) and bit shifting () is a huge mistake. If a language wants to change these things, the results should be clearly *more* intuitive, not just different. Take Python, which recently added the following style of ternary operator: "x = 1 if cond else 2". Yes, it's not "?:", but to me it's a lot easier to understand than the equivalent Perl operator. The fact that Python was able to add a feature by reusing keywords is even better.

    Some Perl 6 additions will prove quite useful, like the zip() function (which Python has had for some time, incidentally). Some changes are moderately useful, but it is difficult to see how they are superior to Perl 5 (like getting rid of the "_" short-cut for stat calls in favor of sequencing calls). But a lot of the stuff just doesn't seem to warrant all the effort to change scripts: programmer time is expensive, and is wasted twiddling ASCII characters just because the language wants to use new characters to express *exactly the same concept*.

    In my case, I will probably look at my array of Perl scripts, and I will probably decide it is easier to finally switch them over to Python or another superior language. At least then, I will gain something for my trouble.

    --
    "Microsoft killed my company, I hold a personal grudge. I don't use Microsoft products and neither should you."-JWZ
    1. Re:Operator Error by TheLink · · Score: 1

      I'm actually waiting for parrot and ponie, not perl6. Then hopefully perl5 will run faster.

      Unfortunately ponie seems to have got stuck or something.

      Then if there are some things that perl5 doesn't do well, maybe you switch to perl6.

      Or python ;).

      --
    2. Re:Operator Error by Abcd1234 · · Score: 1

      While indeed Perl operators are becoming more "consistent" among themselves, I think Perl's decision to undefine decades-old comforts like the ternary operator (?:) and bit shifting () is a huge mistake. If a language wants to change these things, the results should be clearly *more* intuitive, not just different.

      Well, to play devils advocate, how often do you find yourself using the terniary operator or bitshifting in Perl? What if you could, instead, leverage those tokens for other, more commonly used operations?

      Yes, I understand this means Perl 6 requires a greater mindshift because it doesn't follow other languages and inherit C-like syntax. OTOH, who says C is the best? Why is '??!!' worse that '?:'? Heck, I would argue that '??!!' is easier to visually parse, because the character delimiters are very clear (searching for the ':' in a complex terniary expression can be a bit of a chore, depending on how nasty the original programmer was).

      So I would hardly call this a "huge mistake". Will it be a bit annoying to adapt to? Sure. But learning new programming languages (even somewhat unusual ones) should be fairly easy for any experienced developer... it's just syntax, after all.

      At least then, I will gain something for my trouble.

      Well, ideally Perl 6 *will* be the superior language, though that remains to be seen...

    3. Re:Operator Error by Anonymous Coward · · Score: 0
      I think Perl's decision to undefine decades-old comforts like the ternary operator (?:) and bit shifting () is a huge mistake.


      Hear, hear! Why even use a ternary operator if the regular if-expression is enough?

      (let* ((my-number 2)
                    (result (if (equalp my-number 2)
                                            'foo
                                            'bar)))
          (format t "Hello ~A!~%" result))
    4. Re:Operator Error by ctzan · · Score: 1

      ponie is officially dead

    5. Re:Operator Error by chromatic · · Score: 1
      I think Perl's decision to undefine decades-old comforts like the ternary operator (?:) and bit shifting () is a huge mistake.

      There are billions of potential programmers in the world and maybe a few million existing programmers. Optimizing for the benefit of the first group seems like the right choice to me.

    6. Re:Operator Error by Anonymous Coward · · Score: 0

      That is probably 'cause you scratched only the surface of what is new in perl6.
      As most of the ppl commenting here they look only at several of the syntax changes..
      To them I will tell to read a litlle bit Perl6 Synopses and Apocalypses.
      Let me make a quick introspect :

      The regex'es are upgraded to Rules - this is bison&yacc on steroids integrated into the language. Also you will be able to change the Perl6 parsing rules on the fly.

      You have class{} like Java and other languages, but Larry didn't stopped here...he added Roles - this Class-composition tehnique much more powerfull than Interfaces.In fact Interfaces are special case of Roles.
      Aditionaly you can do Delegation easy.... Parallel dispatch too:

      @object>>.meth(@args) # calls one method on each

      ROLES
      Classes are primarily in charge of object management, and only secondarily in charge of software reuse. In Perl 6, roles take over the job of managing software reuse. Depending on how you care to look at it, a role is like a partial class, or an interface with default implementation, or a set of generic methods and their associated data, or a class closed at compile time

      You have multimethods, coroutines, continuation (special cases of wich are closures, backtracking...)

      Lazy contexts and structures ( @array = 55 .. Inf )

      Every block '{}' is try{}, and Exception handling is way easier than other languages.

      Junctions - if any(@array) == 5 { ... }, in other languages you will have to use loop for this. And they are
      available also for types i.e. NewType = Type1|Type2
      or : (1|2|3) + 4; # 5|6|7

      And yes you dont have to use if (...) {...}, you can use if ... {...}

      Hyperoperators - no more loop-in-loop
        (1,1,2,3,5) >>+<< (1,2,3,5,8); # (2,3,5,8,13)

      A real SWITCH operator, by this I mean something that I can really say .... YES that is expected from a switch.

      Multi-way comparison : if 0 < $x < 10 { ... }
      Cross operators : <a b> X~X <1 2> #'a1', 'a2', 'b1', 'b2'
      Reduction operators : [+] 1, 2, 3; # 1 + 2 + 3 = 6

      And this is just small part of it...
      Now tell me other language which has these features seamesly integrated into the language.
      One of the good things about implementing the Perl6 over Haskell (i.e. Pugs), was that alot
      of the functionalities available in functional languages could be experimented and nicely integrated
      into the Perl6...

  10. Death Valley by kahei · · Score: 2, Insightful


    There's a certain stage, for some projects, at which people realize that the Great Next Version, if it ever comes, will be too little too late, and that the action has moved elsewhere. For Perl that was 3-5 years ago. For Ruby, 2-4 years ago. For countless non-public projects, it happens; gradually, progress meetings become a bit of a joke, the smart staff get moved elsewhere, and Project Star (there's nearly always a project called 'Star') becomes something that still exists on someone's budget, but which nobody really expects to have to pay attention to. Sometimes there's a meeting about it and a status report tha reads like a State of the Onion; a bit of waffle, a few in-jokes, some words of encouragement, and then back to doing something else.

    Sometimes, this does _not_ happen. Vista (which by rights should have entered the Death Valley last year) and Java (which should have entered it after 1.2) manage to escape this fate; disappointment after disappointment they somehow stay in the spotlight, stay relevant in hearts and minds.

    The question is what to do with a project in Death Valley. In a company, someone usually eventually rolls out _something_ and declares victory so that everyone can forget about it. In open source, though, they _never_ administer the final blow. Look at CVS -- it's been in Death Valley for so long, people are beginning to think that _Subversion_ is old hat! Sure, people _use_ it, if they haven't moved on to something else yet, but the last interesting CVS news item was probably in the late 90s... and yet it jogs along... and now Perl jogs along beside it, in the gated retirement community of Open Source.

    I'm not saying it's a bad thing, but it is a definite difference between OS and commercial software; you get far more resources spent on the 'long tail' of a project's life in OS.

    --
    Whence? Hence. Whither? Thither.
    1. Re:Death Valley by 6031769 · · Score: 2, Interesting

      I agree with you entirely that the longer the "Next Great Version" takes the less will be the interest when it finally arrives, and that's generally a truism as well as applying specifically in this case.

      What differs with Perl is that Perl5 is such a good language (for those who actually use it) that its use and development will probably continue apace (as they have during this whole Perl6 dev cycle). I really like Perl, but the Perl I like is Perl5. By trying to turn it into an "all things to all people" language with the transition to version 6, it will doubtless lose a lot of that. If Perl6 ever does really officially see the light of day, I very much doubt that I will spend much time using it. Rather, the established Perl5 (and there is a hell of a lot of it about) will continue to be my primary focus.

      There are other examples of this, of course with "classic versions" of several apps (and even OSes) being run after newer versions have been produced because either the newer versions add no value or increase bloat or just take the system farther from that which it used to be (Yes, I'm talking about you, AutoCAD). There are also plenty of folks still using (even deploying) Apache 1.3 today and many of them have good reasons for doing so.

      So my point is that even though the direction and implementation of Perl6 may be flawed, it does not by any stretch mean the end of Perl as a useful and productive language with widespread appeal.

      --
      Burns: We're building a casino!
      McAllister: Arrr. Give me 5 minutes.
    2. Re:Death Valley by Anonymous+Brave+Guy · · Score: 3, Insightful

      You seem to equate a project that is no longer being significantly or quickly developed with a project that is pointless. Some of us would call tools like Perl 5 and CVS "tried and tested", "stable and reliable", or perhaps even "established standards".

      Now, me, I've followed Perl 6 development from a safe distance, reading the odd article here and there, but not spending too much time on all the details. I get the feeling that it's going to be too complicated to be worth the effort to switch, but I'll reserve judgement until there's a stable, polished implementation to experiment with.

      However, that didn't stop me using Perl 5 to develop a whole load of scripts to drive a new database system I was writing last weekend, or for that matter to write a couple of 50-liners to process some diagnostic output from the app I'm developing at work yesterday. I don't care that I didn't use the latest AJAXified web 2.0 technologies; I had a job to do, and Perl 5 let me do it quickly and correctly, which is all I ask of a programming tool.

      Incidentally, if Perl had its day 3-5 years ago, and Ruby 2-4 years ago, what do you think are the cutting edge programming languages of today?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:Death Valley by Abcd1234 · · Score: 1

      This could also be related to good ol' Second-system Syndrome, of which I suspect Perl 6 is suffering, at least in part.

    4. Re:Death Valley by Anonymous Coward · · Score: 0


      FWIW, Mozilla was in that stage for quite a while. One of the founders of it quit because they didn't ship on his imagined time frame.

      They didn't get to Mozilla 1.0 until three years after that.

      So, they should have just retired the product, right....?

    5. Re:Death Valley by edremy · · Score: 1

      Incidentally, if Perl had its day 3-5 years ago, and Ruby 2-4 years ago, what do you think are the cutting edge programming languages of today?

      Visual Age COBOL Get with the times man- everything old is new again.

      --
      "Seven Deadly Sins? I thought it was a to-do list!"
    6. Re:Death Valley by kahei · · Score: 1


      Hm, well, I don't really like cutting edge things, because I'm very lazy, and because so many things go from 'cutting edge' to 'dead' with no in-between. But in terms of where the interesting effort is going, I personally tend to think:

      PHP -- I know, I know. But there's a great deal of interesting webby work happening in it, especially if you like CMSes / knowledge sharing tools.

      C# -- Tons of stuff going on, a very powerful platform that is only just beginning to be explored, and then of course the fact that so many projects are being ported to it and that 2.0 was so different from 1.1 tends to generate activity as well.

      Java -- the language of academia -- so many algorithms are developed as Java and then repackaged or ported to other environments that Java continues to be the key place to look in a lot of disciplines.

      C -- still your one stop shop for system programming.

      C++ -- still your one stop shop for financial programming, game programming, and other areas where systems are both complex and performance critical, and also perhaps the language with the highest quality of technical software engineering being done in it (boost).

      In other words, it's not the newest and most interesting languages that have interesting work done on them. It's the same old languages as ever. I guess the relative newcomer is C#.

      I know what you mean about Perl5 vs Perl6 -- just because Perl6 is in Death Valley doesn't say anything bad about Perl5. All the same, I get the impression that PHP kind of stole Perl5's web crown at some point.

      --
      Whence? Hence. Whither? Thither.
    7. Re:Death Valley by 0xABADC0DA · · Score: 2, Informative

      Smalltalk and LISP, obviously. Like Merlin, they were born fully formed and age backwards, getting more and more relevant as time passes.

    8. Re:Death Valley by arodland · · Score: 1

      No, Perl 1-4 was the First System. Perl 5 is the Second System. Perl 6 is the Third System.

    9. Re:Death Valley by Anonymous+Brave+Guy · · Score: 1

      I feel like repeating my previous comment. Who says PHP is dead? That same database system I mentioned before has to provide some web access. After looking at the available options, it made far more sense to code that up using PHP than using "pure CGI" with a language like Perl. Again, it may not be the flashiest language on the planet, but it got the job done efficiently and effectively.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    10. Re:Death Valley by mrsbrisby · · Score: 1
      There's a certain stage, for some projects, at which people realize that the Great Next Version, if it ever comes, will be too little too late, and that the action has moved elsewhere.
      Maybe. But exactly how much time passed between perl4 and perl5? How about if we talk creation (i.e. the ability to create code in the respective languages)?

      It's amazing that people think we've been waiting for a while for Perl6. People have been writing in perl6 for a while, it just so happens that more still write in perl5. As it was, several years after perl5 showed up, we still saw perl4. I think that this better reflects where we are with Perl6.

      Given however, that like perl5 was to perl4, perl6 is more so like perl5 than perl5 is, we likely will be able to treat perl6 as /usr/bin/perl - something people most certainly have not been able to do- even between what would otherwise appear to be a minor version (python2.2 scripts not running on a 2.3 or 2.4 interpreter, for example).

      Best thing to do is not worry about it. If you want to say there's nothing to see here, then at least qualify it by pointing out there wasn't anything to see with perl5 either.
    11. Re:Death Valley by FrostedChaos · · Score: 1

      Yeah, PHP is strictly worse than Perl.
      PHP is "training wheels without the bike."

      Unfortunately, bad programming languages never really die. Even COBOL is still leaving its trail of slime at some mega-corporations.

      --
      "Any connection between your reality and mine is purely coincidental." -Slashdot
    12. Re:Death Valley by FrostedChaos · · Score: 1

      I like your description of "the gated retirement community of open source." There are definitely some projects that seem to fade away. Sometimes this is because the developers move on, and sometimes progress just seems to grind to a halt.

      Don't underestimate the inertia of established technologies, though. Some people are still using some variant of FORTRAN, the original compiled language developed in the 50s. Other organizations got stuck at the COBOL stage. There's still a small market for VAX gurus, VMS programmers-- you name it. No doubt academics will be the last people to abandon Java. I expect a lot of perl 5 code will keep chugging along for years-- maybe even decades, hidden here and there in server rooms around the world. Hell, bash scripting is still around, and that's about the worst language ever-- even BASIC might be better.

      Computer enthusiasts tend to evaluate computer technologies in terms of how productive they are. But to corporate leaders, often the only really important number is the cost of switching. As long as that is high enough, it's better to keep patching and duct-taping the stuff you've got, rather than putting out the money for a new system. It might take years to see the benefits from a new system, and corporate leaders are often under pressure to show short-term results.

      As long as there is enough money behind projects, they will NEVER die, no matter how boneheaded they may be. The next version of Windows will NEVER "enter Death Valley," because Microsoft needs to release something new, to get that nice load of cash from product upgrades, and to justify charging OAMs the Windows tax. Here on slashdot, we know that Windows 2000, XP, and Vista, are really just the same OS, give or take some candy-coated graphics and bloatware. But most consumers just buy the latest thing.

      People in the know, and smart businesses, know that there's certain products and technologies that are just deprecated for new development work. For example, why use CVS, when Subversion is all that and the bag of chips. Why use PHP, when it's just a broken subset of Perl. And why use Excel macros when you have... anything else. But to pointy-haired bosses, the world is a lot less clear.

      --
      "Any connection between your reality and mine is purely coincidental." -Slashdot
    13. Re:Death Valley by arodland · · Score: 1

      Who said anything about "pure CGI"? If you could do it in PHP, you could have done it in half the number of developer-hours with Jifty or Rails or that Django thing, or you could have done it more powerfully and reliably with Catalyst or Struts, or... whatever. PHP isn't an efficient or effective solution to the problem -- any problem really, when compared to other tools that are available; it survives because people are under the misapprehension that it is. :)

    14. Re:Death Valley by Anonymous+Brave+Guy · · Score: 1

      Your implicit assumption is that I am incompetent. I suggest to you, with no malice intended, that you will gain more from your experiences on boards like this if you seek to find out someone's level of competence before judging them.

      In fact, our entire web site is already generated using a customised, home-grown framework based on XML/XSLT and standard scripting tools, which serves our needs far better than any of the cookie-cutter frameworks you mentioned. All we needed was a way to drop a quick database-driven table into a web page, where the rest of the page is already generated by that existing framework. I did this in PHP in about five minutes, and two of those were modifying the build scripts to put .php files in the right place. I couldn't have achieved the same results with any of the other technologies you mentioned without (a) rewriting most of the system from scratch, and (b) learning more about one or another programming language with which I'm only passingly familiar at present.

      Maybe PHP isn't an efficient or effective solution to any of your problems. That's fine, go ahead and use whatever tool is best in your circumstances. Maybe if we were designing our whole system from scratch, with no existing framework, we'd have chosen another option as well. But in our current circumstances, PHP was just what we needed: a simple way to embed a little database scripting into web pages that are already generated using our existing tools.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    15. Re:Death Valley by arodland · · Score: 1

      How does your level of competence enter into anything that I said at all? Why should I care whether you invented the internet or you're a complete idiot? I wasn't discussing you. I was discussing programming problems and solutions. Although I do wonder a little bit how your system could be so good and not support having a little data-driven table dropped into the middle of an existing application. :)

    16. Re:Death Valley by Anonymous+Brave+Guy · · Score: 1

      How does your level of competence enter into anything that I said at all? [...] I wasn't discussing you.

      I'm sorry. When you wrote:

      If you could do it in PHP, you could have done it in half the number of developer-hours with Jifty or Rails or that Django thing, or you could have done it more powerfully and reliably with Catalyst or Struts, or... whatever.

      in response to my personal example involving PHP, I assumed that you were in the same conversation as the rest of us. As I have explained, I most certainly could not have achieved the same results in half the number of developer-hours with any of those other tools, for at least two good reasons. Moreover, the project I mentioned is a simple counter-example to your general claim that PHP is not an efficient or effective solution to any problem.

      Although I do wonder a little bit how your system could be so good and not support having a little data-driven table dropped into the middle of an existing application. :)

      I appreciate the smiley, but... It did support that. That's my point. For the avoidance of doubt, the SQL queries involved are the most complicated thing, well beyond the scope of the convenient one-liners typically offered by $TRENDY_FRAMEWORK. The few lines of PHP required in most of the pages to generate the various tables were about as simple as scripting gets, and slotted right in to the existing framework we had in place. Are you really arguing that it would have been more productive for me to recreate our entire existing database with a Rails-friendly schema, redesign an entire on-line, operational web site to use RoR conventions, translate all of our templates into suitable .rhtml files and the like, and then write essentially the same logic (SQL query/ies -> loop -> output table) in Ruby anyway? I'm good, but I'm not sure I could do that in five minutes.

      Seriously, this kind of argument, and the kind of general "PHP sucks" statements you made elsewhere, don't sound like the thoughts of an objective observer who's interested in picking the right tool for the job. They're more like the rants of someone who once worked on a bad project and blames the tool, or the evangelism of someone so enthusiastic about his favourite framework that he sees it through rose-tinted glasses.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    17. Re:Death Valley by ray-auch · · Score: 1

      So, they should have just retired the product, right....?

      They did. Mozilla the product is dead.

      http://developer.mozilla.org/devnews/index.php/200 6/04/12/sunset-announcement-for-fxtb-10x-and-mozil la-suite-17x/

      Firefox replaced it (from part of the same codebase - and note the JWZ doesn't say the code was bad) arguably precisely because they did exactly what JWZ says mozilla should have done and didn't - ie. shipped product early and often.

    18. Re:Death Valley by nojayuk · · Score: 1

      COBOL... lessee, you're a bank shuffling billions of dollars around every day, reconciling accounts after business has closed. You've got a pile of 30-year-old continuously maintained COBOL doing the shuffling and adding up those BCD dollar and cents.

      And then a whizzkid from down the corridor in the website support office suggests you abandon all that working, time-tested code and rewrite it all in some open-source incredibly cryptic code that looks like line-noise, that doesn't support native BCD, that...

      It's difficult to screw up COBOL code by putting a period in the wrong place, or missing out an ampersand. It won't compile, it won't run, it won't drop a billion dollars down a rathole. There's a reason it was designed like that and that is the reason it is still widely used.

      Why do some programming languages (C, Perl) have to be cryptic? It doesn't save much time in the compile, it produces executables that are the same size as non-cryptic languages like Pascal or COBOL. About the only reason I can see is it saves the programmer some effort at the keyboard. Is that all?

    19. Re:Death Valley by FrostedChaos · · Score: 1

      COBOL was designed around the flawed idea that programming languages should be similar to natural languages. This, of course, makes about as much sense as the idea that computer mice should be similar to the kind of mice that nibble on cheese.

      I agree that you need some kind of fixed-point representation for dollars and cents. In any civilized language, you would simply create a class that handles fixed-point math, and use that wherever you need fixed-point math. There isn't really any need for BCD-- it's just an encoding, and not a very efficient one, either.

      I think you need to understand that people can write obfuscated code in any language. Code is readable because it was designed well, not because it was written in language $FOO. That being said, some languages are better than others. Generally a strong type system, terseness, and clearly defined semantics make a good language. As far as I know, COBOL doesn't have any of those. Sorry.

      --
      "Any connection between your reality and mine is purely coincidental." -Slashdot
  11. Perl version should stay below 2 times Pi by wysiwia · · Score: 1

    This was a joking target in the development process for Perl6. It seems Larry will finally archive this goal even if he probably never intended. Larry changed Perl from 5 to 6 in a way too many people got sick and stayed with Perl5. Essentially there are now two distinct Perl dialects which will hamper it's success so there won't be a reason for passing the 2 time Pi limit.

    O. Wyss

    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
    1. Re:Perl version should stay below 2 times Pi by Anonymous Coward · · Score: 0

      Hell, I get sick if I eat only one whole pie.

  12. 6 - compelling reason? by scottsk · · Score: 5, Insightful

    What Perl 6 needs, and I haven't seen yet, is a compelling reason to switch. It may be better under the covers, but Perl 5 works great from a user's perspective. In fact, I've been using 4 and 5 over the past decade and a half, since '91, to craft almost everything. It's part of my nervous system. I've internalized it.

    So why would I switch to Perl 6? I'm just not hearing compelling reasons other than they've randomly changed a bunch of stuff so what I know doesn't work anymore or isn't optimal. The installed base of Perl 5 users is Perl 6's biggest enemy.

    This would be like changing vi keys to make them conform to the CUA standard or Emacs - it might be progress, but people are used to vi qua vi in its historical form and don't want progress because the standard keys are in their nervous systems now.

    1. Re:6 - compelling reason? by arodland · · Score: 1

      Well... there's the lazy evaluation and autolambda stuff that lets us steal some more of the best tricks from the functional programmers. There's the junctioning and type inferencing stuff that opens up something vaguely like logic programming. There's the OO and metaclass stuff that gives you a consistent object model, roles, multimethods, contract programming... the ability to have stricture like the Java folks do (Perl 5 offers a good number of opportunities to impose stricture, but when it comes to OO, it's all out the window. You can't enforce anything and if anything goes wrong, it will go wrong at runtime). Instead of regexes, you can use the new Rules system that's not only a zillion times more powerful, but also not complete punctuation soup, and a whole lot easier to write. What else am I forgetting? Plenty, I'm sure.

  13. Me too! by DG · · Score: 1

    I'm completely on board with this attitude.

    I **LOVE** Perl 5. It is, without question, the most useful and most powerful programming language I have ever encountered, and that includes C, C++, various assemblers, Pascal, FORTRAN, Java, REXX, Ada, Python... all the languages of the week. I keep coming back to perl because it is so damn useful and because it is so elegant (when used correctly - bad perl is really, really bad).

    My productivity would be a tenth what it is today if not for perl. I use it for everything from quick and dirty hacks all the way to major enterprise support applications.

    And I've seen Larry give "State of the Onion" presentations before, in person - and he's brilliant. Perl5 is the masterpiece of a genius.

    But Perl6... I don't get it. It seems like so much has been changed, just for the sake of change. If Perl5 is English, then Perl6 feels like Esperanto.

    I see no compelling reason to ever switch to 6 from 5 - unlike the switch from 4 to 5, which added a ton of real improvements.

    DG

    --
    Want to learn about race cars? Read my Book
    1. Re:Me too! by Abcd1234 · · Score: 1

      Actually, I think Perl6 will ultimately be a much better language in which to design large systems. It's object system is much more powerful (with Roles, which as I understand it act like a combination of interfaces and mixins), which will make it easier to build more modular software (P5's package system is useable, but let's face it, it's not particularly clean). Plus, things like optionally stricter typing and DBC-like functionality mean (hopefully) fewer bugs.

      Additionally, P6 expands Perl's functional capabilities, adding things like continuations, which could allow for Seaside/Rails-like webapp development.

      Lastly, Perl6 could end up being one of the few mainstream languages with parallelization semantics defined right in it's core, which means all these multicore machines that are coming out could be more easily leveraged.

    2. Re:Me too! by Evangelion · · Score: 1


      There are some good explanations around about why they're rewriting perl.

      FWIW, this is set of features that are being implemented in Perl 6 that Perl 5 lacks:

      explicit strong typing
      proper parameter lists
      active metadata on values, variables, subroutines, and types
      declarative classes with strong encapsulation
      full OO exception handling
      support for the concurrent use of multiple versions of a module
      extensive introspection facilities (including of POD)
      LL and LR grammars (including a built-in grammar for Perl 6 itself)
      subroutine overloading
      multiple dispatch
      named arguments
      a built-in switch statement
      hierarchical construction and destruction
      distributive method dispatch
      method delegation
      named regexes
      overlapping and exhaustive regex matches within a string
      named captures
      parse-tree pruning
      incremental regex matching against input streams
      macros (that are implemented in Perl itself)
      user-definable operators (from the full Unicode set)
      chained comparisons
      a universally accessible aliasing mechanism
      lexical exporting (via a cleaner, declarative syntax)
      multimorphic equality tests
      state variables
      hypothetical variables
      hyperoperators (i.e. vector processing)
      function currying
      junctions (i.e. superpositional values, subroutines, and types)
      continuations
      coroutines

    3. Re:Me too! by Jerf · · Score: 1

      Context: I've been professionally programming Perl for years now. I prefer Python.

      If you try Python again, and try to find ways of using the extra features it has that Perl either doesn't have, or are borderline impossible to effectively use, you'll actually get a better understanding of some of the value of Perl 6. Perl 6, at least on the feature checklist, will blow past Python if it manages to come out reasonably soon. (Whether or not it will be more useful remains to be seen, but I'm comfortably open-minded about that. Whether or not Python will also catch up in its own way, potentially before Perl 6 comes out, also remains to be seen; there has been longstanding interest in the Python world in many of the "optional static typing"-sort of things that Perl is adding, and Python will have the advantage of being able to see how Perl 6's design seems to be working out. Anyhow....)

      Python generators seem like a gimmick until the day you write a useful generator that would be literally 5 times longer and more complicated without the generator support. In the latest Python, these have been updated to full co-routines (although it was already possible to do the same thing by making a generator out of a method of an instance, this is somewhat cleaner and the interface will be shared and that's good). I believe Perl will be picking up this feature and more.

      Python's class system is a lot cleaner and I've found that once you wrap your head around metaclasses, they are a type of magic that can give a module an amazingly clean interface.

      And one of my long-standing complaints about Perl is that its hashes can only use strings as keys; the ability to directly and fully use objects as keys is incredibly helpful. (I know there are some modules to try to fake that in Perl but they always seem to have dangerous "gotchas".)

      The other nice thing that Perl 6 can offer that you can see in Python is simply that when these features are integrated and specified in the language, you can use them more fully to your advantage. You can write an iterator in Perl 5 and overload the <> operator to iterate on it, and I do. But libraries don't take iterators, they take "lists" or "hashes" or whatever. In Python, because the iterator support is built in, everything that in Perl would take a list for the purposes of iterating on it takes an iterator instead, which turns out to be incredibly flexible as you can now feed that function not merely an array, but an iterator that may pull things off the network, or feed it processed hash keys or values, or every process every node of a complicated data structure. (I've used that latter trick several times in a program with a tree-basis; create an iterator and specify the iterator's characteristics, then let the iterator worry about traversal while some other function does something to every node in the iterator, like save it to a file.)

      Perl 6 should be able to do all of these things and more, and believe me, if it ever comes out it'll offer real value once you learn what's going on. Expect it to take probably a couple of years for the community to fully work out which patterns are the best.

      In the meantime, Perl 6 is useless until it comes out. I hope it does, because it would definitely make my resume look a little more relevant.

    4. Re:Me too! by cerelib · · Score: 1

      I like the idea of implementing iterators in Perl, but you may be short-changing their usefulness. Look at the following script:

      open FILE, ";

      When an iterator(filehandle in this case) is evaluated in list context, in this case the context is "print LIST", it will iterate until exhausted and return a list. So this should print out the entire file whose name is passed in as the first argument. So, as you can see, an iterable object can be passed easily as a list. I hope that points you in the right direction. Context sensitivity is complicated, but it is what makes Perl especially powerful.

    5. Re:Me too! by Jerf · · Score: 1

      In other words, you can't pass that iterator around. Instead, Perl expands it fully into a list, and passes the list around.

      That's not passing an iterator, that's passing a list. Perl turns it into a list at the earliest available opportunity because nothing can handle getting an iterator. One of the key characteristics of an iterator is that it doesn't suck the entire file into memory all at once, even if you pass it into something else.

      To the best of my knowledge, you just can't quite get to Python cleanliness. In Python, "for x in y" implicitly calls "iter(y)", and iter() on something that is already an iterator returns the iterator itself. Thus, "for x on y" is actually pretty powerful. So far as I know, there is no equivalent Perl formulation, because you can write "for my $x (@TrueList)" or "while (my $x = <$MyIter>)", but there is no syntactic way to unify that into the Python equivalent without an explicit check or wrap. (And I have a "ArrayWrap" iterator that lets you write "while (my $x = <$ArrayIter>)", although if $x might be an "undef" that you want that gets tricky; Python has better support there, too.)

      I'd accept "while (my $x = <$UnblessedArrayRef>)" and live with the undef issue (I can guarantee no undef until the iterator is exhausted), but that doesn't work. (Just checked.) In Python the equivalent is still "for x in y". If I want to pass something an iterator that may either come from a list or a DB query, I have to manually wrap the list. (And I do that pretty frequently.)

      And since I have DB queries that may be large and I really, truly want to iterate, not pull the whole list down in memory (when the list is already in memory, I've either already guaranteed the list is short or already paid the price), I don't have the option of just blowing the thing out to an array.

      Perl has iterator support, but it's much thinner than Python's, and surprisingly it's more a syntactical problem than a language capability problem.

    6. Re:Me too! by chromatic · · Score: 1
      ...with Roles, which as I understand it act like a combination of interfaces and mixins...

      That's not really it. Mixins and interfaces are cut-down, minimal, crippled implementations of roles. A role-based system offers both mixins and interfaces trivially, but mixins or interfaces offer poor emulations of roles. Does that make more sense?

    7. Re:Me too! by chromatic · · Score: 1
      In other words, you can't pass that iterator around.

      Indeed you can. You don't get the iterator as the return value from a read operation on the iterator, but who would expect that you do?

      See the book Higher Order Perl for far more examples.

    8. Re:Me too! by Jerf · · Score: 1

      OK, that's what I get for taking people's examples at face value and not checking them.

      I've played around a bit more and found that while (my $val = <@something>) mostly does what I'm looking for, but I'm still not seeing an obvious way to take <@something> and get a reference to that iterator that I can pass somewhere else through syntax, rather than wrapping it in my ArrayIterator blessed-scalar class. Which means I still can't see a clean way to write a function to take an array or an iterator without writing a ref($it) eq 'ARRAY' check, which is still enough to keep libraries from supporting iterators in general, and the perl modules I'm seeing say that there hasn't been a consensus on what to do about this point, either.

      It's the little things that add up; there's a fundamental disconnect between "arrays" and "iterators" that is just barely enough to keep you from using one as the other routinely, which is what you need for extensive library support.

    9. Re:Me too! by chromatic · · Score: 1
      ... there's a fundamental disconnect between "arrays" and "iterators" that is just barely enough to keep you from using one as the other routinely, which is what you need for extensive library support.

      You're right about that. It's probably too late to fix that in Perl 5, though that does give me an idea.

    10. Re:Me too! by Jerf · · Score: 1

      I'd sing your praises and be happy to be wrong.

      I'll freely admit that I haven't thought the whole thing through and I'm not a language designer, but I'd submit having <> working on references to arrays the same way that it does on normal arrays would get me at least most of the way there, allowing me to pass a scalar that provides an overloaded <> or a ref to an array and have the behavior flattened. Currently, that's a "Not a GLOB reference" error.

      Enough that I'd wipe off the language support part of the advantage, anyhow. (Libraries would take some time but that's inevitable.)

    11. Re:Me too! by Raenex · · Score: 1
      Actually, I think Perl6 will ultimately be a much better language in which to design large systems.

      The problem is that people who think that Perl is not good for designing large systems have long since moved on to other languages. People who think that Perl5 is great as is are not going to like the Perl6 features. So Perl6 ends up pleasing nobody.

      Perl5 serves a useful niche. I still reach for it when I want to code up something quick and dirty. The Perl development community should have focused their efforts on refinements, not changing its identity. Simple stuff like moving more functionality into the standard library.

    12. Re:Me too! by chromatic · · Score: 1
      The Perl development community should have...

      The Perl development community has welcomed patches for nearly 19 years now. I believe you forgot to preface your humble opinion with "In my humble opinion as a non-contributor and someone who has used the work of hundreds of contributors (who know much better than me and thus may very well be in very good positions to disagree with my humble opinion) for many years for free...."

      (Being one of those hundreds of contributors, I laugh when you say "simple" and dare you to prove it.)

    13. Re:Me too! by Raenex · · Score: 1

      I don't have humble opinions, and I don't avoid critiquing stuff even when I have not contributed. I'm sure you're no different.

    14. Re:Me too! by chromatic · · Score: 1
      I'm sure you're no different.

      I'm willing to continueto earn the right to have people care about my opinions by producing code, patches, documentation, bug reports, test cases, articles, presentations, tutorials, and books.

      Pick one of those. Show us all how easy it is.

    15. Re:Me too! by Raenex · · Score: 1

      So, you've never critiqued a volunteer project without giving back?

    16. Re:Me too! by singollo · · Score: 1

      I have sympathy with this viewpoint, but committed contributers frequently get the kind of tunnel visions that make big picture criticism less likely.

    17. Re:Me too! by chromatic · · Score: 1

      Indeed I have, and it was as wrong for me to do so as it is for you. Where's your patch?

    18. Re:Me too! by chromatic · · Score: 1

      How frequent is it? I could come up with a whole article full of criticisms of Perl 5's design and implementation (What is Perl 6 is a start). I wouldn't have seen everything Larry has seen, for example, but he's a lot better at designing languages than I am.

      My experience is that a lot of project have wishlists with big and small items. Granted, the big items tend not to be radical rethinkings (as in the case of Perl 6), but I'm not sure it's as insular as you might think.

    19. Re:Me too! by Raenex · · Score: 1

      Have you provided patches for all those you have wronged?

    20. Re:Me too! by singollo · · Score: 2, Interesting

      I realize there is a range of acceptable criticism within a community, and Perl has a community that is probably more inclusive than most. However, "show me the patch" is a bit of a cop out. Don't get me wrong; it is a defensable position, but a willingness dismiss everyone without a fix makes it more likely they will go elsewhere. Look at (Common) Lisp.

      P.S.
      I love Perl and Lisp, but people tend to get defensive about sore spots. I sometimes think that it would have been easier on everyone to introduce Perl 6 as "concept car", rather than an upgrade path.

    21. Re:Me too! by chromatic · · Score: 1

      I don't mean to say that the only acceptable form of contribution is a patch. A bug report, a test, a question for the FAQ, a helpful answer on a mailing list or forum, a piece of documentation, an article, a tutorial, a book, or anything else constructive is absolutely fine.

      Complaining in a completely unrelated forum without any apparent understanding of the issues or willingness to be a part of the community (by contributing anything) is completely useless. I don't see why the people who do contribute have any obligation to listen to such opinions, much less care.

      I'm perfectly willing to dismiss uninformed, ignorant opinions from people who demonstrate clear refusal to be part of the community. They can still use the software I help create and document anyway.

    22. Re:Me too! by chromatic · · Score: 1
      It seems like so much has been changed, just for the sake of change.

      It hasn't. Everything that has changed is to make the default easier or more sensible, to exploit similarities in similar features, or to enable more powerful features.

    23. Re:Me too! by oliderid · · Score: 1

      Me too, :-)

      I use Perl 5 mainly for quick and dirty scripts. Most of the time I find a good CPAN module to begin with. I won't use it for large scale projects. I find rather difficult for Object oriented programming. I tried it on a middle-size project. the Bless thing is difficult to understand. The syntax is too weird for me. This part of perl5 looks more like hack than an useful and an efficient tool. I find it extremely difficult to track bugs during the development process for example.

      I know Larry wall doesn't like it. : I hope Perl 6 provides a better structural (and authoritarian) way to organize your object oriented code (I have never tested it so far). If the syntax looks less like a kaballistic incantation, it will surely help in my case too.

    24. Re:Me too! by Anonymous Coward · · Score: 0

      I'm willing to continueto earn the right to have people care about my opinions by producing code, patches, documentation, bug reports, test cases, articles, presentations, tutorials, and books.

      "My opinion matters, because I'm a self-aggrandizing hack with an agenda."

      Yeah, right. If your over-hyped systems don't do what they claim they do; if your lies and self-promotion don't match reality, if Perl is **NOT** the be-all and do-all that people like you claim it is, you then get vindictive, and dismiss any argument against your false claims about Perl's validity as "not being part of the community".

      Stop the hype, and we'll stop the criticism.

    25. Re:Me too! by chromatic · · Score: 1

      Criticize all you want. My points are very simple.

      One, every feature in Perl (or any other F/OSS project) is there because someone put it there. If you want a feature, make it happen somehow. If you don't, you're probably not going to get it. Complaining that it should have been there years ago almost never works.

      Two, people who've actually contributed to a project tend to know a lot more about the project and its development than people who haven't.

      Criticize all you want. Just don't think that the people who actually do the work confuse your opinions for anything useful or informed.

  14. Perl is so 90s by Anonymous Coward · · Score: 0

    Perl has had its day. It was something special a few years back when it was seemingly the first big, really usable, dynamic scripting language. I think it could have had a future, if they hadn't gone into this whole Perl 6 fiasco. I mean, I can't see how anyone is going to wait around for... what... 4 years or something now, and it's still not generally available?! Plus, most businesses have never been big on adopting new technology which Perl 6 will be, so even once they release it it'll probably be 2 to 3 years before there's much chance of seeing it in the wild. Meanwhile, Ruby and Python have been moving along and gaining all of the Perl dropouts. I gave up on Perl about the minute they started with Perl 6. Man am I glad I did. I couldn't stand the thought of programming in a language that was guaranteed to be replaced (Perl 5) while waiting years for something that may or may not be better (Perl 6) but that would certainly be different enough to cause me to have to relearn things and port my old stuff.

    1. Re:Perl is so 90s by SanityInAnarchy · · Score: 1

      Ruby and Python have the same problem Perl5 does. Not that they will be replaced, but that after their one, big innovation, they aren't really going anywhere.

      Ruby, for instance, still doesn't have a bytecode engine, much less real compilation. I thought it was beautiful, but the beauty is skin-deep -- it's a bastardization of lisp in perl's clothing. I haven't looked at Python in awhile, but I'm guessing, in terms of power and readability: perl5 < python < ruby < perl6.

      --
      Don't thank God, thank a doctor!
  15. The book by rduke15 · · Score: 1

    And here is the draft cover of the Perl 6 book

  16. The _real_ perl news this week... by prufrax · · Score: 1
  17. good summary by oohshiny · · Score: 2, Insightful

    Sadly, I think that photo essay just about sums up the state of Perl these days.

    Hint: pictures of the grandkids is not what people with deliverables and deadlines want to see.

    (I probably started using Perl more than 15 years ago. Perl was the best thing since sliced bread then, because it provided a cleaner and easier to use alternative to writing scripts in combinations of shell, awk, sed, tr, and a few other command line tools.)

    1. Re:good summary by mrsbrisby · · Score: 1
      I probably started using Perl more than 15 years ago. Perl was the best thing since sliced bread then, because it provided a cleaner and easier to use alternative to writing scripts in combinations of shell, awk, sed, tr, and a few other command line tools.
      And so what exactly became a cleaner and easier to use alternative to writing scripts in combinations of shell, awk, sed, tr, and a few other commandline tools?
    2. Re:good summary by oohshiny · · Score: 1

      There half a dozen mature, widely used post-Perl scripting languages; take your pick.

    3. Re:good summary by mrsbrisby · · Score: 1
      There half a dozen mature, widely used post-Perl scripting languages; take your pick.
      No, I wanted to take _your_ pick, smartass. I'm not even aware that there is another language with a find . -name ... -type f -print0 | xargs -0 perl -p -i -e 's/"$//' analog. And a perl -n -e 'BEGIN {srand} rand($.) < 1 && ($line = $_); END { print $line; }'. And let's not forget ... | perl -n -e '$total = $total + $_; END { $total =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d ))/$1,/g; print "$total\n"; }'

      I know that isn't terribly readable, but it's extremely writable, and serves as a very useful replacement for awk/sed/tr/head/tail/expr/etc.

      But you say there are a half-dozen mature languages that do all these things with as little typing? I say prove it.
    4. Re:good summary by Anonymous Coward · · Score: 0

      It's meant to be a joke. People also like to have fun once in a while, you know.

  18. SORRY, FIXED CODE by cerelib · · Score: 1

    Okay, it looks like /. strips stuff out of plain old text. Let's try this again using (LT) and (GT) instead of the less than and greater than markups:

    open FILE, "(LT)$ARGV[0]";
    print (LT)FILE(GT);

  19. The version after Perl 5 is Python by Animats · · Score: 4, Interesting

    Perl 6 is a step forward from a language design perspective. A big step forward. Such a big step that, if you're going to change, you may as well go to Python and dump the Perl uglyness.

    The real problem with Perl is that it's a good language for small programs, but 10,000 lines of Perl is a mess unless you're a very disciplined programmer. The "there's more than one way to do it" is hell on maintenance programmers, because they have to know everything in the language to read code. Nor is reading Perl easy. I used to need three different Perl books when doing maintenance programming, because no one book, including Larry Wall's, covered everything in the language.

    Perl made the Web happen in the same way that Basic made the PC happen. We're grateful to Larry for giving us this tool. Now it's time to retire it and look at the pictures of the grandkids. Thanks.

    1. Re:The version after Perl 5 is Python by chromatic · · Score: 2, Interesting

      I think you have a typo. Let me fix it for you:

      ... but [the equivalent in any language of] 10,000 lines of Perl is a mess unless you're a very disciplined programmer.

      Assuming, as a rule of thumb, that a line of Perl is equivalent to ten lines of C, would you expect an undisciplined programmer to maintain 100,000 lines of C code with ease? Me neither.

      The "there's more than one way to do it" is hell on maintenance programmers, because they have to know everything in the language to read code.

      No, they only have to know the idioms used in the code to read that code.

      Suppose you take a job as the Mandarin-to-English translator for a large set of documents. It helps if everyone wrote at a sixth-grade reading level. It helps if every writer used the same local dialect. It helps if you can read Mandarin. If none of those are true, you and your employer have a severe problem.

      I don't see why programming is any different.

    2. Re:The version after Perl 5 is Python by melonman · · Score: 1

      I know a lot more about perl and about python, but I've just spent half an hour looking around, and I can't find anything remotely resembling CPAN, which seems like one extremely good reason to stick with Perl. The nearest I can find is a static list of modules on the python.org site that, in total, is about a tenth the length of the CPAN list of XML-related modules alone.

      CPAN is another reason why your "10,000 lines of code" thing doesn't work. Larry Wall's "laziness" principle says that you use other people's modules whenever you can, and the result is often a script consisting of a list of includes of well-documented third-party modules followed by a very short piece of code that uses those modules.

      --
      Virtually serving coffee
    3. Re:The version after Perl 5 is Python by budgenator · · Score: 1

      10,000 lines of Perl is a mess unless you're a very disciplined programmer
      you say that like 10K of undisciplines anything isn't, I know people who can turn 1,000 lines of COBOL into a mess. Programmer discipline isn't a function of the language used.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    4. Re:The version after Perl 5 is Python by try_anything · · Score: 1
      Programming is different. Your example of needing to know local and dialectical idioms is misleading, because programming language idioms are more abstract and harder to learn than natural language idioms. (I assume you didn't intend the more general use of the word "idiom.")

      A natural language idiom is essentially an item of vocabulary. "Flying off the handle" is a natural language idiom idiom; it is complete and includes no new systematic way to vary its meaning. A programming language idiom has any number of opportunities for parameterization and may require learning new language concepts that were not necessary to understand before. So the difference is between learning syntax (and language features) and learning vocabulary. With that established, I think there are three drawbacks to having such a rich set of language syntax and features that users consistently find themselves confronted with novel "idioms":

      First, syntax and features are harder to learn than vocabulary. Vocabulary is provided in lists for memorization; grammar is described at great length (or defined mathematically) and cannot simply be memorized in bulk. Learning new syntax requires establishing a new habit of thought, which must be practiced and reinforced before it can be used naturally. New vocabulary items (classes, functions) are just as easily forgotten but much more quickly grasped. (That is, unless the language requires the use of mind-bending vocabulary, like Haskell Monads.)

      Second, language syntax or vocabulary can be designed for straightforwardness and quick learning or for power in the hands of a master. Perl language features, especially the ones that one tends to encounter for the first time in unfamiliar code, are of the latter kind. (Not that Perl is unusual in this... quite the contrary.) One can't simply look them up, read the definition, and return to work thirty seconds later.

      Third, good practice dictates that a programmer document any language extensions (syntax or vocabulary) that he or she defines and expects others to understand. Appropriate documentation is provided given the expected knowledge of the users. Standard language features are exempt from this practice, however, leaving the users of source code to find their own documentation, which will likely be the standard documentation of the language feature in its full generality, the grokking of which may in itself be a larger project than the perusal of the original code should have been.

      It is my opinion, based on a few efforts to use Perl 5 as a scripting and glue language, that Perl repays only those who consistently use the language and have no reservations about getting deeper and deeper into it. It is not possible to exclude or ignore the full diversity of the language when estimating the cost of using Perl, because circumstances can and eventually will force you to learn every feature. This happens even if you do not modify or support other programmers' code, because documentation -- of libraries, of programming techniques, of the language environment, and of language features you do want to use -- so often takes the form of code. What you learn and do not use in your own code, you may forget only to be forced to relearn it later.

      This is a drawback of the language, but not necessarily a flaw that needs to be corrected. The same thing is true of C++, which I use quite happily because I accepted (and continue to accept) the necessary commitment. The size and complexity (aka "diversity") of the language is a burden as well as a treasure chest. It is simply the downside of a language design choice which should be noted as part of the essential personality of Perl, as it is for C++.

    5. Re:The version after Perl 5 is Python by try_anything · · Score: 1
      "Flying off the handle" is a natural language idiom idiom

      Oops. I meant nothing special by "idiom idiom;" it's just a typo that slipped through.

    6. Re:The version after Perl 5 is Python by chromatic · · Score: 1
      Your example of needing to know local and dialectical idioms is misleading...

      Perhaps I was a bit unclear. I didn't mean only the idioms of the language, but also the idioms of the problem domain. I'd make a terrible programmer for insurance or payroll software because I've never worked in either industry.

      That's something no language can completely solve, and yet another thing that depends on the discipline and standards of the entire team who created and maintains the software.

    7. Re:The version after Perl 5 is Python by Anonymous Coward · · Score: 0

      Very well :),

      But this Perl diversity gives it one great advantage which if used properly is prefebale for me.
      TMDOWTDI design pattern give perl programmers the ability to morph the language as they grow,
      both the idividual himself and the community as a whole. What I mean by this look for example at
      Java they thought from the begining that they can design the language for everything, but as
      it grow they find themselves in a situation they have to bastardize backward compatibility and
      to invent features in the language that change more or less the initial design.
      (Very simple not representative example if the use of @ary in perl is bad, why they used @ for annotation
      this makes the code more unreadable 'cause they started to add line noise.)
      Not so familiar with Python, but I think the same goes for it too, sooner or later they come to start to
      use all available ASCII symbols like perl did or go the other way PHP/Java start using ridiculosly long
      function/method names.
      Now tell me how long Perl5 stays the same language(compatibility), not only that the framework(CPAN) and
      modules you have used X years ago are the same on top of that you have many new one.

      Now can you tell something similar for PHP,Python,Java ...true they stay compatible with themselves but
      for much shorter periods of time.

      If you look at it this way learning Perl is better investment for the time.

  20. Speed. by SanityInAnarchy · · Score: 1

    Parrot will be much faster than Perl5 is now, and you will be able to run all your old Perl5 code with Ponie.

    Parrot may also become the standard VM for "dynamic" languages, like Python and Ruby, and there are already many implementations of many languages running on Parrot.

    This means that you can learn Perl6 slowly, and only use it for new code, and delay rewriting your old code for as long as possible. But there are many other reasons Perl6 will be not just good, but amazing, if I'm to believe what arodland is saying.

    --
    Don't thank God, thank a doctor!
  21. Re:Huh? by texwtf · · Score: 1

    That sounds reasonable, however because perl is so flexible the intent of a programmer
    is much more difficult to decipher because there are so many ways of accomplishing the same thing. It truly lends itself to spagghetti code in a way other languages don't.

    I wish that weren't the case. It's definitely possible to write good, maintainable perl. But it's the exception, not the rule. 10000 lines of the average perl program are much harder to read than the equivalent in e.g. python.

    Just my experience.

  22. Dream on by joe_n_bloe · · Score: 3, Insightful

    The real problem with Perl is that it's a good language for small programs, but 10,000 lines of Perl is a mess unless you're a very disciplined programmer. The "there's more than one way to do it" is hell on maintenance programmers, because they have to know everything in the language to read code. Nor is reading Perl easy. I used to need three different Perl books when doing maintenance programming, because no one book, including Larry Wall's, covered everything in the language.

    Having worked in a production environment where hundreds of thousands of lines of Perl written by fewer than 50 developers have run with extreme reliability 24x7 for years, supporting a company of tens of thousands of employees worldwide, I feel confident in saying "you have no idea what you're talking about."