This part of the thread is probably better as an advocacy discussion.

>From: Chip Salzenberg <[EMAIL PROTECTED]>

>The OP complained about Perl's expressive freedom.  Take that away and you
>don't have Perl any more.  In short, he *is* wrong.

I am firmly in favor of expressive freedom, but I don't think it's the only 
thing. There's a tension--not a contradiction--between expression and 
communication. I'm going to grit my teeth and quote myself on an unrelated 
subject:

"A fair number of bloggers (and poets) write only to express themselves. If the 
writer is satisfied with the results, there's literally no criticism which can 
be made of such writing, since it isn't written for anyone but the writer. 
There's no such thing as bad technique in masturbation--whatever gets you 
through the night is all right, or alright, or Madeline Albright. I make no 
judgements.

"However, writing which is intended to communicate to even one other human 
being (hell, this is true of code passed to a computer or commands spoken to a 
dog) has a larger purpose and is therefore held--rightfully!--to a higher 
standard."

Here's an exchange between Tom (the original poster) and Juerd that I think 
illustrates the point. Juerd is responding to Tom: 

To me, being able to write

    open my $fh, '<', $file or die "$file: $!";

instead of

    open(my $fh, '<', $file) || die("$file: $!");

is very important. I find the former both easier to write and easier to
read.

> C does indeed suffer from the same problem to some extent, but at
> least all the operators actually mean something different. With perl
> this extra nonsense was added specificly to encourage leaving out
> parens and leaving all but language lawyers scratching their head.

You say that as if leaving out parens is a bad thing. And you probably
think it is, but I disagree. That's exactly why it's important to
support multiple styles. As long as I can read your code, and you can
read mine, why should we both write the same way? I'm much more
productive if I can write things in a way that feels right to *me*, and
any employer wants their people to be productive, right?

<><><><><><><><><><><><><><><><>

First, let me admit that I'd probably write that line like this:

     open(my $fh, '<', $file) || die "The file $file could not be opened: $!";

The parens around the argument to die adds neither meaning nor ease of 
comprehension; the parens around the arguments to open do add to ease of 
comprehension. (I think. It'd be nice to see an actual experiment performed to 
evaluate my opinion.)

Now, whether that's easier for Juerd to read or not matters quite a bit if 
Juerd is the only person whose effort in reading that line matters. If a couple 
dozen (or a couple hundred) other people have to read that line, and it takes 
them on average, oh, ten percent more effort to read Juerd's way of writing it, 
an employer who wants their _people_ (not the one person writing the line, but 
everyone who works with it) to be productive will to tell Juerd to spend those 
two or four extra keystrokes in the interest of greater readability.

Please note that I'm not saying "|| XOR or" or "|| AND NOT or" or anything like 
that (I don't think I _could_ say that three times fast), although I could make 
an argument for it. What I am saying is that "it's easier for me" is a bogus 
argument.

>If we started "listening" (in the sense you use) to every complaint, pretty
>soon we wouldn't have a useful tool any more.

I'll get at what I meant by "listening" in a moment, but first:

>We'd have a grade-school art
>project, with everyone's finger painting up on the wall, and nobody feeling
>justified in praising one work over another, no matter how much better one
>was than another.

Isn't that exactly what having || and or enable in Perl style?

"Teacher, I don't like putting parens around my arguments!"

"That's okay--here's some '||-out' and a bottle of 'or' paint."

"Oooh--shiny!"

Now, as to what I meant by listening: I meant listening.

I didn't say, "Make every change someone asks for." I didn't say, "Agree with 
whatever people say." What I did mean was, "Pay attention! Pay attention! I'm 
talking to you and I hope you're concentrating!" for appropriate values of "I".

The language we need to change is not Perl. It's the language we use in talking 
about Perl. In particular, Perl people need to get rid of that (sigh) chip on 
their shoulder. (Whereas having Chip on your shoulder could only help you be a 
better programmer.) I've heard that tone since I first I spent time around more 
experienced Perl programmers, and I'm still convinced it's one of the reasons 
neither bottom-up nor top-down Perl advocacy is all that successful.

So, let's say something new. Here's a start: "I don't have to prove that I am 
creative! I don't have to prove that I am creative!"

>Some brains are simply not Perl-compatible.  (*cough*ESR*cough*)  That's why
>TMTOWTDI is so great.  We can send them off to follow the path of Python or
>Ruby or whatever, and they're happy (or they think they are).  Meanwhile, we
>feel good about ourselves for our open-mindedness.  Win-win!  :-)

Oddly enough, I spent part of the last week browsing books on Python and Ruby 
in the interest of broadening my horizons. I was about to take them back to the 
library, having decided they weren't really for me, but this thread has me 
questioning that decision. It's not a brain mismatch, but a question of 
cultural survival. At a certain point, the town I lived in no longer had a 
place for Hippie Johnny. Of course, they had the wrong man--I spell my name 
J-o-h-n-n-i-e.

Reply via email to