vision
20 years? The sufficiently sloppy Perl coder can write something he won't recognize after lunch.
Laziness, impatience, and hubris: the three qualities that make a programmer, according to Larry Wall, the creator of Perl. Perl earned its fame years ago by being the major language driving web programming, and distinguished itself from the rest of the pack by allowing developers to write full-featured programs using nothing …
Perl remains the ultimate proof of concept language. It takes 5 man years to write a semi-functional network facing provisioning framework in Java. It takes a man month to get to the same point (and way beyond) in perl. So as long as people still try to do a proofs of concept, perl will provide job security for many people.
I've seem some huge sites (50 million visitors a day huge) backended by Perl developed as proof of concept, which was going to be rewritten in lean C for raw blazing speed.. but it never quite happened. The perl kept going without breaking, was nice to maintain, and no-one had to take the time out to develop secure bullet-proof C with racing lines.
People rarely intend to deploy perl quite as much as they eventually do. However, it also doesn't let them down as much as many of the alternatives when they do. It's a really weird beast. Yay for Larry Wall, on balance.
@vision: The programmer will remember exactly how the code works, so long as he wrote it. I have seen portions of Perl I wrote 16 years ago, and I see straightaway how it works.
Other people's Perl code can appear alien not because the language in unintelligible, but because they choose to skin the same cat as you, just in a different way. I don't think Perl is more abstruse than other languages. When someone says it looks like "modem noise" or "pure punctuation", what they really mean is that they just never learned it, and they wish to de-emphasize its importance.
The philosophy of Perl was a major strength of the language, certainly up to version 5. This same philosophy might have now have grown into something that hampers the language. Perhaps Larry and Tom should move onto other things. Remember, it ain't broke.
@Jim:
You said:
"""When someone says it looks like "modem noise" or "pure punctuation", what they really mean is that they just never learned it, and they wish to de-emphasize its importance."""
No. When people refer to the Perl 'line noise' problem, they are calling a spade a spade. It persists as a truism because it is, in fact, true. It is standard operating procedure to use the following characters liberally in even the most trivial Perl application:
<>$@;".'/^[\]&|
Whereas in many, many other languages these sorts of symbols are few and far between. And as for the arrogant notion that "...what they really mean is that they just never learned it..." all I have to say is that I will sign off with my handle, in Perl:
perl -e "s&&tnirp_auto_reverse&&&s&.*_&$'&ee&&s&$'&&&&s&_([^_]*)$&&&&eval($+)"
Remember the Second system effect that the Mythical Man-
Month warned us all about? Perl 6 is the poster child. Years in the making, and now so late that by the time it's ready for people to bet their jobs on, no one will care. (Perhaps I'll run it on the GNU Hurd kernel. Oh wait, another Second System there - what is it now, 17 years?)
Pragmatism needs to be drilled into every coder out there. Make it as elegant as you like, but if there's a toss up between "good enough" and "years late", go with "good enough' every time. I have yet to see any technology that was delayed in order to achieve perfection that actually turned out to be as good as the delay should have suggested.
This post has been deleted by its author
It's perfect for us much hated system admins. Where else would you be able to download add-ons that attach to any system imaginable and all using the exactly same API specs? Perl really is the Gatling Gun of languages! Bullets spraying all over the place and every one of them missing the target!
Good point.
Except Perl 5 is way better than good enough so there was no great pressure to deliver Perl 6 early.
Its quite hard to make something good better, look at the vast "impovement " to XP that is Vista.
Plus you have got to remeber that Larry et al have day jobs!
When I started with Perl it was a revelation that problems as hard as I could then solve using Perl were solvable with so little effort compared to strictly typed languages lacking decent libraries. After using Perl for a couple of years I discovered I could solve even harder problems using Python in a reasonable amount of time and later I discovered I could still understand my own coding a year or 2 later after I'd designed something.
No Larry, similar things should look similar. That's why we call them "similar". *Different* things should look different. It's all about emphasis, which *still* isn't part of the perl spec.
Until we have an operator that means "I care about this, but only so much on any given day" and another that means "Meh" the language will still be a mere toy. It is ridiculous that my colleagues should, in this day and age, still be forced to code "open file or continue regardless" explicitly, or "check return code is zero. if it isn't, it doesn't matter" as a series of lengthy procedural statements.
Perl has strong enough data typing. The types are just a bit more abstract and powerful than what you're used to.
I really don't find Perl that unreadable. RegExps are a little scratchy to the untrained eye but they basically read left to right; the apparent obscureness is the result of their expressiveness and compactness, nothing worse. Once you learn a few simple rules they're very quick and powerful, and dead easy to read and write.
I recently had to rephrase a routine (not in Perl) to avoid RegExps; it's now half as good at dealing with the unexpected and twice as long.
Like Perl, written lots and lots of hackish weird shit in it over the years, particularly prototypes. I prefer to work in other languages these days, but I still have a particular fondness for it.
And yet, I can still find the article funny, unlike some of the humourless bastards that seem to be unable to restrain themselves from commenting every Ted writes something.
Seriously children, if you don't like the humour, stop reading his articles.
And BTW Ted, there wasn't anywhere near enough profanity in that article, man up.
... is overrated. Really. I refuse to believe in a general-purpose language that makes my life as a student of that language terrible by making the mantra something like, "Believe me, I know what I'm doing, you feeble creature! It is okay and acceptable for there to be twenty different uses for every keyboard character and it is not shameful for each routine to be different according to how you use it!"
So I learned Tcl and still can't get over the beauty of it. You should, too - you'll soon understand why pragmatism isn't all there is to it, and will probably wonder why perl still exists for doing more than states/awk and sed do now but faster. Why, wasn't that why perl was invented? And don't you find Python/ruby/Tcl already doing it better? Pffft!
You should require about ten minutes to fully digest the Tcl(n) manpage. Then you should require about three minutes for each command. Then you should be able to write a general-purpose program. You will find Tcl more metamorphic than perl, as well as much more minimal and hacker-sane. In a few days you will be incredibly attractive to members of the opposite sex, as can be evidenced from the fact that I still don't have a girlfriend. :-)
Lest there be any question as to my awesome hacker potential: my MTA of choice is sendmail, and I write my very own line noise^h^h^h^h^h^h^h^h^h^hcf files.
So ner! :-P
Cheers,
Sabahattin
On a technical note, "similar things" do differ, otherwise they are not called "similar" but "identical". So yes, similar things have common overlap, as well as distinct differences. They just have more things in common than not.
The article calls it zen, most linguists will prefer to call it actually paying attention to what the words used mean =)
And on a different technical note, perl's always had the hots for the "million and one ways to do the same job", so that tiny difference is apparently crucially important to the language. Why it can't be left an unintentional consequence of the language is a bit beyond me, but there you have it. Perl 6 - a language no one really needs, but with the help from Sun and Google will no doubt blossom into the new java: just another programming language to learn so you don't come off elitist when you turn down a well paying job because you felt better than the language they were using, even though you'll still settle for unpaid overtime because "that's what coders do" ;)
Its a mistake to call Perl 6.....Perl. Perl 6 its an experiment in language design and I doubt its going to go anywhere, because the old trick of throwing everything into the language but the kitchen sink is not going to accomplish anything at this day and age. Perl was really clever to put dynamic typing, functional programming syntax and regexps and end up with a powerful (for that time) shell scripting language. But languages like Python and Ruby have all that stuff with an easier to read Pascal like syntax. Perl is still the secret weapon of the hardcore admin, in fact sometimes I wonder why Perl hasnt become the default shell in certain flavors of *nix as Perl just puts Bash to shame.
When I see my neighbor using another type of lawn mower than me I quietly accept the fact that he probably has another way of mowing his lawn. If Perl does the job, and it indisputably does, then let the Perl coders have their way. :-)
@Sabahattin: I'm a satisfied network engineer with a pleasant job and a very lovely and beautiful girlfriend, and I use Perl. Sure you don't want to go back to using Perl? ;-)
And remember gentlemen: Programming languages are of no importance, only beer in pubs matter!
mr Dzuiba writes:
< Perl programmers have long ensured their own job security by writing code that the machines themselves have trouble understanding,>
Alas, other languages have their foibles too. Java programmers ensure their job security by writing so much code noone can be bothered to find out where it breaks, and a new system architect is called in. Pythonistas believe in the banal/specious dictum that everything is an object, including time/number/etc. few people argue it really makes their code more readable anyway, beyond trite wee examples, now the new language honeymoon period is over. obfuscation abounds in every higher order language, with or without lack of punctuation.
what matters in maintaining code is conciseness, style, brevity, and dare I say a sense of fun.
perl has all of the above, in bags.