Version 6 of the popular Perl programming language will not be compatible with previous versions, but will open up a new world of custom “languages” and interpreters, according to its founder Larry Wall. Wall and his co-developers are doing with Perl 6 — starting again. “It will break backward compatibility [but] in order to simplify it we have to get rid of old cruft, particularly the regular expression cruft,” Wall said. “A lot of the unreadability of Perl is related to the regular expression syntax – and we didn’t do that, we got it from Unix. It needs to be end-of-lifed.”
Regular expressions are really powerful and can do some wonderful stuff but they are a pain in the rear to understand if you didn’t write it/them (and they’re complex). Heck even ones I did write I have to work out again what they do if I haven’t dealt with it in a while.
A move to “fix” regex’s in Perl is a good move in my book.
a tip i the small kde utility “kregexpeditor”. it visualises your regexps in a neat way. IIRC it can also be used as a wysiwyg, but I never tried that.
lol… the regular expression dealie, is as i see it, the only real unique different perl has over other languages…
Well there’s always CPAN as well which makes my life a LOT easier in so many ways.
I really should try learning Python though…
lol, the fact is regexp is supported in many languages, including C++ (using boost), Python, Java and Javascript. And those are just the ones I can think of off the top of my head.
Well, that and the whole web scraping thing. I’m not sure if Python or any other scripting language of its type has anything as powerful as the LWP library:
http://search.cpan.org/~gaas/libwww-perl-5.800/lib/LWP.pm
Beautiful Soup:
http://www.crummy.com/software/BeautifulSoup/documentation.html
If you’re only using LWP, then you need to get looking at WWW::Mechanize, which handles most of the web page and form handling that you want automatically.
http://search.cpan.org/dist/WWW-Mechanize/
Admittedly, I have almost no experience programming Pearl (total extent is editing a Unix script once), but damn, I’m left with no clue what Larry Wall was trying to say! Perhaps my imagination is simply too limited… But “Perl 6 is many languages”… “The “Kewlness†of Perl 6 includes a parser that uses stringwise “surreal” precedence” … “Perl 6 has no “coreâ€, pre-defined operators and support for user-defined operators.” (The last two quotes aren’t directly from Wall–and the second one has really strange/bad grammar. I’m guessing it means that all operators are user-defined? …maybe the article is so confusing because the author has no clue what he’s writing about….)
And also… first Wall says he wants to make Perl 6 easier to read, then he says this:
“The idea with Perl 6 is you start with a standard language and you can mutate it. As long as you follow that refinement process there isn’t the problem of ambiguity. There is the problem of multiple dialects, but that will always be a problem.”
I’m sure that’s going to help readability a whole lot, allowing programmers to customize the language so that other programmers have that much less of an idea what’s going on in their code….
Edited 2008-12-07 08:09 UTC
I think the writer of the article didn’t know to much about it either. Also Larry Wall wasn’t clear enough, probably because most people there actually knew what he was talking about.
Perl 6 is based on Parrot, Parrot is a VM kinda like a Java VM, but for dynamically typed (script-)languages like Perl, JavaScript, PHP, LISP, Lua, Python, Ruby, etc. So Parrot is the part that can understand and run different languages.
With Parrot a language-syntax is defined in a definition file for the parser. So the language can be extended.
And I don’t think the next version will break compatibility, the syntax of Perl 6 will be different, but Parrot will also understand Perl 5.
To make confusion full circle, Perl 6 actually has a formal language specification about what Perl 6 is, so there can be and are several implementations, one written in Haskel and one for Parrot. That’s why there is also a Perl 6 test-suite to check the implementation.
Well, that’s what I’ve come to understand about Perl6/Parrot.
Edited 2008-12-07 09:55 UTC
OK, that makes things somewhat clearer–it sounds like the Parrot VM is moving in the same direction of the Java and .NET VMs in supporting a wide range of languages.
I also get the part about the test suite–it sounds similar to the idea behind the Java test suite.
What I still don’t get, though, is what Perl 6 *the language* actually is. Is it similar to Perl 5, and what are the differences? Also, what did Wall mean about dialects being likely? To me it sounds like every programmer will effectively end up extending the language into their own personal dialect, which would make code review by others that much more painful… But I’m not sure I understood correctly…
Perl, and Parrot are probably second only to Duke Nukem Forever when it comes to claiming the title “King of Vaporware”. It’s been over 8 years since the design process of Perl 6 was started.
Parrot is probably a large part of the reason. None of the rest of the dynamic language world cares about Parrot anymore. They’ve already committed to building on top of Java or .NET (see IronPython, JRuby, and Caucho’s Java version of PHP). So the only people still working on Parrot, are the people trying to design Perl 6.
Edited 2008-12-07 13:00 UTC
Except that Parrot has been having monthly releases for at least the last year, and Parrot 1.0 will be out in March 2009.
http://perlbuzz.com/2008/11/parrot-10-will-be-out-in-march-2009.htm…
And Perl 6 is marching along nicely.
There’s plenty going on and it’s phenomenal.
Yeah. I’m sure the latest nightlies are awesome.
Forgive my skepticism, but 8+ years of “Perl 6 is marching along nicely”, with no end in sight, invites that. Something is very, very wrong with this project. I haven’t paid close attention, but “poor project management” is usually a pretty good guess in these cases. Arguably, the most important skill a project manager can develop is the ability to say “No” at the right times.
Edited 2008-12-07 17:19 UTC
I’m sure the latest nightlies are awesome.
Monthlies.
usually…
arguably…
I haven’t paid close attention
Clearly not.
It’s sure easy to take potshots from the side without having to have any knowledge about what’s going.
Edited 2008-12-07 17:35 UTC
Sure. I believe you. The evidence clearly shows that everything is under control, going according to plan, and coming along nicely.
Edited 2008-12-07 18:14 UTC
http://www.perlfoundation.org/perl6/index.cgi?when_will_perl_6_be_r…
They really only started the difficult implementation of parrot and the perl6 on haskell, and perl 6 on parrot, and perl 5 on parrot in 2005. So three years for a virtual machine, implementing two languages on the virtual machine, and another implementation of a language on top of a somewhat obscure language like Haskell in three years. Not that bad, if you ask me.
It was a long planning and design phase form 2000 to 2005, that most critics are including in the time estimate. The best explanation is that perl 6 was a community rewrite of perl 6. A community is, IMHO, always going to move slower with a design process, than a benevolent dictator.
The monthly releases have been pretty awesome. Look here for the list of changes in each monthly release for the past several years: http://svn.perl.org/parrot/trunk/NEWS
We really have been getting a lot done.
Well, I don’t call 9 years to get to version 1.0 of Parrot, and even a beta release of Perl 6 still no where in sight to be “moving along quite nicely”.
One has to question whether Perl 6 will have any relevance at all by the time it finally comes out. Perl is dead as a Web application language. It’s still great for system admin scripting and such, but I suspect most sysadmins are going to stick to their good old trusty Perl 5 anyway.
It’s just resting.
http://tinyurl.com/37lchr
Edited 2008-12-08 12:37 UTC
Why does one have to question that? You’re in no danger of working on the project, right?
What’s not clear is how relevant will this long-in-process progress be to people outside of the Perl community?
For someone flitting about the periphery, it sounds interesting, academically, but pragmatically, I just don’t know if I should care.
The only thing Perl6 will ever be good for is a punchline to a joke.
You are right on the money! If you look up “vaporware” in the dictionary, it says “(see Perl6 and Parrot VM)”.
This is yet another example of an overly-ambitious software project, lacking in clear direction or anything resembling an attainable roadmap – in other words, a deathmarch to nowhere-land.
All I can say is, “So long, you starry-eyed lemmings! Say ‘hi’ to the dodo bird for me.”
An attainable roadmap? You mean the one here: https://trac.parrot.org/parrot/wiki/ParrotRoadmap ?
We’ve been meeting our release goals pretty regularly for the past two years. I’d say that’s a pretty good indication of clear direction and attainable goals.
And the planned release date is? The “release goals” you’ve been meeting are like the circle cast by a lantern in the dark. No guarantee of getting out of the forest. You need a map and some landmarks.
Edited 2008-12-08 19:10 UTC
Did you even look at the roadmap I linked? The planned release date for 1.0 (Stable API for language implementations) is March 17. Six months after that is 1.5, our “Mostly Feature Complete” release. Six months after that is 2.0, “Production Ready”
Yeah, I did. And that is what made me think of the circle of light cast by a lantern. Say things go more or less as planned, and Parrot releases something production ready in a year. What does that actually mean for Perl 6? Is it out of the forest? Or has the circle just moved a bit in some direction?
Edited 2008-12-08 20:38 UTC
“We’ve been meeting our release goals pretty regularly for the past two years”
But they/you have been at it for 8 years, I was still a minor when people started talking about perl 6… that sure seems like a long time ago now . So excuse us for being a bit cynical 🙂
“But they/you have been at it for 8 years, I was still a minor when people started talking about perl 6…”
How long is a complete language redesign and rewrite supposed to take? Python just did some syntax updates and minor tweaks for 3.0 and it took them 8 years. Parrot is a completely new VM with capabilities no VM has had before. Perl 6 is a ground up redesign of the language. They designed for 6 years before starting coding and now have been coding for 2 years with regular progress and working builds that you can download and use *right now*. They have a plan, a schedule on that plan and they’ve been making their milestones on that schedule. This is the antithesis of vaporware.
There are legitimate criticisms of Perl 6, none of yours are among them.
Thanks for pointing out the absurdity of the complaints of “It’s taking too long.” I’d like to see anyone else break down and estimate the project.
This is a perfectly legitimate criticism No software project can afford to take 8 years to develop. The technology moves along to quickly. If you are working that slowly that it’s taking 8 years and you still don’t even have a usable beta, you are so far behind the technology curve that any work you did at the beginning is now obsolete and has to be redone because newer and better ideas about how to handle a VM have come along and such.
You simply can’t afford to take this long to develop software. And we see the consequences. Parrot is virtually irrelevant now for anything except Perl. It simply took them too long to get anything usable put together.
And as I said, Perl 6 has no usable beta even in site yet.
Software project simply can’t take this long and not even have a usable beta. It is a perfectly valid criticism to say this project needs to move faster and have better planning.
Any software project that has taken over 8 years and doesn’t even have a beta release yet, is in serious trouble. Obviously, if this were not an open source project, the plug would have been pulled by now and the project written off as a total failure that cost millions of dollars and never went anywhere.
There are clearly some major project management problems going on here.
I think you are mistaken here and that you have taken a tunnel view of the programming ecosystem or given the dynamic language greater significance than it is warranted. I don’t think you can fairly say that the dynamic languagee community has “commited” to the current VMs than you can say that programming community had committed to java over .NET over C++ a few years back. Also the dynamic language community is young enough to be shaken up by a “new comer” just as perl shook up many of the standard production-quality languages in its day.
I am not necessarily looking forward to Perl 6 to speak candidly. It has been too long and I don’t fully understand what it will bring to my toolset. If it does bring increased productivity, reduces my code volume and if it brings the improved clarity it promises then it will find a niche. If it does all this well in a prouction environment even better. This should perhaps be one of the benchmarks of its relevance instead of how well it fits in the particular programming ecosystem and its trends…
I don’t think I am mistaken. The reason being that there is no obvious benefit to porting Python, Ruby, or PHP to Parrot. Not when there are already production quality versions written on top of the JVM and the .NET VM. And these implementations often run circles around their C counterparts because they can take advantage of JIT compilation and such.
I just can’t see any obvious benefit to porting Python, Ruby, or PHP to Parrot. Other than “it might be fun to port it”. But there’s no real practical benefit.
Porting to Parrot virtual machine benefits:
* primary designed for dynamic programming languages
* register based VM, great potential
* interoperability provided at an assembly
level
* open source, platform agnostic
* many features for free PCT, PGE, embeding, mod_parrot, …
“Parrot is innovative and not just a .NET or
JVM clone.”, Jonathan Worthington, 2005
* http://www.jnthn.net/papers/2005-lpw-parrot-slides.pdf
“Perl 5 has two big features that make using the JVM or .NET problematic–closures and polymorphic scalars. Perl 6 adds a third (which Ruby shares) in continuations, and a fourth (which Ruby doesn’t) of co-routines.” Dan Sugalski, March 25, 2003
* http://www.sidhe.org/~dan/blog/archives/000151.html
* http://www.sidhe.org/~dan/blog/archives/000152.html
See
* Perl 6 on Wikipedia – http://en.wikipedia.org/wiki/Perl_6
* and Perl 6 and Parrot links – http://perl6.cz/wiki/Perl_6_and_Parrot_links
. It isn’t easy to create dynamic programming language for next 20+ years and virtual machine for all dynamic programming languages. Python 3k is just a toy. 🙂
So what will happen to the countless books and tutorials written on perl regular expressions
http://www.chrisranjana.com
(Web developers Company)