23 Years of Culture Hacking With Perl 99
Modern Perl writes "Larry Wall, the creator of Perl, reflects on Perl's history of hacking its culture, from subverting the reductionist culture of Unix to reinventing the ideas of programming language and culture in Perl 6 and the verbal aikido used to encourage honest detractors to become valuable contributors. Perl turned 23 years old last week, and Perl 6 is available."
Perl6 (Score:2)
The only requirement is that you know how to be nice to all kinds of people (and butterflies)
Reading the Perl 6 page - either they are REAL programmers, or they use emacs.
Re:Perl6 (Score:4)
Mind you, I'd be thrilled to see some nice new stuff in the Perl space. But I work on a software appliance and some of the customers pay tens of thousands of dollars (or more) for it and they do expect a modicum of reliability....
Re:Perl6 (Score:5, Interesting)
I've been playing around with Perl 6 a little this week. Rakudo works well enough that I'll be using Perl 6 where I've previously been using Perl. I find it useful to follow the Perl 6 Planet, as it has a bunch of Perl 6 developers' perspectives and musings as they use the langauge. (For example, one guy wrote his blogging engine in Perl 6, and commented on speed differences between a couple Perl 6 implementations.)
I'm also helped that Larry Wall has been doing active code review of the Perl 6 code [rosettacode.org] over on Rosetta Code, a site I run; it's nice to have an active source of idiomatic code for understanding the language.
Esspweb (Score:1)
Yeah, now try hiring for it. (Score:5, Interesting)
(Hiring ~4 OO software engineers to do Perl. [newtonsoftware.com] Forgive the inane outsourced hiring-management site. Merry Christmas.)
Re: (Score:1)
Why bother limiting it by language?
We're a perl shop, and don't really require any applicants to know Perl to come in through the door. Bonus points for knowing functional languages, SmallTalk, Scala, whatever.
There is ramp-up for people to pick up Perl, but if they're good developers it's a pretty negligible period of time. It takes a lot longer to get people to understand the ideas of functional programming they can incorporate in that makes the code significantly easier to use, write and test.
Re: (Score:3)
Re:Yeah, now try hiring for it. (Score:4, Interesting)
Re:Yeah, now try hiring for it. (Score:4, Insightful)
Don't be too hard on the recruiter. All his training puts the highest priorities on "skills", and very specific experiences. He wouldn't know a great coder from a good liar who feels that spreadsheet macros are his limit. A person like that shouldn't have been given the job of screening applicants. It's not his fault, it's the fault of management for delegating this crucial function to someone who lacks the background to judge the technical merits of applicants. What tools he has left for making judgments are weak, but it's all he has, so he uses them.
And it's all our faults for focusing far too much on specific languages. We all know that anyone who is good at several programming languages is not going to have a problem picking up a new one. Even programming paradigms are not the big deal they make them out to be. OOP and Functional Programming are not that profound or mysterious. Lot of what is being called functional programming is actually modular programming. But you can't tell any of that to the interviewers. Have to tailor your resume and give yourself a crash course on whatever it is they say they want so you can answer the trivia questions they're using to screen people. I use Perl, but I sure don't have something like all the operators memorized. That's what a reference manual is for, and I have found the Camel book an excellent one.
It never ceases to amaze me that so many companies treat the search for talent as little more than a rigged lottery. Head hunting agencies are even worse. They come up with the craziest, completely subjective, off-the-wall reasons for rejecting people, and then complain that they can't find talent. "Learning on the job" is so pre 1980. "Hit the ground running" or "don't let the door hit your ass on the way out" is the way things have been for a long time now. And they don't want competence alone. Many also seek signs that their choice won't leave, and can be pressured to work harder, maybe has something in the closet that shows he understands the "realities" of doing business and so will not make any trouble for management, by, say, doing any whistleblowing. They want a contradiction-- competence at the job, and incompetence at personal finances so that the employee cannot leave without losing everything. Makes the employee more "reliable".
Cue the job postings for 5 years of experience in Perl 6.
Re: (Score:3)
Re: (Score:2)
Yeah, I think in hiring that HR need to be focussing on where their skills lie, i.e. not trying ascertain useful technical skills when they lack a sufficient background to do so. I remember my first tech job interview. The HR guy in that case doubted I had the skills to go in to an entry level tech support job, despite my having a a CS degree behind me and a decent background in Unix-likes and Windows systems. Oddly enough after doing tier one for a while I moved on to server, hardware and pro video support
Re: (Score:1)
Re: (Score:1)
Have you considered hiring good developers and then teaching them OO Perl? If your workplace uses Moose [cpan.org], for example, writing good OO Perl 5 is surprisingly easy and effective.
The Moose description says bad things about Perl. (Score:2)
The implication is that, without Moose, Perl 5 is difficult, inconsistent, and tedious.
Is this mistake, "... you can to think more...", indicative of the quality control for Moose?
Re: (Score:2)
That inference may go too far. Perl 5's default OO is flexible and powerful, but it goes too far in allowing flexibility and it doesn't promote an obvious best way for most projects. As with any abstraction which offers and takes advantage of defaults, Moose reduces complexity and makes it easier to write consistent and concise code.
I'm certain many CPAN contributors will welcome an
Re: (Score:1)
A little unfair.
Without using a framework like Moose (or Mouse even), Perl OO is less consistent (TMTOWTDI) and a bit harder. Moose automates and simplifies things like class accessors etc. so one could say Perl OO is also (potentially) more tedious without it.
Re: (Score:1)
After many years of excellent work, Perl is dying? (Score:2)
"There's more than one way to do it." [wikipedia.org] translates to, quoting from Wikipedia, "This makes it easy to write extremely messy programs..."
Re: (Score:2)
Perl is still alive and well on BSD systems :-)
Although FreeBSD purged perl from core a long time ago so that people did not have two versions of perl, base and the version from ports for real work.
Re: (Score:1)
Re:After many years of excellent work, Perl is dyi (Score:5, Interesting)
My experience has been largely:
-if working on existing progress, continue in language it is already in
-if working on new project, what's the language most comfortable for the most developers available
Frequently, the answer continues to be perl, sometimes python, sometimes ruby. Usually, I can't be bothered to care. If it comes down to my call, currently I prefer:
-If planning to use across many OS updates, perl5. Nice and stagnant, not screwing around with how it does things, perl6 threatens this.
-If not expecting a lot of churn on the runtime but active development across random developers coming and going as available, python as it forces readability.
-If expected to work in a barebones as possible generic windows, vbscript, but please no.
-If wanting to work with as few prereqs as possible on Windows server 2008r2/7, then powershell.
-Have gone along with ruby, but have not personally found the magic situation I personally prefer it for above all other possibilities.
Re: (Score:2)
I think Ruby beats Python in features only in rare cornercases, which aren't that hard to do Python either. When you already know Python there's not much motivation to learn Ruby. They're too similar.
Re: (Score:2)
This is my experience as well. However, in my case the definition of project is a bit loose:
- Someone wrote a script in perl and left the company.
- Someone else needs to make Improvements to this code but they dont know perl. Even though the original code is written in as clear and readable perl as possible, they automatically think perl is hard. This is in fact company policy now. They write a python script and make a system call to it from the perl code. Soon there are two, three... seven python calls in
Re:After many years of excellent work, Perl is dyi (Score:5, Interesting)
My recent experience is that discussions of Perl quickly turn to discussions of Python, after people make statements like, "If it weren't for CPAN, Perl would be dead."
That's not too far from the truth, if you understand that statement to be analogous to "If it weren't for the US dollar, the American economy would be dead." It may only be one thing, but it's a pretty big thing.
"There's more than one way to do it." [wikipedia.org] translates to, quoting from Wikipedia, "This makes it easy to write extremely messy programs..."
No grasshopper, you fundamentally misunderstand the implications of that statement. Show me a problem in which there isn't more than one way to do it, and I'll show you a problem you haven't grokked properly yet. Perl is a language without ideology. If programming languages were religions, perl would be closer to atheism (sorry Larry) than to anything else. Yes, it sometimes does cast people adrift because they're forced to accept that there is no final arbiter, that sometimes choices do come down to indulging one's biases. The difference here is that we recognise that, and that you have no one to blame for the biases except yourself.
For a good programmer, this is one of the paths to enlightenment.
To abuse the ideology metaphor a little further, perl is democratic (and borderline anarchic) because it does not criminalise stupidity. Likewise, it doesn't always protect you from yourself. If you really want to do things a certain way, the language probably won't stop you, and might even help you.
And if you still don't get the freedom that perl provides, feel free to vacate the green space in front of my domicile. I'm not going to force you off, but I might laugh at you if you stay.
Re: (Score:2)
Re:Yeah, now try hiring for it. (Score:4, Informative)
If you're looking for Perl 6 coders, you might try their IRC channel, #perl6 on Freenode [perl6.org].
Re: (Score:2)
Perl software development is a seller's market, and that job ad is rubbish and fails to pique interest. It's a bland description with no indication of benefits or salary on offer. In fact, it's even less detailed than the crap Perl job ads that pimps spam me with me on a daily basis. Lack of detail implies there is little good to say about the job. Is that the impression you want to give?
Answer this simple question: Why the bloody hell should I quit my current gig and come and work for you? Then put that an
Re: (Score:3, Informative)
I've been a build engineer since the mid-80's. My first exposure to Perl was in 1989. The last line of Perl I wrote was in 2005. I spent a year deciding on which direction to go... Python or Ruby. I went with Ruby as my primary scripting language, and have brought Ruby and Rails into 5 companies to build engineering infrastructure. The reason I went with Ruby was due to its simplicity, power, DSL support, and Rails, and both the Ruby and Rails community. In Silicon Valley I found that when working with peop
Re: (Score:2)
Re: (Score:2)
Well, I would say it's not too surprising for a different reason: perl 5's support for OO is ugly and bolted on, so anybody who's a real enthusiast for OO probably isn't using perl. Although perl 6 is designed so that OO isn't ugly and bolted on, perl
Re: (Score:1)
If Perl 5's default OO is the wrong choice, how is Python's OO the right choice? Syntactic differences aside, they're the same system.
Re: (Score:2)
If Perl 5's default OO is the wrong choice, how is Python's OO the right choice? Syntactic differences aside, they're the same system.
Syntactic sugar is important. Another difference is that in python, ruby, and perl 6 everything is an object, but in perl 5 everything is not an object. I can see various design trade-offs inherent in the everything-is-an-object decision, but, e.g., in ruby one big benefit is that the namespace is clean and the structure of the libraries is very logical and easy to understand. Cf. perl 5, where basically you just have a ton of functions that are thin wrappers for everything in the traditional C/Unix toolbox
Re: (Score:2)
Blekko's search engine and NoSQL database are written in Perl. We haven't had problems hiring experienced, smart Perl people, and we've also had no trouble getting experienced Python people to learn Perl.
Re: (Score:3)
Large OO Perl systems tend to be complex, slow sacred cows into which people who should have known better invest their careers. Arguing for total replacement of old VB applications is easy, but there is always great reluctance to rip out Perl messes. Only a desperate or foolish person would want to accept an invitation to someone else's Perl horror show.
Once the people responsible for the Perl disaster leave, it will be easy to find people interested in engineering something that isn't rubbish.
Ruby? Really? (Score:2)
Ruby has all the mindshare these days.
I think I've heard of Ruby. Wasn't that popular around 2005?
Seriously, all the mindshare? Really?
Perl (Score:5, Funny)
Re:Perl (Score:5, Funny)
Yes, the last 40% was purely gratuitous.
Re: (Score:2)
That's not a really ofuscated construct. If you know the common 1-character variables, then you know $@, as that is one of the most commonly used ones.
I like the sense of humour displayed by the programmer; but his joke is a bit misaimed, as it only reinforces the standard stereotype of Perl.
For the non-Perl programmers here: $@ is the variable holding the return code of the most recently called function. This return statement thus returns the boolean negated version of that code. The ; ends the return stat
Re: (Score:1)
sub check {
my $ip = shift;
eval{ &lib::function($ip) };
return !$@;
}
So if $@ is null it returns true. Otherwise false since ! is a condition operator. And they can do false by calling "die" in that lib::function. But yes, that is rather silly. I'm hoping they couldn't control the other code for some reason.
Re: (Score:1)
I simplified. Of course $@ is set by eval, but that requires a bit more in-depth explanation than I was willing to give.
Of course, this being slashdot, there'd have been someone along to provide that anyway. Thanks.
Mart
Re: (Score:1)
The only language that looks the same before and after RSA encryption.
In typical programming, when a comment block accompanies some procedure explaining
what that does, this comment is a short paragraph and the code - a bulky flowing construct.
Perl, on the other hand, is very dense and with many idiosyncrasies. For example:
There is another art characterized by terse, overloaded semantics, tenuous connotations.
It is called poetry. Not everyone can write poetry. Not everyone ca
Re: (Score:1)
outside of =()=, I find that code to be pretty simple:
$a bitwise xor $b (thus the result contains \0 in each char that is the same)
regex looking for null chars in a string
thus this returns a list of null chars
My guess is that this =()= set of operators causes the $n variable to be the result of the list evaluated in scalar context (resulting in the length of this list).
Indeed if you look closely you can see that that is 2 assignment operators and an empty list. You could rewr
Re: (Score:2)
I'm always struggling with forcing context, but surely this could have been written as ($n) = ($a ^ $b) =~ /\0/g;? By parenthesizing $n you'd force list context, right?
Mart
Re: (Score:2)
Oh bugger.
Of course you're right; the object of the given example is to have the final evalution in scalar context, to get the length of the intermediate list.
See what I mean about struggling with forcing context?
Mart
Re: (Score:3)
In typical programming, when a comment block accompanies some procedure explaining what that does, this comment is a short paragraph and the code - a bulky flowing construct.
Perl, on the other hand, is very dense and with many idiosyncrasies. For example:
Yes, but you do not have to write it like this. You can choose a more readable, more explicit way to write this in Perl. I always try to avoid excessive cleverness when I write code; one reason is that I'll forget what it does, and have to figure out all over again. Trying to squeeze as much trickery as you can into a single line of code is just a kid's game.
Re: (Score:2)
The only language where comic book swear words will beat you at tic-tac-toe.
Perl Golf (Score:2)
If you don't know what perl golf is, time to treat yourself to some mind blowing perl. Perl golf is a challenge to complete a give set of algorithms in the fewest (key) strokes. Consider the Buroughs Wheeler algorithm, which is what bzip uses. How many keystrokes should that take to write? how about 55?
http://perlgolf.sourceforge.net/cgi-bin/PGAS/post_mortem.cgi?id=11 [sourceforge.net]
Mind blowing. Also informative as well.
I love perl. It has it's problems but I love how it's such a mutable language and how simple the
meh (Score:1)
Re: (Score:2)
Since you're so sure of yourself, you should have no problem explaining what's worse about it, right?
I love Perl, but (Score:3, Insightful)
The thing that kills me about the Perl culture is that the delusions of what things mean to the non-Perl world.
This article is yet another example of that. Larry writes about Camelia representing so many points, which sound fantastic but are complete bollocks. Perl6.org, and specifically Camelia, do not say "fun", or anything about sterile environments or anything about clarity.
What it says is that in 23 years, the old Perl guard still hasn't figured out that making something that looks completely stupid makes people think you are completely stupid.
Everything looks completely stupid that comes out of Perl6.
Nobody really even knows what Perl6 is (even O'Reilly) and then randomly people point out Rakudo Star. This looks like the community is fractured (which it isn't, but it looks that way at a glance, which is all people are getting.)
I'm saying all this as a Perl hacker. I do love Perl, I think it's great, but all of this is basically turning Perl into something like Furries. The people involved seem to not think there is anything wrong, but every other person in the world makes faces at them.
I can't imagine being involved in that good thing Scala really is all those things Larry wishes Camelia represents.
Re: (Score:2)
I question this.
The argument that "No one will ever take a programming language seriously because it has a cartoon butterfly for a logo! Are you six years old?" says a lot more about the arguer than the logo or the language or the community. At least it suggests to me that I would not enjoy working with the person making that argument.
Re: (Score:1)
Well, if that was actually what I said you may have a point.
Unfortunately that wasn't what I said, nor what I intended.
My point is simple: The Perl (specifically the old guard) community constantly puts out statements that only the Perl community understands or agrees with.
In this case, it's "Camelia represents fun, organic growth, clarity, etc." that is being proffered as a statement of intention. Camelia, like most Perl endeavors, fails to represent those things.
It completely astounds me that so many smar
Re: (Score:1)
Perhaps to you.
Do you speak for everyone outside of what you've defined as "the Perl community"?
Re: (Score:2)
I'm outside the Perl community and I agree with him. Maybe you should get out more often?
Re: (Score:1)
I'm sure some people agree with that sentiment. I don't agree that most or all people do.
Re: (Score:2)
If you use dog shit for an envelope, nobody wants to read the letter.
Butterflies are widely regarded as more pleasant than dog shit.
Re: (Score:2)
Given the large number of flies[1] that exist, I doubt that is actually true.
[1] the non-butter variety.
Re: (Score:3)
The grinch detector seems to be working well here.
Re: (Score:1)
Agreed. My first thought when I saw Camelia was: "That looks dumb, oh well." But when I first saw a post complaining about it I suddenly saw her as the most beautiful thing in modern programming. (Runner up: colon syntax used with closure arguments. JS needs this.)
Rambling, barely coherent, self-indulgent. (Score:4, Insightful)
I suppose I learned a lot about the Perl community though.
Re:Rambling, barely coherent, self-indulgent. (Score:5, Insightful)
I suppose I learned a lot about the Perl community though.
Larry may sound glib most of the time, but if you took the time to look, you'd see method in his madness. He chooses to make his points lightly, because that's an important part of the message. Perl as a language is designed to reflect the idiosyncrasies of the human brain. It treats dogmatism as damage and routes around it. As Larry wrote, it is trollish in its nature. But its friendly, playful brand of trollishness is what allows it to continue to evolve as a culture.
Strip away the thin veneer of sillyness and you'll see that everything I've written has been lifted directly from Larry's missive. Just because he likes to act a little silly doesn't mean he's wrong.
One of the worst things a programmer can do is invest too much ego, pride or seriousness in his work. That is the path to painfully over-engineered, theoretically correct but practically useless software that often can't survive a single revision. Perl as a language isn't immune to any of these sins, but as a culture, it goes to some lengths to mitigate against them.
Re: (Score:2)
Perl as a language is designed to reflect the idiosyncrasies of the human brain.
I call shenanigans. Did a quick Google search. The only page I could find using words vaguely like these to refer to Perl is this one. (Isn't Google amazing? It's already indexed this article thread....)
So, you're telling us that as Perl grew from a simple string manipulating scripting language, Larry built into its design syntax and methods which mirror the way programmers' wetware minds work? That is... grandiose... to say the least.
He may say TMTOWTDI, but he (apparently) doesn't say Perl is designe
Surprised nobody mentioned yet (Score:5, Insightful)
Re: (Score:2)
And it was written by the other 999 monkeys. (The other one eventually wrote a Java program).
Re: (Score:2)
I tried looking at slashcode once, out of curiosity. It's a scary dark place and I'm not going back there again.
Re: (Score:1)
That /. is written in Perl.
Ah. This explains a lot.
stability and culture (Score:4, Insightful)
Re: (Score:3)
When I first started working with this internet thingy, the options to do anything with user data was your choice of C or Perl. Then I moved on to PHP because that was what a lot of projects and people where using. That's what we did our rapid development of our web app in was MySQL and PHP. A lot of that had to do with the initial client and what they had available on their hosting server. Once the proof of concept was signed off on and we had our funding for the final production product we had the gre
Re: (Score:1)
I have perl scripts that date to 1988 or so (perl 1-2 era or 5 jobs ago). By and large most of these have worked over time, but in the mid-90's I did need to edit a few scripts to put a backslash in front of the @ inside of strings. Yes, in many of my .pl libraries, I haven't bothered to change creating variables on the fly and using *pointers instead of using refs and other modern mechanisms.
On one of the camera groups, I mentioned I had perl scripts to manage my images, from download to album creati
Scary (Score:4, Informative)
So I looked at the Perl5To6 Manual, and it gave me a headache. Really, I had to get some medicine just now. There used to be 10 ways to do anything in Perl 5, and in Perl 6 there's 20. And operators are approaching APL in obscureness and number. It has ways of being even more terse at the expense of the maintainer's head possibly exploding. Some changes are very nice and clean up some weirdness, but they compensated for it with a vengeance.
There's macros, and more contexts (where function returns different things depending on how its value is getting used), and meta-operators, and operator overloading on never-before-seen scale, and weird variant types, and ways to embed an enum into any object, even more complicated regular expressions, and so on ...
your a noob if you dont answer in perl compilable (Score:1)
Re: (Score:1)
!#//bin/local/perl
Unless I missed the funny part of your message, that line is actually interpreted by the shell.
Misleading, Perl 6 is NOT available, not done yet (Score:2)
Re: (Score:2)
Go ahead and whine all you want. We'll be right over here using the language you pretend doesn't exist.
Re: (Score:1)
Not whining, I've done plenty of Perl 5 development over the last 20 years. Sorry to see Larry try to turn Perl 6 into mutant Swiss Army Knife with fold-out condom and umbrella and eggbeater and cuckcoo clock.
the guts of a thousand whales fed through a wood chipper....
Re: (Score:2)
Perl 6 spec is still in development, not done yet. Rakudo is an implementation of something that is not done yet, and pugs even less so. Anyone who uses this for any remotely production related is insane. Face it folks, Larry killed Perl.
I usually do not use the very latest version of anything on a critical project. The only reason to do this is if the new version has a feature you absolutely cannot do without. Even then, you should be aware that you're taking a big risk. I'd wait for it to age a bit, and maybe use the last known stable version, while other people try out the new stuff. That being said, I find your comment to be a bit on the panicky side. It's a bit early for an obit on Perl.
Perl sadly out of fashion, politically incorrect (Score:3)
ah, Perl (Score:2)
The language that was better than awk+shell. Didn't have much more going for it than that.