I listened to an interview last night with Perl guru Randal Schwartz. He said that Perl is meant for people who use the language at least two or three hours per week. If you’re not going to use it that often, you’re probably better off using something else. But if you use it full time, you can see huge productivity increases.
That matches my experience, at least the first part. I was attracted to Perl because I could imagine being very productive with it. At first I used the language infrequently. Every time I sat down to write Perl I had to work hard to reload the language into my brain. Then for a while I used it frequently enough to achieve some fluency. Then as I wrote Perl less often I could almost feel the language slipping away.
Of course you have to use any language, human or computer, to achieve and maintain fluency. But my sense is that Perl requires more frequent use than other programming languages in order to remain minimally competent, but it may repay frequent use more than other languages. I imagine this is a consequence of the natural language principles baked into the language.
One of the things I prefer about Python is that you do not have to use it three hours a week to remain competent.
Related post: Plain Python
5 thoughts on “Three-hour-a-week language”
Thanks for noticing my comment about Perl. Yeah, I stand by that assessment. Perl probably has a greater spread from beginner to expert than almost any other language, simply because it’s optimized for the experts.
Thanks. “Spread from beginner to expert” is a good way to summarize what I was trying to say.
I use C++ almost exclusively in my current job. I find I have to use it eight hours a day and I still forget 90% of what I learned yesterday. :-) So don’t feel bad about not writing perl. You’ll find a reason to get back to it one day. It’s just such a perfect language for extraction and reporting.
I agree with Randall, having recently gotten back into Perl, and essentially having to re-learn it. But, I’d forgotten all my bad habits from before, and feel I’m a much better Perl programmer now. I really only wasted time looking at the myriad of unnecessary (and unnecessarily bizarre) OO frameworks proliferating in Perl these days, which almost sent me running into the arms of Python — which I’ve never used seriously, but still feel I could be comfortable with on day one.
I thought Randall Schwartz was proclaiming Smalltalk exclusively these days?
I remember Randall Schwartz from back in high school, where we were both on the same hp 2000 timesharing system. He was a much more prolific programmer than I was, even back then.
But I am not sure I agree with him about the at last “two or three hours per week” thing. I learned perl back in the 1990s, when I was hired by a security firm to write in the language. The contract required “CPAN style” and needed a couple dozen modules, and my rate was low enough to cover my learning time. That experience has stuck with me ever since. I often go for months without using perl, and occasionally I find myself incorporating it into one-liners because it’s my most comfortable tool for the job. And I have never seen a language with a package archive as comprehensive (sorry, I could not resist) as CPAN.
Nowadays, I am programming in python, and I still reach for perl for some manipulation and/or summary tasks. I have a deeper understanding of perl’s internals than I have for python’s. And yet, I sometimes go for months without using perl (or not in any way that stands out in my memory).
For example, even though it’s been well over a decade, I still know what “blessed thingy” means, and I also understand perl’s “unblessed thingies”. I do not know much of anything about that level of abstraction in python (but I do know about dir(), and .keys() and I have a vague understanding that python’s core mechanics are somehow a reflection of C++ … and I sometimes think that if only C++ had a portable name mangling that I might sometimes enjoy working with C++).
I have enough of a perl vocabulary that I know how to perform relevant searches when I am reaching for a concept. Python? Not so much…
One of the issues I currently have with python is the boiler plate code — when I try to read someone else’s python code I do not know how to distinguish the significant stuff from the boiler plate.
To be fair, I have not had anywhere near as big of a project to tackle with python as my initial venture into perl. And, I can see some of the potential of python. By I am often stumbling over python’s warts (python 2, since no one has built out most of the community’s infrastructure for python 3).