Confessions of a Python fanboy

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Tue Aug 4 12:01:06 CEST 2009


Steven D'Aprano a écrit :
 > On Tue, 04 Aug 2009 10:03:53 +0200, Bruno Desthuilliers wrote:
 >
 >>> Disadvantages: your code is filled with line noise. It's an arbitrary
 >>> choice between @@ meaning instance attribute and @@ meaning class
 >>> attribute -- there's no logical reason for choosing one over the other,
 >>> so you have to memorise which is which. It's easy to get it wrong.
 >> So far that's something I have no difficulty living with.
 >
 > I don't like arbitrary symbols.

Neither do I - when there are too many at least. But I can certainly 
live with a couple ones. Now the point wasn't about my personal tastes, 
but about the fact that this particular pair of "arbitrary symbols" was 
  IMHO still usable - IOW, I wouldn't dismiss Ruby on this sole point.

 > Most people don't -- that's why "line
 > noise" is unpopular. It's hard to read, hard to write, hard to maintain,
 > and hard to talk about. The more line-noise, the worse the language.

OTHO, too much verbosity is a pain too. Ever programmed in AppleScript ? 
"set the attribute XXX of object YYY of collection ZZZ to SomeValue"... 
Yuck. I bet you prefer "zzz[yyy].xxx = SomeValue" - which uses three 
arbitrary symbols.

(snip)

 > Oh well, one negative out of
 > a whole lot of positives isn't too bad.

Indeed. You could perhaps learn a bit more about Ruby's positives if you 
don't block on what you perceive (rightfully or not) as negative points ?-)

(snip)

 >>>>> Somebody who knows more Ruby than me should try writing the Zen of
 >>>>> Ruby. Something like:
 >>>> (snip childish parody of Python Zen)
 >>>>
 >>>> Steven, is that any useful ?
 >>> It made me feel good.
 >> Why ???
 >>
 >> You don't like Ruby ? Fine, don't use it. Period. I can't see the point
 >> of all these pissing contests.
 >
 > Criticism of a language is a pissing contest?

Not necessarily. But:

 > Yeah, okay, I was a tad dismissive. I un-apologetically jump to strong
 > impressions about languages based on minimal use

Possibly, yes.

 > -- but I'm also willing
 > to change my mind. Ruby certainly looks to me like it has some nice
 > features. Syntax that looks like Perl isn't one of them though.

Not my cup of tea neither FWIW. But Ruby is nowhere near Perl in terms 
of "line noise".

 >
 >>> Just because Smalltalk had a particular (mis?)feature
 >> You can drop the 'mis' part IMHO. The point of code blocks in Smalltalk
 >> is that once you have something as powerful as the message+code blocks
 >> combo, you just don't need any other 'special form' for control flow.
 >
 > Well, maybe, but remember, programming languages are only partly for
 > communication to the compiler. They also have the requirement to
 > communicate with human programmers as well, and that's even more
 > important, because
 >
 > (1) humans spent a lot more time working with code than compilers do;
 >
 > (2) human programmers charge much more money than compilers do;
 >
 > (3) and you can modify the compiler to suit human needs much more easily
 > than you can modify programmers to suit the compiler's needs.
 >
 > So I'd ask, does Smalltalk's message passing model match the way human
 > beings think?

Does all human beings think the same way ? And aren't human beings able 
to learn new ways ?

Smalltalk's only control flow construct might seem a bit weird at first 
when all you've been exposed to so far are more "traditional" special 
constructs, but it's not hard to learn and is way more uniform and 
flexible than having special constructs for each and any possible 
situation.

One could ask if functional programming or OO "matches the way human 
beings think". From experience, some of us just find FP and / or OO just 
obvious, and some won't never get it.

FWIW, there are quite a few features and idioms in Python that I _now_ 
find readable and obvious, but that would have puzzled me ten years ago. 
This reminds me of a shop where the CTO had forbidden using any OO 
feature of the main language used there because "nobody would understand 
it" (needless to say, I only stayed there a couple weeks...).

 >
 >>> doesn't mean that
 >>> other languages should copy it.
 >> Nope. But OTHO, Python is famous for all the features it copied from
 >> other languages !-)
 >
 > Absolutely! There's nothing wrong with copying *good* features :)

Well... at least when they make sense and integrate smoothly into the 
target language.





More information about the Python-list mailing list