(Slightly OT) RE: terminating input

2001-11-04 Thread Dave Storrs



On Sun, 4 Nov 2001, Gary L. Armstrong wrote:

> I am amazed. How does someone figure out that you can do this sort of thing?
>
> chomp($value[++$i] = );
>
> I mean, $value[++$i]?  That really works?  Crazy.  [...]


Well, that's mostly a C-style issue (and yes, it is crazy).  C
programmers, for some bizarre reason, are convinced that there is a
tremendous shortage of whitespace in the world, and so, rather than
contribution to the death of the Old Growth Whitespace forests, they will
go to incredible lengths to jam things onto one line.  Personally, I have
this thing for clarity.  In my not-even-marginally-humble opinion, a line
of code should do one thing and one thing only (ok, sometimes I stretch a
point and do two things, if it is efficient and idiomatic).  In
particular, I have always despised the "increment a variable inside an
array index" idiom in C. Therefore, I would have written it as:

;
chomp;
$i++;
$value[$i] = $_;

Some people say "Oh no! Look at that!  You took up 4 lines where only 1
was needed!  Shame on you!  Gasp, horror, collapse in revulsed
convulsions."  To which I shrug.  They always thank me later, when they
need to maintain my code.

Rant mode off.  We know return you to your regularly scheduled list.

Dave



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: (Slightly OT) RE: terminating input

2001-11-04 Thread Paul Johnson

On Sun, Nov 04, 2001 at 12:18:38PM -0800, Dave Storrs wrote:
> 
> 
> On Sun, 4 Nov 2001, Gary L. Armstrong wrote:
> 
> > I am amazed. How does someone figure out that you can do this sort of thing?
> >
> > chomp($value[++$i] = );
> >
> > I mean, $value[++$i]?  That really works?  Crazy.  [...]
> 
> 
>   Well, that's mostly a C-style issue (and yes, it is crazy).  C
> programmers, for some bizarre reason, are convinced that there is a
> tremendous shortage of whitespace in the world, and so, rather than
> contribution to the death of the Old Growth Whitespace forests, they will
> go to incredible lengths to jam things onto one line.  Personally, I have
> this thing for clarity.  In my not-even-marginally-humble opinion, a line
> of code should do one thing and one thing only (ok, sometimes I stretch a
> point and do two things, if it is efficient and idiomatic).  In
> particular, I have always despised the "increment a variable inside an
> array index" idiom in C. Therefore, I would have written it as:
> 
>   ;
>   chomp;
>   $i++;
>   $value[$i] = $_;
> 
> Some people say "Oh no! Look at that!  You took up 4 lines where only 1
> was needed!  Shame on you!  Gasp, horror, collapse in revulsed
> convulsions."  To which I shrug.  They always thank me later, when they
> need to maintain my code.

Unfortunately, your code doesn't do the same as the original, however
clear it is.

If we're chucking opinions around, I think the first line is pretty
clear to anyone who has programmed Perl for a while.  I'd entertain
arguments for breaking out the increment, if $i was used elsewhere, but
if you're looking to clarify the code I'd probably want to get rid of $i
altogether and use the much more idiomatic push function.

Incidentally, I think the use of constructs like $value[++$i] is usually
more to save cpu time rather than whitespace.  [ Insert standard quote
about premature optimisation here. ]

> Rant mode off.  We know return you to your regularly scheduled list.

You call that a rant?  Here's my prime number generator:

  perl -e 'print"@{[grep{(1x$_)!~/^(11+?)\1+$/}2..shift||1e2]}\n"'

Get your teeth into that ;-)

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]