Perl and Me, Part 13: Here's To Future Days
This is part 13 (and the final installment) of an ongoing series where I explore my relationship with Perl. You may wish to begin at the beginning.
This week we look at what comes next.
I suppose at the end of any long rumination on the past, it’s only natural to think about the future. I’ve tended to avoid pontificating on Perl’s prospects for a number of reasons, not the least of which is that I don’t have any special knowledge to share. I’m not an author of Perl books, a contributor to the Perl core, or even a particularly prolific creator or maintainer of CPAN modules.1 I don’t have any inside knowledge of Perl from hanging out with Larry, or the folks that run the Perl Foundation, or the current Pumpking (nor any past ones, for that matter). I’m just a regular Joe JAPH—admittedly one who has made his living off Perl for 17 years, well enough to support a nice house in southern California and a complement of five humans, three cats, one guinea pig, and a tank full of tropical fish, snails, and shrimp—but just a working schmoe nonetheless, whose opinion isn’t any better or smarter or wiser or more likely to be true than yours. So, you should definitely not listen to me.
Another reason I don’t often hold forth on the future of Perl is that I’m very conflicted about The Butterfly. I mentioned way back at the beginning2 that I used to daydream of a “perfect language” which was a conglomeration of Perl and C++. Well, the first time I looked at some Perl 6 code (which was entirely notional, back in those days), I thought: that’s it! That’s my perfect language right there, straight out of Larry’s brain! This is not particularly surprising, after all: I’m not really a language designer, and Larry is, so obviously all the things I could think of that might improve Perl, he would have thought of those things and many more.
But, as time went on, my enthusiasm cooled a bit. This was partially because I didn’t always agree with the decisions of Perl 6. For instance, I’ll freely admit that I’m one of those people who could never quite get over throwing out a perfectly good concatenation operator just because all the other languages were jumping off a cliff. I’m also not sure that the change in the way sigils work is actually an improvement, although at least for that one I can see both sides. Then there’s twigils. I’ve said it before, and I’ll say it again: I hate twigils. But these are trivial complaints overall, and completely overwhelmed by things that I’m drooling over: declarative classes and function signatures and multi-methods and optional strong typing and junctions and pipe operators and lazy lists and alias binding and macros and custom operators. Oh, and not having to type
qw so much. Oh oh, and not having to type
(?: ) ever again. Oh oh oh, and ... I could go on, and on, and on. There are so many things I love about the design of Perl 6.3
But then there are the implementations of Perl 6, which are decidely less inspirational. The delays in getting The Butterfly into a usable state are interesting, from an anthropological perspective. There were the things which were completely unavoidable (such as Larry’s health problems) and those which were completely avoidable (such as the Parrot debacle4). Some setbacks have been blamed on the fact that the project is being implemented by an all-volunteer team, but that’s true of any open-source project, no? Decisions were made (such as encouraging multiple implementations, or not using the existing CPAN structure for Perl 6 modules) that we can still debate whether they were vital or detrimental. But, while such ponderings are academically intriguing, arguing about why it’s not ready doesn’t help much. Let’s face it: if we had been told, as children, that it was “almost Christmas” for eight years, we’d all have slit our wrists and we wouldn’t be here having this discussion right now.
The Rakudo folks have decided to start calling Star a “useful and usable distribution of Perl 6.” This attempt to reframe the perception by rearranging the labels is understandable, because how can we answer the question “is it finished yet?” when there’s no clear agreement on what “finished” entails? We could say it’s finished when it passes all its tests, but then we’d have to know when all the tests are finished. Besides, I can easily imagine scenarios where I could be using Perl 6 without all the tests passing, and also scenarios where all the tests pass but it continues to be useless in a practical sense. See, it all comes down to CPAN ... you want to know when Perl 6 will be “finished” (or close enough for government work, as my grandmother used to say)? Easy: when we have the Perl 6 equivalent of DBI, and 10 or so drivers to connect to real databases with. I can live without large swaths of CPAN, but I can’t live without that.5
So when people ask me if I believe Perl 6 is the future, I’m never quite sure what to say. I’d like to believe it is—or at least that it could be—but, as pretty as it is, as many features and improvements as it touts, as beautifully as it may embody context and linguistics and evolution ... if I can’t Get Shit Done with it, it ain’t Perl as far as I’m concerned.
But turning from The Butterfly to The Velociraptor doesn’t leave me any less conflicted. On the one hand, I know intellectually that Perl is a 25-year-old language, and it only makes sense for it to be on the decline, and that my desperate attempt to pretend that it’s not must be viewed from an outside perspective in the same way that I viewed the COBOL grognards of my youth. When trying to look at myself objectively, I can see that I’m obviously biased and my opinion shouldn’t be trusted. And yet ... it’s also true that Perl has already lasted far beyond what could be reasonably expected. Other scripting languages have been born, flared briefly, and died in less time than Perl has been alive and kicking. Even Python’s popularity is declining according to some measurements,6 and you may recall that Python proclaimed victory over Perl because it was engineered rather than artistic. (Now that I ponder it: With a few exceptions, projects that are engineered inevitably become obsolete. Art, however, is forever.7) Against all odds, Perl continues to evolve, CPAN modules continue to be uploaded, and new sites continue to be created in Perl. There’s an echo chamber argument to be made, there’s a confirmation bias argument to be made, and probably all sorts of other reasons I should not put faith in these things. And, yet, I continue to do so.
What it comes down to for me, I suppose, is what I said back in Part 7: there just isn’t anything that competes with Perl. I’ll happily upgrade to a better language ... as soon as I find one. It has to be expressive, and it has to be creative, and it has to be legible, and it has to be multi-paradigm and flexible and above all it has to make it easy to Get Shit Done. Where is the language that does all that? Oh, wait: it’s Perl. Yeah, suddenly I remember why I don’t switch. I’m not stubbornly refusing to move on because I’m nostalgic, or because I’m too old or lazy to learn something new, or because I’m a cranky old man who believes these kids today are taking the world to hell in a handbasket8 ... I’m just honestly unaware of anything worth switching to. I’m not going to switch just to switch, and I’m not going to abandon the best language I’ve been able to find in 26 years of searching just because it might be tough to find a job in it one day.9
At least year’s YAPC::NA, there was a running theme, if not exactly a concensus, that the best way forward for Perl was for the experimental offshoots (perlito, p2, et al.) to try out new features and let the evolutionary winners be backported to Perl. I wrote about this, and also about p5-mop, which could be considered another one.10 I’d like to tell you that I too believe this is the future of Perl, but I can’t say that yet. Again, I want to believe it, but let’s stack up a bit more evidence before I begin to state that with any confidence.
I suppose I’m not really sure what the future holds for Perl. Recently, I received a color brochure from the Perl Foundation (as I’m sure did many of my fellow YAPC attendees). My partner11 asked, in some confusion, “what did they send that to you for?” I told her I wasn’t really sure. It didn’t seem to be begging for money, as perhaps might a letter from the alumni association of your old school, although I think statements pointing out the generosity of TPF donors were a respectful and gentle reminder that they could always use a bit more generosity. After pondering it for a bit longer, I opined that it was just a way to declare “Perl’s not dead!” Much like JoJo Who’s “yopp,” it will save us from the cauldron of irrelevance by allowing the rest of the world to hear our cries of “we are here!” At least it reassures us Perl programmers that someone is out there fighting that fight for us. I haven’t yet decided whether I will allow myself to be reassured, or whether I will absorb the chilling fact that TPF considers such reassurance necessary.
In the end, I suppose there isn’t a clear-cut answer. Perl cannot last forever: nothing does. Larry Wall knows this, and Perl 6 is his attempt to turn the velociraptor into an archaeopteryx—to evolve us past the inevitable dead end by creating a whole new creature who shares some of the same DNA but can adapt to a changing environment. If Perl 6 can’t be the answer, perhaps some other new language will be. But, damn: somebody better get to inventing it, tootsweet. If all else fails, perhaps Perl 5 can evolve itself beyond its shortcomings. But, honestly, that’s a long-shot. Sure, there are some species that have survived mostly unchanged since the Cretaceous (like crocodiles, or sharks), but they’re definitely the exceptions. Which is not to say we shouldn’t keep trying. But I think we all know that, in the long term, we can expect some other language to come along and displace ours.
Except ... how long of a “long term” are we talking here? ‘Cause I still say it’s difficult to get all disturbed by the thought of Perl being replaced when currently there’s zero prospects of anything that can replace Perl. Whatever timeline we’re talking about, it continues to look like the first phase—invention of radical new language which will supplant us—has yet to occur. In the meantime, CPAN modules continue to be created, Perl conferences continue to break attendance records, people around the world continue to make a living doing Perl training, and I continue to sleep well at night knowing that even if my current job disappeared tomorrow I have several decent backup prospects, and a couple of good recruiters that specialize in Perl placements.12 For now, that’s good enough.
I want to thank you all for coming along this journy with me, and for all the thoughtful, intelligent comments I’ve received, and for all the private encouragement. I hope some of it has been useful, or at minimum entertaining. May your own personal journey with Perl be as eclectic and rewarding as mine has been for me.13
2 Which wasn’t that long ago ... in geological terms.
3 Although Perl 6 design changes rapidly. For all I know, some of those things I listed are not even planned any more.
4 I don’t claim that chromatic’s description of that clusterfuck should be taken at face value, but it remains in my opinion the best account to try to understand it if you were not personally involved, in that it a) is complete, b) is internally consistent, c) makes sense of the observed outcome, and d) doesn’t contradict any other account that I’ve read that I didn’t find too self-serving to put much stock in.
5 As an alternative plan, I would accept a way to use Perl 5 modules in Perl 6. That would be even better, actually, as it would mean we don’t have to give up any parts of CPAN.
6 Tiobe, for one, which shows a more-or-less steady decline since its peak in around 2011. Side note: it’s extremely entertaining to watch the Python advocates who crowed gleefully when Tiobe proclaimed them awesome now backpedal furiously and claim that maybe Tiobe isn’t really a reasonable measurement of popularity after all.
7 I allow some exceptions on general principle, out of distaste and distrust of absolute statements. The only one that springs to mind, though, is the Great Pyramids, and I think you could make a reasonable argument that the original purpose they were engineered for is now obsolete, and that they are now, in fact, art.
8 Although I suppose I won’t deny being any of those things either. Well, except for that last one—I’d like to think I’m a bit more progressive than that. But, point is, even if I am any of those things, that’s not why I refuse to let go of my Perl.
9 Although some folks have said that this is already happening: for instance, chromatic wrote about it recently. Personally, I recently changed jobs and didn’t experience any difficulties finding enough job prospects to have a choice of which one to take. Perhaps, to quote chromatic, I “got very lucky.” But I prefer to believe that it means that there are at least a few geographical areas where Perl jobs can be found without the need for superhuman effort.
10 Although you could also argue that it’s not really an “offshoot,” since it’s specifically designed to be incorporated into core. But I still think of it as a bit of an experiment.
11 My parenting partner, that is, not a business partner. A.k.a. the mother of my children, a.k.a. simply “The Mother.” If you’re interested reading more about her, you could also check out my Other Blog.
13 For those of you who worry that you might suffer some sort of withdrawal without this long-ass blog series to sustain you, I invite you to pop over to my Other Blog next week where I plan to reveal the sources of my individual post titles. Each title in this series is an allusion to, or paraphrase of, something. (Possibly some may be allusions to multiple things, but there was definitely one thing I had in mind for each.) No doubt you recognized some; others may have been unfamiliar. If you want to try to guess them before I reveal all next week, here are some hints:
1. The Road So Far: a Winchester recap
2. The Power of OOP: Johnny Colla would have done a mean sax solo
3. A Moose Once Bit My Sister: I apologize for the obscure references; those responsible have been sacked
4. A Worthy Program, Exceedingly Well Read: also, profited in strange concealments ...
5. Speaking with the Speech of Coders: a present from Vietnam
6. Perl is Engineering and Art: at least one had to be obvious ...
7. The Most Powerful Weapon Which You Can Use to Change the World: according to Tata, not Perl at all ...
8. Endless Forms Most Beautiful and Most Wonderful: there was grandeur in his view of life from the Beagle
9. That’s Why I Failed Recess: it was funnier when Rudy said it to Fat Albert
10. What We Talk About When We Talk About DWIM: involving two couples and a bottle of gin
11. Please Mr. Perl, Will You DWIM?: a plea to m’colleague Hugh
12. The End of the Beginning: once described as “sounding more like the Primitives than the Primitives”
13. Here’s to Future Days: why are they called “twins” if there’s three of them?