On Sat, Mar 27, 2010 at 05:24:00AM -0500, Dave Sherohman wrote:
> tl;dr summary:  I'll (++n)th Perl as my primary language.  I know it, I
> like it, and, gosh-darnit, it's just fun to use.

Indeed.

> --- cut here ---
> package PRangers::Cargo;
> 
> use MooseX::Declare;
> 
> class PRangers::Cargo
>   with KiokuDB::Role::Intrinsic {
> use MooseX::Has::Sugar;
> use PRangers::Item;
> 
> has item => ( isa => 'PRangers::Item', ro, required );
> 
> has qty => ( isa => 'Num', rw, required );
> around qty (Num $new_value?) {
>   return $self->$orig unless defined $new_value;
>   $new_value = 0 if $new_value < 0;
>   $self->_clear_calculated;
>   $self->$orig($new_value);
> }
> method add_qty    (Num $delta) { $self->qty($self->qty + $delta) }
> method remove_qty (Num $delta) { $self->qty($self->qty - $delta) }
> 
> has [ qw( mass volume ) ] => ( isa => 'Num', ro, lazy_build );
> method _build_mass   { $self->item->mass   * $self->qty }
> method _build_volume { $self->item->volume * $self->qty }
> 
> method _clear_calculated {
>   $self->clear_mass;
>   $self->clear_volume;
> }
> 
> }
> 
> 1;
> --- cut here ---

class PRangersCargo():

   def __init__(self):

      self.item = PRangersItem()
      self.qty  = 0

   def addQty(self, delta)

      self.qty += delta

   def removeQty(self, delta)

      self.qty -= delta

   def mass(self):

      return self.item.mass * self.qty

   def volume(self):

      return self.item.volume * self.qty


> That doesn't feel overly messy to me.  How about you?

Python looks more clean and elegant to my eyes, closer to the
pseudo-code.  I could show Python to a non-programming accountant or
doctor and they could follow what the code is doing without getting
distracted by arrows, double arrows or dollar signs.  I use C/C++ most
of my days to the arrows don't scare me.

> > You just have to accept indentation (white space) matters.
> 
> When I first heard about Python, my initial reaction was "I could never
> trust a language with syntactically-significant whitespace."

It smelled funny, indeed.

> When I finally tried Python, I have to admit that, aside from a little
> initial confusion about the rules regarding it, the whitespace thing
> didn't bother me at all.  A ton of other things did, though.  Perhaps it
> was just lack of familiarity, but I felt constantly hamstrung by having
> to work out how to think like Guido instead of being able to express my
> thoughts directly.

I have to hit the Python manual often even for simple things like list
or string methods while I haven't opened the Camel book in ages.  But
those might be quirks of naming things - on the fundamental level,
Python is beautiful.

> I'm not, by any means, trying to say that there's anything wrong with
> Python or that Perl is objectively "better", but Perl works the way my
> mind works, so I like it.  Python doesn't, so I prefer to avoid it.
> That's what works for me; YMMV.

Perl is like playing, Python is like working.  One is messy and fun,
the other one is clean and revenue producing 8^)  Can't have one
without the ooooooother.

Cheers,
florin

-- 
Bruce Schneier expects the Spanish Inquisition.
      http://geekz.co.uk/schneierfacts/fact/163
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20100327/2425937d/attachment.pgp