Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: What's wrong with Perl 6?

by Corion (Pope)
on May 10, 2007 at 13:56 UTC ( #614634=note: print w/ replies, xml ) Need Help??


in reply to What's wrong with Perl 6?

The main thing wrong with Perl 6 is the name. It poses as a version upgrade like from Perl 4 to Perl 5, but it's a completely different language with largely incompatible syntax.


Comment on Re: What's wrong with Perl 6?
Re^2: What's wrong with Perl 6?
by TimToady (Parson) on May 10, 2007 at 23:04 UTC
    Gee, if the name is the main thing that's wrong with it, maybe I can just ignore all the other problems. :-)

    Seriously, what makes Perl Perl? If someone decides I'm ugly and beats my face to a pulp, and later I get a face transplant, am I still me? If my bones rot and are replaced with synthetics, at what point am I a different person? Syntax is just skin. Semantics are just bones. Neither is the soul of Perl, which rests in the realm of pragmatics.

    Maybe it would help if you thought of Perl 6 as something more like Perl 16 or so. We're just trying to skip over the 20 years of deprecation cycles and dead ends it would take to evolve Perl 5 into Perl 16 piecemeal, even assuming that were culturally possible, which it really isn't. Plus I'm too Impatient to wait that long.

    I've also seen what happens to other languages that change their name. They basically lose their branding, and have to start all over. I'm too Lazy to do all that work again. Plus there's a longstanding cultural assumption that major version numbers indicate incompatible changes, despite the recent trend for marketeers to pretend that great strides have been made when they haven't.

    Another factor is that four letter words are in short supply, and we shouldn't use them up so quick, especially for things we really want to use four-letter words on. :-)

    But overriding anything else is the fact that I think I have a moral claim on the name, and I want Perl 6 to be considered a better Perl than Perl 5. Call it Hubris if you like...

      what makes Perl Perl?
      In no particular order:
      1. Perl is context-based, or context-sensitive, or it decides what to do on code depending on in what context I expect my code to be treated (well, in the set of contexts Perl understands)
      2. Perl allows me to code in the *first way* that comes to mind to solve a problem, yet allows me later to improve the solution in *another way*.
      3. Perl makes it easy for me to visually distinguish variable types and interpolate them in string. This is one of things that made me fell in love in my early Perl days.
      4. Perl allows me to have as many namespaces as I like (or need) and arrange them in a nested fashion. I can have them in one file, or in their own files. (I just can't stand to say CGI_Application_Plugin_Authentication_Driver_DBI).
      5. Memory management. Well, this one was actually less relevant for me until I know (by literature) the pain in manually allocating and deallocating memory. So my praise to those who implement Perl in C but can stand the pain :-) (They can, can't they?)
      6. Garbage collection, see also note about MM. I don't care whether it's implemented with reference counting or mark & sweep, or other techniques, as long as Perl provides GC.
      7. CPAN, enough said :-)
      8. Unimitable Regular expression
      9. Optional parentheses, semicolons, and commas as long as they're not required
      10. I love one-liners
      11. Optional return in subs (TheDamian advices againsts it (PBP 9.11), though.)
      12. POD!
      13. Free-form syntax structure
      14. Short-circuit in logical operators
      15. (I don't know how to name this) EXPR if STATEMENT and other statement modifiers friends (Updated per blazar below)
      16. Closure, anyone?
      17. Arbitrary (bare or named) block usage
      18. Nested scoping

      (Well, I can go on but that's what I can think of now. I could add TimToady's onion speaks but I'm afraid it's too much personal)

      If Perl 6 preserves those characteristics, there's no reason to say Perl 6 is not Perl despite the change on the syntax. For example, I don't mind to write @array[1] instead of $array[1]. It's still Perl. And of course I can't mind to write:

      given ($some) { when 'body' { 'has to fight' } when 'thing' { 'has to give' } when 'day' { 'they will know the truth } when 'where' { 'in a very near place to their mind' } when 'time' { 'can only tell' } default { 'yes, there is always a space for default' } }
      In the mean time, the only thing I can do now is stay with Perl (5) until the day when we do have that better Perl than Perl 5. In the future, we won't call it Perl 6 anymore, just Perl.

      Update: now that I remember more, I added number 13 onward.


      Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

        Perl allows me to code in the *first way* that comes to mind to solve a problem, yet allows me later to improve the solution in *another way*.

        Completely agreeing and pointing out so to underline the nice way into which you put this concept, which is often implicit!

        Perl makes it easy for me to visually distinguish variable types and interpolate them in string. This is one of things that made me fell in love in my early Perl days.

        Hehe, you will certainly fall in love with the twigils for even better visual distinction and the new finely-tunable interpolating rules, although I bet :qq will do the job 99.9% of the time.

        Perl allows me to have as many namespaces as I like (or need) and arrange them in a nested fashion. I can have them in one file, or in their own files. (I just can't stand to say CGI_Application_Plugin_Authentication_Driver_DBI).

        I'm not really sure if I understand what you mean. You are aware that in Perl 5 Foo::Bar::Baz bears no relationship to Foo::Bar, arent' you? What do you mean with "nested"?

        Unimitable Regular expression

        Oh, inimitable but not unimprovable. Indeed Rules smell like they will be impressive. More power and more clarity at the same time!

        Optional parentheses, semicolons, and commas as long as they're not required

        Agreed to the highest degree for parentheses. I even find myself doing stuff like (func $arg) rather than func($arg) in expressions in which I can't avoid them. That's just me, of course. Half hearted about commas, which is often at the end of a multiline list. Not really agreeing on semicolons, except in subs like

        sub foo { Very::Simple::code @_ }
        (I don't know how to name this) EXPR if STATEMENT and friends

        "Statement modifiers."

        Closure, anyone?

        Stay tuned with 6 for more FP-like fun. Personally I'm quite fond of the [ ] meta-operator.

        Nested scoping

        Do you really see that as particularly perlish? I'm currently a Perl-only kinda guy, but I would rather qualify it as quality typical of most modern enough programming languages that are serious about themselves...

      We're just trying to skip over the 20 years of deprecation cycles and dead ends it would take to evolve Perl 5 into Perl 16 piecemeal ...

      Pardon me if you've answered this before, but what exactly about Perl 6 would give it such longevity?

        He didn't say it would last 20 years, he said it skipped 20 years of slow advance in favor of breaking backwards compatibility in one switch stroke, err well not switch, but you get the idea. Although 20 years of advance might look better than 7 of waiting.


        ___________
        Eric Hodges
        Surely the concept(*), which is to implement a glue between human languages and computer language (=machine code), i.e. providing solid bridges between the two realms, incoporating linguistics. That's what perl is for me, all the sigil and operator renaming and bracket, dot and whitespace whirlpool is just like the readjustment of an artist's palette after the blue period.

        Adapting the latest findings of CS to Perl (or vice versa) to the above outlined is a task which earns anyone undertaking it my deepest admiration (could anybody help me out to express that in proper english? darn.)

        (*) to my understanding, which might be far from accurate

        --shmem

        _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                      /\_¯/(q    /
        ----------------------------  \__(m.====·.(_("always off the crowd"))."·
        ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
      Syntax is just skin
      Linguistic determinism is the idea that language shapes thought. As a hobbyist in the J programming language I disagree that syntax is just skin... sure they could all compile down into the same parse tree, but, but... ummm.. well, I still disagree :)


      Carter's compass: I know I'm on the right track when by deleting something, I'm adding functionality

        Well, I don't know about you, but I value my skin highly, and prefer it not to have warts. Nevertheless, I don't confuse my skin with my soul.

        By the way, linguistic determinism is not just about syntax. If it is to be a limiting factor, it must be about a language as a whole, including phonology, morphology, semantics, pragmatics, lexicon, and if you're exceptionally lucky, a culture. As someone who liked to play football when I was younger, I can vouch for the fact that I did a lot of non-linguistic thinking when running down the field deciding how to fake out the pass coverage. I certainly don't believe in the strong Whorf-Sapir hypothesis. And as to whether J proves or disproves your point, much of that language is ultimately derived from mathematics, and even in that realm the algebraicists will disagree with the geometers over how much linguistics has to do with mathematical thought.

        But what really has me curious is why you quote Carter's Compass in your signature but refuse to let me apply it to Perl 5. :-)

Re^2: What's wrong with Perl 6?
by varian (Chaplain) on May 11, 2007 at 09:04 UTC
    Corion ++ you hit the nail on the head IMHO !!
    Perl6's name implies that it is the next version after Perl5. Now such claim could safely be made if Perl6 largely builds on the syntax and architecture of its predecessor Perl5. However from what I have seen it appears that Perl6 is highly incompatible with Perl5, some very core constructs have changed semantics, all in all it simply is a different language.

    Now I will not comment on the quality of Perl6. No doubt it has its merits given the development efforts and the experienced team of developers. It may well be a superior language to Perl5.

    The real issue here is that by naming the new release Perl6 it degradates its predecessor Perl5 to an 'older now obsolete' release and it cuts off the natural path to an upwards-compatible 6.0 release. Now this may or may not be the intention of the Perl6 development community but it simply does not do justice to the Perl5 achievements, the installed base and happy Perl5 developers. It makes non-Perl programmers weary to start with Perl(5).

    My plea would be to rename Perl6 to something else. Call it Perl++ or Perl# if you have it, just don't imply that it the next release that builds upon Perl5. If Perl6 is the best thing since sliced bread then over time developers will jump on that bandwagon anyway.
    Meanwhile let's not kill Perl5.

      Howdy!

      That objection seems to be grounded in some ignorance (in the technical sense of simply not knowing).

      It is not unheard of for a major version change to favor new/better features over backward compatibility. If I recall correctly, help with smoothing the path from Perl 5 to Perl 6 is part of the effort. Further, while there are significant changes and (one hopes) improvements in the upgrade, the language appears to look Perlish, much in the manner that a Mustang looks like a Mustang, even through multiple iterations of style. There are key elements that say "I'm a Mustang" or "I'm Perl".

      Further, it is not clear that Perl 5 will die anytime soon. One can expect an extended period where both versions are being developed. People with considerable investments in Perl 5 code will tend to be reluctant to jump on the Perl 6 bandwagon right away. Others will simply be leery of change. There will probably remain a considerable mass of interest in Perl 5 for some time.

      I'm grateful that Perl 6 is simply the next major version of Perl. Perl++ or Perl# would be Just Wrong. 6 is the next number after 5. Skipping to 16 would be another piece of "my version number is now bigger than yours" tomfoolery (Sybase, anyone?)

      yours,
      Michael
        Sybase "only" went from almost 5 (4.9.2) to 10, and from 12.5 to 15... MS went from 7 to 2000 :-)

        Though I still agree with you.

        Michael

        It's funny that you compare it to the ugly new Mustangs. You're right that it looks Perlish, but looking at this example from this article, my first guess would probably be Ruby or maybe Java (I don't actually use either of those languages) since the only real clue to its Perlness are the variable symbols, which apparently are used opposite to the way we're used to.

        I haven't been programming Perl for that long, but was the change from 4 to 5 anywhere near this dramatic? I know PHP 4 to PHP 5 wasn't a huge deal, and I don't think VB 5 to VB 6 was either.

      I don't know what "Perl6" and "Perl5" are, but I sincerely hope that Perl 6 at least will kill Perl 4.

      Update: Elided objectionable part of the post.

        "Perl6" is how you write "Perl 6" if you have searched with a computer much. Most humans don't have a problem with seeing some big difference between the meaning of "Perl6" and "Perl 6"; computers aren't always as intuitive.

        - tye        

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://614634]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (9)
As of 2014-09-19 18:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (144 votes), past polls