Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Announcing the Enlightened Perl Iron Man Competition (shadowcat.co.uk)
15 points by brunov on April 21, 2009 | hide | past | favorite | 9 comments


I promised to stop trolling so I will choose my words carefully.

Don't ever use Perl for a new project. As someone who has written close to a hundred thousand lines of the stuff, maintains tens of thousands more written by others, knows dozens of CPAN modules by heart down to the source, and can't forget a single paragraph of the Camel or PBP no matter how hard I try: Perl advocacy is downright immoral. If it weren't for the kind of sentimental, provincial, outdated technology activism and apologism that this post represents we'd be vacationing on Mars.

I'll be more than happy to debate the merits of Perl 5 until you and I are blue in the face, but please don't make me. This conversation is so tired. My only motivation for posting this comment is to spare others the pain I've been through.

There are better options. Stop trying to rewrite your language with libraries: you don't have true syntactic abstraction. It's over, let go with some dignity.


The first half of your second paragraph is a bald appeal to authority. Your third paragraph is a coy refusal to support the argument in the second half of the second paragraph. (I could mention the emotionally charged language in words such as "immoral", "provincial", "outdated", and "activism" but I'm not sure if it's more ad hominem or well-poisoning. Besides that, you missed a fine chance to spit on the word "marketing" with all of your exaggerated rhetoric.)

The third paragraph is ... well, I don't even know what "true syntactic abstraction" means in this case, nor why it's so important to you.

All you've said is that you don't like Perl. Good for you, I suppose, but I expect better from HN comments. Inspecific, unsupported advocacy is, at best, a distraction.


It bears mentioning that you've created this account for the specific purpose of writing this comment, perhaps you are the author the blog post in question?

I don't dispute that I make an appeal to authority in the hopes of diffusing a debate that I've already had and don't care to have again. You would be ill-advised to premise your argument on the supposition that I'm bluffing, however, as I am not.

I did not refuse to substantiate my claim, I merely indicated that said claim has been substantiated in excruciating detail (by myself and others) elsewhere, ad nauseam. If your legitimate interest is to have access to that information, and not to take cheap psuedo-textual pot shots at my well-intentioned comments then I will gladly reprise them for you, at any level of detail you desire. You've made no such request (as someone interested in defending Perl, or rather attacking its attackers, you most likely have all of that information already).

True syntactic abstraction can take multiple forms, but basically it means CL-style macros. It means the ability to introduce arbitrary language constructs indistinguishable from built-in ones. Perl advocates claim that Perl 5's glaring deficiencies are not a problem because there are CPAN libraries that address them, providing things like try/catch blocks. This (and other similar band aids for things like object-orientation) are frequently implemented using Perl's relatively weak support for syntactic abstraction (using subroutine prototypes, but then again, you already knew that).

I'll be the first to admit that I'm a weak debater and an even weaker writer. But my intentions in writing that comment were entirely sincere, and I am in fact capable of backing it up. You on the other hand are attempting to use your superior dialectic to attack the weakness of my writing, asking questions you already know the answer to, in the hopes that any passers-by can be confused into missing the forest for the trees.

It is profoundly ironic that your predictable decision to bring out the old chestnut (ad-hominem) was in a parenthesis that begins "I could...". It is even more ironic that you wind up by blasting me as "inspecific, unsupported advocacy" given that you are coming to the de facto defense of an article which is a battle cry for just that!

What is going on here?


If true syntactic abstraction is CL-style macros, then almost no language has true syntactic abstraction. It seems odd for you to single out Perl in that category -- as you should look at Devel::Declare, which is an improvement over the core module Filter::Simple, both of which provide syntactic abstraction for Perl 5. (In particular, MooseX::Declare seems like a very good candidate to address your criticisms both of Perl's syntactic abstraction and its rather simplistic default OO model using something other than merely subroutine prototypes.)

If you're capable of backing up your complaints, please feel free to link to previous discussions, rather than making everyone go look for them on their own. A few moments of research on your part would save the rest of the Internet countless time.

... and no, no matter how much you'd like to invalidate my comments by arguing that I wrote the post in question, I'm not and have never been Matt S. Trout.


I'm not singling out Perl for lacking syntactic abstraction, I'm pointing out that a horribly brain-damaged language (sigils dereferencing multiple variable namespaces? don't even get me started) cannot be saved without it. Modern Perl practice seems to always involve CPAN modules that attempt to rewrite the syntax of the language one way or another, frequently with prototypes.

I've commented on HN about this before (admittedly less tactfully than I would have liked to), you can read some of my previous comments at:

http://news.ycombinator.com/item?id=157183 http://news.ycombinator.com/item?id=157323

For another (slightly more inflammatory but no less valid) view on the subject there's the classic:

http://steve.yegge.googlepages.com/ancient-languages-perl

I'm not trying to invalidate your argument by insinuating that you are the OP, merely pointing out that only a coward hides behind a shell account to carry out an argument founded in trickery and logical fallacy. If you want another reply from me you will have to show up as yourself, I don't think I'll exchange niceties with your puppet any more.


I would have thought that Googling "chromatic perl" is easier than throwing more ad hominem ("coward", "shell", "trickery", "[sock] puppet") implications around. Shame on you; your linked posts had much more substance to them (though of course, recommending Python or Ruby over Perl seems disingenuous after praising Perl for getting lexical scoping and first-class functions correct).


i know who chromatic is, you'll excuse me for assuming that an account created in the middle of the night for the obvious purpose of picking a bone with me (by someone who gives every indication of being a long time HN user) was merely an homage. if that's actually the chromatic of the 5.8 test suite talking then i take back my remark about the shell account.


can't forget a single paragraph of the Camel or PBP no matter how hard I try

This is probably the problem. PBP and the Camel are horribly outdated, and most of PBP's advice was crap when it first came out. You are going to hate Perl if you follow its advice to the letter. PBP Perl is the worst of Java mixed with the worst of Perl. Yeah, that's going to suck.

Anyway, as someone who probably writes and maintains as much Perl code as you (just see my 100+ Perl projects on Github), I've found Perl to be significantly simpler to write and maintain than other languages, and I would recommend it over nearly every other language that I have used. (Cases that I wouldn't recommend it for? For apps that need to be faster, I would use CL; and for apps that need to be massively concurrent I would recommend Haskell. But I certainly see no use for Ruby, Python, C#, Java, or Erlang, Perl's "usual" competitors.)


jrockway, since you're a long time member of HN and I enjoy your comments on other topics i'm more than happy to agree-to-disagree with you about perl. if you "see no use" for any of [ Ruby, Python, C#, Java, Erlang ] then it is unlikely that we have any common ground on which to meet about this, but i'd rather avoid a confrontation on the subject because i'd like for us to get along. :)

cheers, ben




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: