Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Musings on the future

by zshzn (Hermit)
on Sep 16, 2007 at 19:38 UTC ( #639289=perlmeditation: print w/replies, xml ) Need Help??

Any current discussion on the topic of the future of Perl has to centre around Perl 6. Perl 6 is the light at the end of the tunnel, that beautiful and optimistic language that we have waited so dearly for.

For the moment, I am tired of hearing about it. I don't want to discuss it. Yet eventually I do. I can't really just ignore it regardless of how much I try. I can't even think anything new about it. Perl 6 has been coming for so long that we have thought all that there is to think, multiple times! We are ready!

Perl 6 is here already, in some senses. As a language it is generally defined. We even have an implementation: PUGS. But Perl 6 is not here, it is not done. We await the day when Perl programmers around the globe can shout from the rooftops, "Hark one, hark all! Perl 6 is here! The language ye have waited for has arrived. Perlers, progress! Others, drop your Ruby and Python upon thy floor and return hence!"

Alas, that day has yet to come. When will it? Not soon enough to put a month on it, but, if we are lucky boys, just a bit after! Or that is the impression that those in the know hint at. For all I know the more we progress the more we find added to the workload-- some odd issue could explain the current time-frame.

Perl 6 will be here when it is ready. It is coming slowly, but it is coming. Apparently. We are not kept very up-to-date on these things. Of course there are Perl 6 summaries and mailing lists, but taken out of context (where "context" is the last few years of consecutive updates) these merely confuse the issue behind bug reports, feature requests, and language explanations. Would one dare to ask for a summary, or graphs, or progress charts, or percentages, or a checklist? I tend to imagine a checklist request would be fulfilled as such:

Design the language [X] Code Parrot [ ] Code perl [ ] ... [ ] PROFIT !!! [ ] PERL 6 WILL BE DONE WHEN IT IS READY.
Perhaps I simply overestimate the defensive nature of those in-the-know. On the other hand, perhaps they are vague or obfuscate to hide some horrible and embarassing truth, for our own good. Perhaps I jest! Perl 6 is ever so fun, do not get me wrong. I am a muse, not a critic.

What if I was to throw a number out there, and that number was 10. Append the unit "years" to that number, and let's suppose that is how long Perl 6 development takes, end to end. It really is not that far off from optimistic estimates, nor would I be bold enough to place odds favouring completion before that point as oppose to after.

What would ten years mean to you? For me, that is a long time. I can just think of what I have done in the last ten years. Or, for that matter, in the seven years since Perl 6 was announced. More relevantly, what do you expect out of a digital product that spends a decade in development? Further, what will we get?

When one thinks of the future of Perl, one thinks about Perl 6. How often do you think past that? Could Perl 6, our ambitious and creative future, be the end of our tunnel? Will Perl 6 last us twenty years, a lifetime in software? Hardly. Perl 6 has already been around for so long that we have new ideas. Do we not all have that little feature that we wished we suggested back in the day? Further, understanding our features is one thing, using a multitude of fresh features is another. Some may be unnecessary or confusing compared to other solutions. Some may need modification of their essense. Beyond features, we will also need to remake much of the selection of modules that helps form Perl, and we will also need new modules for new challenges presented by Perl 6. Then after all of that, we will have bugs. By the time we deal with all of that, we might be ready for a cleanup.

Despite how long Perl 6 could be in development, it should have a fairly short lifespan, after which it could usher in a period of prosperity and good times that could be Perl 7. Perl 7 could be the next Perl 5!

I'm looking forward to it already. UPDATE: Removed readmore tags as tye suggested.

Replies are listed 'Best First'.
Re: Musings on the future
by moritz (Cardinal) on Sep 17, 2007 at 06:22 UTC
    Let me give you a short update on what I think the progress is on the different fronts. This is to be taken with a grain rock of salt, and personal opinion only.

    Design the language - TimToady once said "We are done with the first 80%, and well into the second 80%". I'd think the specs are about 65% there. Most of the syntax, object model and regexes/rules are there, but things like I/O and concurrency are mostly missing.

    Code Parrot I'm a bit lost with this one I have to confess, knowing not much about the internals. From the version number I'd say about 50% are done. But don't be fooled by that number - parrot is rather usable now, and a worthy target for any dynamic language.

    It now implements nearly all of Perl 6's object model, which means a lot less trouble for a Perl 6 compiler.

    Let me introduce another step:

    Bootstrap 6-on-6        [X]

    The goal is to have a Perl 6 compiler written in Perl 6, and that has to be bootstrapped. It looks like that can be done with either pugs or kp6, and perhaps with the help of perl 5 scripts like cheat and metholate.

    That's hard to estimate, but I think bootstrapping is done by 50%. Note that pugs uses a Perl 6 prelude, and kp6 has some of its runtime already written in Perl 6.

    Code perl. Now that's one where a number between 0 and 100% doesn't really make sense. But I predict that in about one year or one and a half, programming Perl 6 will be really fun, because the implementations will be about as powerfull (or even more so) as perl5, but not quite as reliable and fast.

    PROFIT. I profit now from Perl 6, if in a somewhat metaphorical sense. I learned some things about open source development, writing compilers, better understanding parts of the language and I learned to know great people from many countries.

    As a side node I wonder how much further the Perl 6 development process would be if all the people that wonder when, how and if Perl 6 will be ready instead contributed a few lines of code. (No, I don't really wonder. That was just rhetorical blurb).

      As a side node I wonder how much further the Perl 6 development process would be if all the people that wonder when, how and if Perl 6 will be ready instead contributed a few lines of code.

      ... or documentation, or tests, or test results, or patches to design documents, or money, or hardware, or....

        How much does one have to donate to have a right to muse about Perl 6 development and reach negative conclusions?

        I'm not serious about that, but I mean to make a point. We have seen a number of posts here criticizing the (lack of) speed of Perl 6 development, and we have also seen a lot of rhetoric discrediting those people based on their lack of contributions.

        Some people can contribute, some cannot. Are a person's arguments legitimate only to the exact degree of his contribution? To rephrase, is that which I have said less valid or fair, in and of itself, simply because I have written it instead of someone else?

        One could suggest that my lack of contribution has limited my insight and thus caused inaccuracies in my points. Of course that would require one to actually identify, claim, and dismantle inaccuracies.

        Alternatively one can just suggest that I have failed to merit a right to make those points in the first place.

      Thank you for the estimates. They are certainly helpful, and it is refreshing to see estimates.
Re: Musings on the future
by stvn (Monsignor) on Sep 17, 2007 at 01:47 UTC

    Remember, Perl 6 is an all volunteer effort and very few people (if any) are actually getting paid to hack on it. It will take as long as it takes, no more no less. In the meantime it is inspiring lots of activity in the Perl 5 world to help further modernize everyones favorite post-modern programming language.

    You can start using any number of Perl 6 features in Perl 5 today if you want. Some of these things are more production ready than others, but here is a list to start with.

    • Production Ready
      • Moose - Perl 6-ish objects in Perl 5
      • Perl6::Junctions - A sane and stable implementation of Perl 6 Junctions
      • Class::C3 - Use the C3 mro (method resolution order) (which is the canonical mro in Perl 6)
      • Scalar::Defer - Lazy values (a feature of Perl 6)
    • Not Quite Production Ready
      • Smart Matching in Perl 5.9.5
      • given/when construct in Perl 5.9.5
      • Devel::BeginLift - finer grained control over when subs get executed (Perl 6 will have similar type features, though not exactly)
      • autobox - the ability to call methods on core type like ARRAY, SCALAR, HASH, CODE, etc
      • Moose::Autobox - Roles designed for use with autobox that provide the built-in methods (modeled heavily after the ones defined in the Perl 6 synopsis)
      • Perl6:: - there are a number of Perl 6 modules, some more finished than others, some more abandoned than others.

    I am sure I missed some too, these are just the ones I know about and use.

    -stvn

      Scalar::Defer is not production ready because it is designed wrong. Nothing that blesses into 0 will ever be production ready.

      ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

        I agree. It's a neat trick and highly entertaining, but much too magical for me to use in anything important.
      Thanks for all the links and references.

      I know that Perl 6 is a volunteer effort, and I am respectful and impressed by those working on it. And naturally I have looked at the Perl6:: modules. I know there is a lot to do now with Perl 6, including using it via PUGS!

      My ramblings are more about the level of completion or just generic confusion surrounding Perl 6 and associated projects.

Re: Musings on the future
by brian_d_foy (Abbot) on Sep 17, 2007 at 02:23 UTC

    Don't forget about the wonderful things happening in Perl 5. You can talk about all the cool things in Perl5.9.5, which will be Perl 5.10 soon. There's no reason that you have to talk about Perl 6 when you talk about the future any more than you have to talk about what you'll be doing next year when someone asks you about next week. :)

    --
    brian d foy <brian@stonehenge.com>
    Subscribe to The Perl Review
      I have watched a bit of the code progression in 5.9.x (mostly from 5.8.7 to 5.9.3) and have seen some material about 5.10 (including attending a talk on the regular expressions engine), and I can optimistically say I am looking forward to looking through Perl 5.10 and using it as soon as it is released.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://639289]
Approved by kyle
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2022-06-30 06:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My most frequent journeys are powered by:









    Results (97 votes). Check out past polls.

    Notices?