in reply to Perl 6 critique is a good thing

If there is anything that the open-source movement has taught us, it's that getting users actively involved in the development leads to better software. It also slows things down a bit when there are disagreements.

I think debate and discussion on the merits of Perl 6 is rather useful. I only hope that people don't get so mired in debate that progress is effectively halted, or that the core developers get fed up and stop listening.

As for the cited critique... Fish's critique comes of as whiny, but he does make some interesting points. I have some concerns about the significant changes to the language that will break Perl 5; I have a large quantity of deployed Perl5 code that will need to be maintained, and I worry that it will quickly become "legacy" code as Perl6 becomes the language that future programmers learn. There are, in fact, many changes to Perl6 that are (IMO) better than the Perl5 way -- but, they will cause problems for maintaining old Perl5 code.

I have to wonder why the Perl6 team has decided against including Perl5 backwards-support through a use pragma. How nice it would be to:

sub old_perl5_style_code { use perl5; #code ... }
radiantmatrix
require General::Disclaimer;

Replies are listed 'Best First'.
Re^2: Perl 6 critique is a good thing
by Ven'Tatsu (Deacon) on Oct 18, 2004 at 15:31 UTC
    I'm not sure why they chose not to include a pragma to switch to Perl5 parsing, but Perl6 syntax is supposed to be mutable, so you could see it happen.
    That said you will be able to do
    use Old::Perl5::Style::Module; #I'm assuming this exports old_perl5_st +yle_code by default old_perl5_style_code();
      This was discussed in the thread spawned by node "Ensuring forward compatibility". In summary, the answer is that if you mention the keyword 'package' then the interpreter knows you're talking in perl5.

      So consider package main; to be equivalent to use perl5;. And, of course, all your existing modules already have a package so will Just Work <cough><splutter>.

        package main; isn't quite equivalent. The use perl5; statement could be placed inside a local block -- that would aid developers moving from Perl5 to Perl6, as they could do complicated things the "old way" until they can figure out the Perl6 equivalent.

        I think that's well in line with "make the easy things easy and the hard things possible".

        radiantmatrix
        require General::Disclaimer;
        "Users are evil. All users are evil. Do not trust them. Perl specifically offers the -T switch because it knows users are evil." - japhy
      I'm not sure why they chose not to include a pragma to switch to Perl5 parsing

      A pragma isn't necessary. The heuristic they use is extremely simple. Perl 6 does not have packages. If some code has a package statement in it, then it must be Perl 5.