Larry Wall Talks Perl, Culture, and Community
LostDiver writes "Computerworld Australia caught up recently with Larry Wall of Patch and Perl fame. He talks about the development of Perl as 'scratching an itch,' a release date for Perl 6 (Christmas day, year unknown) and beauty versus practicality. Computerworld also has some more information on the upcoming Perl 6. A while back they interviewed Bjarne Stroustrup of C++ fame as well."
jamie pointed out a interesting, related video of a presentation by Clay Shirky from last year's Supernova conference in which he discusses why the Perl community (or any web community) drives progress and innovation.
Perl 6 promises to put the "regular" back into regular expression. "We have more powerful primitives in Perl 6," Wall said. "There's no more /x switch to enable extended syntax. No more mode switches like /s and "dot" (.) now means match any character. There's no /m modifier and we've regularised the brackets so {} always mean embedded code."
They didn't drop regexes at all. They've actually generalized them into context-free grammars, and these CFGs are a core part of the language.
If anything, the problem with perl6 is they added way too much.
Hmm that's interesting.
I know quite a lot of scientists who use Finite State Automata for tasks and use custom libraries for that. If Perl 6 can provide an easier and efficient way of doing that it might even have a future :-)
Some important changes had to be made to support the developers of Duke Nukem Forever, who are rewriting the project from scratch in Perl 6. The good news is that means Perl 6 is right around the corner!
It appears within the system administration community that Ruby is well on its way to replacing Perl as the de facto language for major tools. Well over half of the new tools introduced at the LISA (Large Installation System Administration) conference this year were written in Ruby. I've been developing in Perl for about 15 years, but have recently switched nearly all of my development to Ruby. I know I'm tired of hearing about how great Perl 6 will be. I've been hearing that promise for half a decade now. The biggest drawback to Ruby right now is that the availability of 3rd party libraries is nowhere near the level of what's in CPAN.
Apple is also putting a significant amount of effort into improving and integrating Ruby with Mac OS X. MacRuby and HotCocoa both look really interesting, particularly if you want to develop GUI apps.
"Perl or Python?" is like "awk or sed?". They solve different problems. They're suited to different tasks. For the parts where they overlap, though, there are various arguments either way. There's a reason why there are flamewars about this stuff. You get flamewars when the arguments on both sides are evenly matched, and the choice therefore becomes a religious issue.
Perl has some advantages. It has anonymous functions that aren't crippled. It has predictable lexical scoping. It has (optional) variable declarations. It has more libraries, and a very convenient standard way of installing them. It's available on any Unix system, whereas Python programmers are frequently reduced to begging sysadmins to install their favourite language. (And sysadmins frequently prefer Perl...)
Perl also has disadvantages: cryptic syntax, too much magic DWIM stuff, no standard way of doing OOP, etc. Note that these are all areas where Python is strong; if you care about consistency, Python is going to be a better choice for you personally.
Neither is a clear winner on performance; Perl is faster for some things, Python for others.
CPAN. 'nuff said.
Besides CPAN, Perl was one of the first languages to integrate advanced data structures - lists and hashes - directly into language itself. And not some half-assed implementation - e.g. C++'s STL or Lisp' lists - but really really good implementation, supported by many standard functions and (most importantly) internal optimizer.
Last, but not least, Perl is quite well performing. Compromise fitting most tasks: scripts are loaded relatively fast (e.g. compared to Python), yet if you use structures intelligently, it will run very fast.
All that together, with Perl's pragmatical approach, you have a tool which easily scales from irreplaceable "perl -pe" one-liners to relatively huge projects. And in many cases, huge projects start as one liner scripts. That's where I'm addicted to Perl: if you know what you do, you can write short but powerful scripts in few seconds. And if you need, you can easily improve the one liner into some good tool, usable by other too.
As noted by many Perl fans (like I am) you do not write in Perl - you think in Perl. It is language without any artificial barriers between you and resources you need to accomplish your task. That's why it is so hard to get off the Perl.
P.S. Can't compare to Ruby, since I haven't used it. Few examples I have seen before hadn't stroke me as anything radically new or more useful/practical than Perl.
All hope abandon ye who enter here.
It's also two keystrokes shorter. What's wrong about borrowing good ideas from other languages? (I'd tell you what's wrong about borrowing bad ideas from other languages, but you didn't ask.)
You're also years out of date on the string concatenation operator. I leave it as an exercise for readers to form their own conclusions about the accuracy of the rest of your post.
how to invest, a novice's guide
You are hugely mistaken. http://dev.perl.org/perl6/faq.html
All of it.
If you use a Perl 6 implementation which supports Perl 5, yes.
Yes, if they're pure-Perl.
No.
That depends on the Perl 6 implementation. The answer is probably no, but there's no reason someone couldn't write a converter for the basic XS uses.
how to invest, a novice's guide
Interesting omission:
$ grep "/python" /usr/bin/* | wc -l
168
$ grep "/ruby" /usr/bin/* | wc -l
23
$ grep "/perl" /usr/bin/* | wc -l
570
God Fucking Damnit