Slashdot Mirror


23 Years of Culture Hacking With Perl

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."

28 of 99 comments (clear)

  1. Yeah, now try hiring for it. by FooAtWFU · · Score: 4, Interesting
    Yeah, now try hiring for a good OO software engineer to write Perl. The applicant pool isn't spectacularly broad. Not too surprising, I suppose, since most of the positions out there featuring Perl are either QA automation or something titled "Build Engineer". Ruby has all the mindshare these days.

    (Hiring ~4 OO software engineers to do Perl. Forgive the inane outsourced hiring-management site. Merry Christmas.)

    --
    The World Wide Web is dying. Soon, we shall have only the Internet.
    1. Re:Yeah, now try hiring for it. by FooAtWFU · · Score: 2

      Oh, believe you me, we're not trying to "limit it by language" at all. The challenge is figuring out how to get those good developers (who I imagine are generally thinking "I suppose I'll look for a position at a cool, hip Web 2.0 startup using Ruby on Rails, it's a decent language") and hold their attention for long enough to pitch the position. After that, it's easy enough; there's just a dearth of interest. Hiring good people is certainly possible, but it goes really slowly, even when you have a decent recruiter to work with.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    2. Re:Yeah, now try hiring for it. by Short+Circuit · · Score: 3, Informative

      If you're looking for Perl 6 coders, you might try their IRC channel, #perl6 on Freenode.

    3. Re:Yeah, now try hiring for it. by FooAtWFU · · Score: 3, Interesting

      I should clarify, actually. We (the dev team) are not trying to limit it by language. Our in-house recruiter, however.... well, he's got different ideas about what we're looking for than we do, and let's just say I've heard rumblings from the head of Engineering which don't bode well for his future. Not that I can take any credit; I'm just now taking over hiring for my department; the battle to make our job posting look half-decent for this round of hiring begins when I get back from Christmas vacation. In the meantime, I'm asking around for tips.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    4. Re:Yeah, now try hiring for it. by Anonymous Coward · · 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 people that are coding in Java, they are in most cases going to script with a well accepted OO language like Python or Ruby. For me, both Ruby, Rails and their communities has had a huge influence on my coding and development practices.

    5. Re:Yeah, now try hiring for it. by bzipitidoo · · Score: 3, 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.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
    6. Re:Yeah, now try hiring for it. by DrVomact · · Score: 2

      This problem has been around forever. Management thinks that "managing human resources" is a special and oh-so-useful skill-set—only HR knows how to hire the right people. This results in a situation where both the candidates and the techies who are actually going to be working with the new hire have to circumvent HR. Think of it as an intelligence test. It's usually not much of a challenge.

      --
      Great men are almost always bad men--Lord Acton's Corollary
    7. Re:Yeah, now try hiring for it. by hxnwix · · Score: 2

      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.

  2. Perl by emijrp · · Score: 5, Funny

    The only language that looks the same before and after RSA encryption.

    1. Re:Perl by FooAtWFU · · Score: 5, Funny
      My favorite line of Perl code ever was in a validator somewhere. It checked whether something was a valid IPv4 construct (something netmask related, I forget the specifics) by passing it to the library, and seeing whether the library threw up or not.

      return !$@;#%

      Yes, the last 40% was purely gratuitous.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    2. Re:Perl by DrVomact · · Score: 2

      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:

      # Count the number equal letters (in same positions) in two strings a and b. $n =()= ($a ^ $b) =~ /\0/g;

      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.

      --
      Great men are almost always bad men--Lord Acton's Corollary
  3. Re:Perl6 by FooAtWFU · · Score: 3
    Also, I was strongly under the impression that Rakudo was still more of a 'useful, usable, "early adopter" distribution of Perl 6' than a mature, production-ready system.

    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....

    --
    The World Wide Web is dying. Soon, we shall have only the Internet.
  4. I love Perl, but by Anonymous Coward · · 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.

    1. Re:I love Perl, but by chromatic · · Score: 2

      Perl6.org, and specifically Camelia, do not say "fun", or anything about sterile environments or anything about clarity.

      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.

    2. Re:I love Perl, but by TimToady · · Score: 2

      The grinch detector seems to be working well here.

  5. Rambling, barely coherent, self-indulgent. by BitHive · · Score: 3, Insightful

    I suppose I learned a lot about the Perl community though.

    1. Re:Rambling, barely coherent, self-indulgent. by grcumb · · 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.

      --
      Crumb's Corollary: Never bring a knife to a bun fight.
  6. Re:Perl6 by Short+Circuit · · Score: 4, 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 over on Rosetta Code, a site I run; it's nice to have an active source of idiomatic code for understanding the language.

  7. Surprised nobody mentioned yet by toby · · Score: 5, Insightful

    That /. is written in Perl.

    --
    you had me at #!
  8. Re:The Moose description says bad things about Per by chromatic · · Score: 2

    The implication is that, without Moose, Perl 5 is difficult, inconsistent, and tedious.

    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.

    ... the quality control for Moose?

    I'm certain many CPAN contributors will welcome an automated testing system to find non-spelling documentation typos. That'll be a very nice addition to the extensive test suites for Moose and other important CPAN distributions.

    Thanks for reporting the typo, though. I'm fixing it in the repository right now.

  9. Re:After many years of excellent work, Perl is dyi by Junta · · 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.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  10. stability and culture by e**(i+pi)-1 · · Score: 3, Insightful

    What I appreciate most about Perl and C is the stability and culture. It is not just a hype which _might_ be around in 10 years. It is one of the languages, which will persist, it is a language I can rely on, just because experience has shown me that. In a rapidly evolving time, it is good to have some things which persist.

    1. Re:stability and culture by ducomputergeek · · Score: 2

      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 great debate. PHP was the early favourite, but then the question became "Which framework to use?" Ruby on Rails was what all the "cutting edge" folks were pushing for and a couple had mentioned Python. Well for every feature we wanted to create there already seemed to be Perl Module written for that. And some of the stuff was new at the time, like Twitter and FaceBook, yet there were Perl Modules already on CPAN. Plus as part of the long term plan was the requirement that eventually we'd likely be on DB2 and using something like Teradata for data warehousing. With Teradata, your choices with the other languages was ODBC or nothing. Perl had not one, but two DBI/DBD modules for working with Teradata.

      We ended up writing all our SOAP and REST API's as well as other "backend" code in Perl. We transitioned from MySQL to PostgreSQL with changing a few dozen lines of code and still running on PostgreSQL for both transaction and data warehousing. It's been stable and fairly easy to maintain simply because once we got it finished, there hasn't been any major changes to Perl. As far as I know, those servers are still all Perl 5.8.x and run day in and day out processing thousands of orders for our clients per day.

      The frontend client that most of our customers used was written in PHP. It required fairly extensive rewrite during the PHP 4 - 5 transition and then has required further modifications as a few functions were depreciated [Specifically split()] even from PHP earlier version of PHP to PHP version 5.3. Now that has been replaced by HTML5 + Javascript that talks to the Perl powered API.

      --
      "The problem with socialism is eventually you run out of other people's money" - Thatcher.
  11. Re:After many years of excellent work, Perl is dyi by grcumb · · 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." 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.

    --
    Crumb's Corollary: Never bring a knife to a bun fight.
  12. Scary by ornil · · Score: 3, 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 ...

  13. Misleading, Perl 6 is NOT available, not done yet by ziggyzaggy · · 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.

  14. Perl sadly out of fashion, politically incorrect by wdef · · Score: 2

    In some circles. I *like* Perl. I work non-coding with experienced C/C++/Javascript/OoP developers. These are desktop/UI programmers mainly with some server side. They use and expect fluency in Python, which I don't know much. Perl OTOH I know quite well. The head programmer knows no Perl. Mentioning that I like and know Perl is like ... well it's just totally irrelevant. Those on the team that know Perl keep quiet about it. Perl seems to be politically incorrect and by default and without trial held to be wrong for it "unreadability". Besides it's not Python is it.

  15. Re:After many years of excellent work, Perl is dyi by chengiz · · 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 the perl code.
    - Someone now wants to break the perl code up, so now there are python calls in the perl code and perl calls in the python code.
    - Someone wraps this up in a shell script.
    - Someone else learnt bash and not sh so they make bash calls in this code and it no longer works on non linux architectures.
    - Someone who knew the original developer calls him and they enjoy a wry laugh.