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."
It sounds almost like they're hoping that Santa will drop it down the chimney on a flash drive for them. In the time it has taken Perl 6 to get where it is now--fairly close to release--Mono has gone from being scraps of C and C# code, to being a fairly complete and compatible .NET development environment that has a fairly active developer base on Linux. I'm not going to say that Perl 6 is irrelevant, but if it is not out, in a final release within 6 months to a year, it probably will be since even PHP will be grown up with 5.3 and 6.0 by then.
who the fuck thought they would be dropping Regex in any way shape or form?
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.
The quality and intelligence of graffiti is inversely proportional to the difficulty in putting it wherever it is. Dangerous spots on train lines? Misspelt tags. Quiet abandoned swimming pools? Computer scientists with spray cans. Now, that's Perl in Popular Culture!
http://rocknerd.co.uk
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 :-)
Things you plan to write in under fifteen minutes are generally better done in Perl. Beyond that point, the verbosity and consistency of Python becomes a distinct advantage.
Yo dawg, I heard you like the Ackermann function, so OH GOD OH GOD OH GOD
"Signals" for "sigils", describing ClearCase as a "rear-vision control system"... was this article dictated over a noisy phone line to someone who knows nothing about computers?
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!
"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.
A talk on why Perl 5 is Alive was given at PostgreSQL Conference West 08. What I found most interesting is how vibrant the current perl 5 community is. There are even non profits popping up to support it and forgo worrying about 6...
Get your PostgreSQL here: http://www.commandprompt.com/
CPAN. 'nuff said.
It depends on what you call a niche. "People looking for an improved Perl" is arguably a niche. I'm not trying to quibble, I see what you are saying, that the current Perl community is looking elsewhere (or entrenching on 5).
I guess I was trying to point out that the base community will probably be big enough to sustain Perl 6, so the size relative to other communities isn't something to be concerned about (which is somewhat different than being concerned that the community won't be big enough to provide X).
Nerd rage is the funniest rage.
The version that brought LINQ was .NET 3.5, with C# 3.0. .NET 3.0 was just the Vista technologies ("WinFX": WF, CardSpace, WCF, WPF and arguably also WTF) and didn't affect any of the languages in any way - just a bunch of new namespaces. .NET 4.0 will deemphasize LINQ to SQL in favor of LINQ to Entities, which hooks LINQ up to Entity Framework, a more solid (but as of yet woefully "1.0") mapping framework on its own. As with everything Microsoft, it'll probably live on for ages.
LINQ to SQL is more of a joy to use, but it's a joy to use because it has less syntax, and it has less syntax because it tries to abstract less. Entity Framework tries to abstract more (like abstract away most many-to-many junction tables where the connection itself doesn't have properties) to the point where it is intelligent enough to handle joins for you, and it demands you to be far more explicit about lazy-loading data across relationships (which is a good thing). But it's not entirely there yet unless every query *always* produces an instance of a known type from the database.
No, "Perl or Python?" is more like "C++ or Java?" In other words, they are indeed different languages with different strengths, but the area of overlap is pretty damned large -- you can write programs that do the exact same thing in either language and it really won't make any difference to the end result. Since I switched over from Perl to Python ~6 years ago, I've never found a task for which I would have used Perl that I couldn't do in Python. I'm not saying that there aren't any such tasks, you understand, but I honestly don't think there are many of them.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
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
When they take perl out of slackware ill stop using it. Until then its real handy.
After reading over the comments on this article and figuring out what I should spend my time on studying is not going to be exactly easy.
Maybe I should just continue on with OO programming and pick up where I left off and stick with interpreted languages and then onto OOP, instead of functional programming.
I would think that some functional programming would be useful though. I am guessing if you are familiar with OO and functional it would make you a bit more marketable. Just a hunch.
If Ruby, Python and PHP have overtaken Perl, it might be better to learn PHP. I will probably end up looking over both though as I go along.
In addition to what the other /.ers have said, bear in mind that one of the main targets for Perl 6 to run on is Parrot a "one-VM to rule them all" multi language VM.
Thus, not only will the binding be accessible to Perl, they would be accessible to any other language targeting Parrot VM.
(Think of something remotely like JVM or Mono/.NET's CLR except that, unlike microsoft's CLR, Parrot is designed from the ground up with all the complexities of modern latest-gen dynamic languages in mind)
Where the things get even more interesting is that the Ruby community is interested in using Parrot as their main VM.
So Parrot would also cure Ruby's problem at the same time.
Also, some of the python users are interested in creating yet another python implementation targeting parrot. And some fans are trying to create a PHP compiler for Parrot. Haskell coders are also involved a lot in the development of both Perl6 and Parrot. Thus Parrot has indeed serious chances of becoming the central interconnection point for lots of modern dynamic languages.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Look at actual available jobs. Not silly popularity contests. Do you honestly believe Delphi is more common than Javascript??
I have a theory that the truth is never told during the nine-to-five hours. - Hunter S. Thompson
I'm a C++head and I've a friend who is a Perlhead. One thing I really envy about Perl is the sense of community; you get the feeling they're all in it together, and CSPAN gives them a massive library of contributor functions. Stuff I have to write in C+++, he can just reach into CSPAN and find a module, well documented, all ready to go.
Now compare that with C++. We've finally got BOOST.ORG which is supposed to be C++'s answer to CSPAN, but its too little too late. Well, maybe not too little, but it's tiny. There's just too much function it doesn't have. So what can you do? If you need some function you can google around to find a library someone else has done, but since C++ never dictated things like geometry or template libraries (STL was an unpopular pig at first, so many codeshops rolled their own instead). Everything is different. The standard of documentation for open libraries isn't great; you're lucky if you get any doc at all, and usually you'll have a few poorly strung together test programs you need to reverse engineer. Despite POSIX, portability is still a problem. Microsoft C++ doesn't like GNU C++, and this affects packages which you wouldn't think would have any OS dependent code at all (e.g. NOVA).
But worst of all, what C/C++ code there is out there was smithed in the days of "I will get rich off this hundred line program ha ha royalty holidays forever". Nearly everything has a non-commercial clause. Even the most piddling things or everyday stuff like triangulation. Where does that leave you? Well you can get a payware library like Alan Murthra's Polygon Clipper library for which he charges a whopping $2K a license. Prices most of us out of the market (an educational, no-profit exemption is useless). ie. GTFO. So in C++, almost always, you'll find yourself rolling your own code. And when people roll libraries, they're seldom open-sourced. There are a few honourable exceptions; LIBPNG, LIBJPEG, LIBZIP, FFTW. But these are few and far between.
I truly envy Perl. I'd like to blame the C++ Community for not doing an equivalent of CSPAN sooner, but there is no community to blame. I welcome Boost, but it has such a long way to go. Really what C++ misses is community.