Recently, Jason McIntosh, co-author of “Perl & XML,” and I did a webinar about all things Perl. We wanted to explore the concept of a “Perl Renaissance” and talk about where Perl is headed in the future. It was a great chat and we received many more questions than we could answer in the allotted time. I thought I would respond to them here so that everyone can see the answers.
You can access the webinar at this link.
1. What about the elephant: threads? From experience that’s why most people leave, it’s too hard.
I’ve written threaded code in C, C++, Perl, Python and Java, and it isn’t any fun anywhere. My favourite threading primitives are the ones Microsoft provides in VisualC++, but no matter which ones I use, it’s still hard. Perl is about middle-of-the-road, in terms of threading support, which I think it is reasonable given the kind of language it is. It aims to be general-purpose, as opposed to something like Erlang that is hyper-focused on doing distributed computing astonishingly well, but that suffers in other areas, like string handling.
2. Which language in your option will outlive the other, Perl 5 or Perl 6? In your personal opinion, was Larry right when he started to develop Perl 6 instead of transforming Perl 5 into something else?
In my YAPC::NA talk I argue that our model of languages dying is a result of the very recent past, which is a transient phase in technological history. The period between 1970 and 2000 was extremely unusual. New languages proliferated and a lot of them didn’t survive. In the 21st century, I expect the survivors are going to live pretty much indefinitely. As such, I expect both Perl 5 and Perl 6 will be with us for a very long time. So far, while it hasn’t found a major use-case in industry yet, Perl 6 has been an extremely valuable source of ideas for Perl 5, which makes it a good idea regardless.
3. Has Perl been harnessed to accommodate mobile technology as a development language?
Sort of. Google’s “Scripting Layer for Android” can be used to deploy Perl apps on Android phones: https://github.com/damonkohler/sl4a. And of course where Android is, iOS is not far away: https://github.com/goccy/perl-motion.
4. Do you plan to have more webinars like this with other Perl authors/developers in the future?
Sure. We both had fun and it seems like a good way to engage our community.
5. Any other graphics library besides GD in Perl 5 or Perl 6?
ImageMagick, mostly: http://search.cpan.org/~jcristy/PerlMagick-6.89-1/Magick.pm
6. What about the using the PDK – how does the speed of the executables compare to Perl command line and C?
“Not fast” is the fairest answer. Perl applications wrapped with PDK ultimately get run on an embedded Perl interpreter. If you want C-like speeds for Perl, you need to move to RPerl, which compiles a subset of Perl 5 to equivalent C and C++: http://rperl.org/
7. The CPAN library has a lot of older code that may not be compatible with the latest version of Perl. Do you see a lot of long time users, that may have started using modules that have seen a lot of love, holding off on using the latest version because their modules don’t work?
ActiveState has customers who are still on Perl 5.10 and even earlier. It’s fair to say that many of these people aren’t on the latest version of their favourite CPAN modules either. This is less about later versions of the modules not working, as Perl 5 is a pretty backwards-compatible language over the past fifteen years, and more to do with an “if it ain’t broke, don’t fix it” attitude. I think.
8. Has Perl handled/fixed Heartbleed/Shellshock/Glibc bugs?
ActivePerl ships with the most recent versions of various critical libraries, particularly OpenSSL, to ensure that bugs like these are handled quickly. Various community builds are good at pumping out updates for the specific platforms they support as well, especially when security is at issue.
9. Is Tk tool still viable for GUI-development ? What other options can you mention?
I’ve used Tk both natively (in Tcl) and via Tkinter in Python and while I haven’t used it recently in Perl I think it definitely is worth another look. Testing Tkinter against wxPython in a recent blog post showed that it performs very well, and doesn’t look half bad. Beyond that, wxPerl is useful. There is a Perl Qt project, but it appears to be quite dated.
10. I am developing this https://github.com/KES777/Devel-DebugHooks. I have a question on how to integrate this debugger into Komodo IDE.
Please ask this question on the Komodo Forums, likely in the How-To category: http://forum.komodoide.com/c/how-to.
11. Do you think a mid-level Perl dev should learn other languages? If so, which?
It’s always good to learn other languages. Personally I favour learning languages that have a very different philosophy from my main languages, which is why I’ve learned Haskell and JavaScript in recent years. If you don’t know any languages beyond Perl, C is never a bad thing to learn. The Perl interpreter is written in C as is almost everything else when you dig deeply enough.
12. Perl 6 was “officially” launched about 6 months ago, but doesn’t appear to be getting much press. What will it take for Perl 6 to get the attention it deserves? What will be its killer app?
If I knew, I’d be building it! Perl 6 has a lot of nice features and I was blown away by Damien Conway’s talk on Perl 6, number theory, and quantum computing at YAPC::NA. It will be very interesting to see the ways people find to use the language, particularly given the flexibility of the grammar and support for different styles of coding, from functional to imperative to declarative.
13. What Perl web framework(s) do you prefer and why?
Catalyst, mostly. Although RapidApp, which builds on top of Catalyst and uses DBIx::Class, as well as a few other interesting frameworks looks very interesting for rapid development of fully-featured web apps: http://www.rapidapp.info/
14. Why isn’t Perl evolving in data analytics since Perl Regex is very good at file handling?
This is a common misperception because so much of the data analytics work that is being done in Perl is being done in enterprises that don’t talk much about what they are doing or how. We see a great deal of data analytics going on in the Perl world, but like an iceberg, it is mostly invisible on the surface.
15. What are your thoughts about Perl 11?
It’s an interesting initiative and the people behind it are to be commended for shaking things up in the best tradition of open source communities everywhere. I’m old enough to remember the gcc/egcs split which ultimately resulted in a greatly improved and unified 2.95 release. While there is bound to be a certain amount of friction between different branches of the Perl community, I hope we can all remember that we are one community, and rally around one language at the end of the day. Perl 11 is a group of initiatives that attempt to move us toward that goal.
16. What compelling features in Perl 6 will attract the Perl 5 community?
Personally, I think the grammatical flexibility, the regularization of many traditionally tricky bits of Perl syntax, the improved object system, and the ability to return unevaluated “.perl” structures (which opens the door to interesting problems in symbolic computing and lazy evaluation) are all pretty compelling. They aren’t enough to make me jump from Perl 5, but I think they are interesting language features that deserve some serious attention from people who care about these things.
17. Is the Perl 6 “CPAN” coverage complete enough to move from Perl 5 ?
Currently the Perl 6 module coverage is fairly minimal: https://modules.perl6.org/
18. I have been using Perl for the last 10 years but after all this time it seems that it has not evolved compared to others, such as Python. What are your thoughts?
Having been away from Perl for the past decade I find myself coming back to a language that looks substantially better than when I left. We have Moose/Moo/Mouse, subroutine signatures of a kind, a host of best practices driven by the Modern Perl movement–which don’t change the language but do change the way we use it–and a continued focus on test-driven development. So from my perspective, Perl is a vigorous, active, and evolving language that is maintaining a lot of solid features from earlier versions while still being willing to innovate, experiment, and sometimes fail. C, C++, and Python–the other languages I’m most familiar with–are all evolving too, and Perl’s pace of change is comfortably consistent with what is seen in that group.
Thanks to everyone for the great questions. It’s the participation and engagement from the audience that makes these webinars much more dynamic, interesting, and fun to do. Thanks also to Jason McIntosh for talking with us and sharing his insights.
Title image courtesy of Gerd Altmann on Pixabay.
4 Reasons Why Discoverability & Observability Matter for Enterprise Open Source
Open source software has become a cornerstone of enterprise development, with open source code making up 90% of components in modern software applications. Open source’s flexibility, cost-effectiveness, and community-driven innovation