From: "Octavian Rasnita" <[EMAIL PROTECTED]>
> Perl has a big advantage from the perspective of the initial programmer, but 
> a very big disadvantage from the perspective of the maintainer, and this is 
> "There are more ways to do it".

I don't see this as a disadvantage. Different ways may be better in 
different places. And the several ways to write even a single 
statement let me express the intent better than if I was restricted 
to just a single way. Though I admit I sometimes go balistic over 
someone elses code. Things like

  print "<TR>\n";
  print "<td class=\"bar\"><b>baaaar</b><br/>\n";
  print "<a href=\"$url\">foo</a>";
  ... and so forth for twenty more lines

drive me up the wall. But the catch is that this is exactly what I 
would have to write myself if there were not the several ways to 
write a string literal.

What this does mean though is that maintenance programmers need to 
learn more of the language than those that are writing scripts just 
for themselves.

> I also don't like at all the Visual Basic style of expressions that are not 
> ended with a ; but with an end of line, however, many programmers say that 
> this is very nice, because too many punctuation chars make the program 
> harder to read.

 I find both

  puts 1 + 2 +
   3

and

  puts 1 + 2 \
   + 3

much harder to read then I would

  puts 1 + 2
   + 3;

(This was Ruby, it is "bright" enough to merge two lines into a 
single statement if the first ends with an operator or something 
similar. It's not bright enough to do so if the first line has a 
brace open. So this

  puts (1 + 2
   + 3)

would not work. Though at least it fails noisily.

 > The programmers in ruby and python (and other languages) use to 
like 
> separating the expressions in more smaller parts, while the perl programmers 
> like very often to use a bigger expression in a single line, and this makes 
> it harder to read. For example:
> 
> my $id = 123;
> my $name = get_name($id);
> my $age = $age{$name};
> print $age;
> 
> is often written in perl as:
> 
> print $age{get_name(123)};

It's hard to find the right border here. Split it too much and you 
break the otherwise simple action in too many steps. Make the single 
statement too long and people will be unable to decipher it. I guess 
I'm a bit far on the "don't introduce additional variables and lump 
it all together in one statement" scale.
 
On the other side are those that turn off their brains and start 
running around screaming "Unreadable! Unreadable!" as soon as they 
see a "map".

> Also, perl remains a language for Unix platforms. It is much used under 
> Windows, but there are more perl modules that don't work at all under 
> Windows, or that work badly, or which work with a version of perl but don't 
> work with the next one...

I don't agree here. This was true back in, say, '97, but it's not 
now. When I started with Perl the manpages were full of references to 
Unix manpages (a lovely thing if you work under Windows with no 
access to any Unix) with even things like printf() being explained as 
"Works the same as printf(3)". The list of important modules that did 
not work under Windows was also quite long, but now most of the 
modules you'd want to use either do work or have a Windows only 
counterpart or are too Unix centric to be of any use. IMHO of course.
 
Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to