I’ll tell you a secret. I am a huge Perl fan. Always was, ever since I started my developer career in the early 90s. And even though I have programmed in, probably, dozen of other languages since then and Perl has, in all fairness, become the COBOL of the 21st century – it still holds a dear place in my heart. Frankly, not only I’d still lean to Perl for most quick and dirty projects, but I also maintain and somewhat actively develop perhaps some of the most trafficked existing Perl-based web systems. That is one of the reasons I was excited to speak at The Perl Conference (YAPC::NA), meet with esteemed members of Perl community and discuss the future of Perl (and especially Perl 6). And frankly, the future looks grim.
Let’s start with the obvious. Perl 6 has not found (and likely will never find) it’s place under the sun. I was of that opinion as I was following Perl 6 progress throughout the years, but listening and talking to folks at YAPC reaffirmed my assumptions. There are a couple of core premises that it fails on delivering, that paints the language as nothing more than a two decade long academic exercise in language design.
After 20 years it’s not production ready
Let me be honest, I was looking forward to Q&A with Larry Wall. I was hoping he’d put me at ease about the future of Perl 6 and would demonstrate some cool capabilities that would show the power of the language and differentiate it from the others. Instead, the “cool” example presented was a basic data manipulation and display of amateur sport scorecards that could serve as an exercise mid-way through any programming 101 class. In any programming language. Furthermore, call me a cynic, but when addressing performance issues, the answer “Perl 6 was built optimizable but not optimized” is not acceptable. Not after two decades of development. Not in 2017.
Perl 6 is not Perl
I know it’s not a new argument, but hear me out. One of the main verbalized reasons for Perl 6 is to bring the to Perl all the features Perl was missing all these years – proper objects, multi-threading, etc. And Perl 6 (for the sake of argument) delivered on these promises. Except it didn’t bring those features to Perl. It brought them as a part of completely different language, with new syntax, structure and grammar. So the developers behind Perl 6 did not solve Perl 5’s problems, they learned from them as they were developing a new language. Which means that as a Perl developer, I essentially need to learn a new language to stay within Perl community/ecosystem. Which brings me to my next point – why would I?
Why Perl 6?
Perl 6 development started short of 20 years ago, where the choice of programming/scripting languages was limited and the world of web was just taking shape. We now live in a world of web-based products and platforms that are developed, automated and managed by tools developed in dozens of programming languages that were designed to fit a specific need. Python/Ruby took over go-to language for system administrators as most of tools they use in their everyday life in this day and age are either built in or natively support those languages. Node.js provides a single language to use across the full stack (for better or worse) and was designed to embrace asynchronicity of HTTP protocol. And if I want strongly typed functional language, there are options like Go. So in this, very real, world we live in, what real need does Perl 6 solve? Why would I, as a Perl 5 developer of many years, who is seemingly being forced to learn a new language, choose Perl 6 over any of the other languages that offer practical benefits? What niche does it fill? What business problem does it solve for me? Pragmatically, how will it help me improve my skills and/or get a new job?
Does Perl even have a future?
Perl 6 is clearly not the future of Perl. It may have a future (there is always a chance), but it is certainly not the future of Perl we know and love. So does Perl even have a future? Or much like COBOL it’ll become an archaic language with non-existent fanbase? Frankly – I don’t know. The outlook is not great. I would still argue that Perl is by far the most flexible language out there (especially after fantastic talk by Damien Conway on implementing Perl 6 lexicon for objects, try/catch, etc. in Perl 5). Unfortunately, Perl has lost it’s place as a go-to language for sysadmins and have never established itself as a go-to language for web app developers. In my personal opinion, if for the past two decades the direction of Perl improvements was steered by leadership towards web-based use (because let’s face it, CGI/Mason/Template Toolkit/Dancer are not, and never were, on par with leading tools out there), we would’ve been in a much better shape today. The world has changed – Perl, unfortunately, has not.
The bright side of this gloomy outlook is the Perl community. It is still fantastic. YAPC organizers, crowd and speakers have once again showed why the Perl community has been maintaining itself well for so many years. I do believe that there are plenty of bright minds in the community, familiar and new alike, who, I hope, will bring fresh ideas and take Perl in a direction where it can be a viable solution for modern problems. I just pray it’s not too late.