1. Unifying types and classes in Python 2.2
That (in)famous paper of Guido starts with the sentence:
Python 2.2 introduces the first phase of "type/class unification". This
is a series of changes to Python intended to remove most of the
differences between built-in types and user-defined classes.
I wonder what would be the second phase. It seems to me that classes and
types are already unified !
>>> examples=[1,1.2,'hello',[],{},(),object(),type('Class',(),{}),type]
>>> for e in examples: assert type(e)==e.__class__
On the other hand classic classes have not __class__ attribute and
therefore I interpret the previous sentence as meaning that the second phase
will be complete when classic classes will go away, since according to Guido:
Classic classes are still a special category in Python 2.2. Eventually they
will be totally unified with types, but because of additional backwards
incompatibilities, this will be done after 2.2 is released (maybe not before
Python 3.0).
Am I correct or still there are subtle difference between classes and types
even in new style classes ?
2. What does it mean "pure" Object Oriented language ?
I see SmallTalk and more recently Ruby make a great deal to be "pure".
But I have no clue what this does mean in concrete terms. I have seen
people say "the language is pure when everything is an object", but
it seems to me that in Python everything is an object too:
>>> for e in examples: assert isinstance(e,object)
I don't see if Python misses something to be considered a "pure" Object
Oriented language. Notice that I am not a purist, I simply would like to
understand the concept.
3. Multiple inheritance.
I have read this citation by Zack Urlocker "Multiple Inheritance is the goto of
the 90's" and various recommendation against it. On top of that, various
languages forbid it by design, because it is a Bad Thing. Nevertheless, it
doesn't seem so evil to me in Python, I also have seen a paper by Chuck Esterbrook
about Multiple Inheritance and mixins as a very useful technique. I think the
original quotation referred to C++ where multiple inheritance is such a mess.
OTOH, it doesn't seems very difficult or very dangerous in Python once you
have understood the Method Resolution Order. Am I correct ? What are the general
guidelines of the Python community about multiple inheritance ?
That's all folks, TIA for your replies,
--
Michele Simionato - Dept. of Physics and Astronomy
210 Allen Hall Pittsburgh PA 15260 U.S.A.
Phone: 001-412-624-9041 Fax: 001-412-624-9163
Home-page: http://www.phyast.pitt.edu/~micheles/
> 2. What does it mean "pure" Object Oriented language ?
>
> I see SmallTalk and more recently Ruby make a great deal to be "pure".
> But I have no clue what this does mean in concrete terms. I have seen
> people say "the language is pure when everything is an object", but
> it seems to me that in Python everything is an object too:
>
> >>> for e in examples: assert isinstance(e,object)
>
> I don't see if Python misses something to be considered a "pure" Object
> Oriented language. Notice that I am not a purist, I simply would like to
> understand the concept.
>
Puse in this context means that every type inheritds from some archetypical
base type. Hence 2.2.2, even, is not "pure", while SmallTalk (where integer
is a subclass of object) is.
> 3. Multiple inheritance.
>
> I have read this citation by Zack Urlocker "Multiple Inheritance is the
goto of
> the 90's" and various recommendation against it. On top of that, various
> languages forbid it by design, because it is a Bad Thing. Nevertheless, it
> doesn't seem so evil to me in Python, I also have seen a paper by Chuck
Esterbrook
> about Multiple Inheritance and mixins as a very useful technique. I think
the
> original quotation referred to C++ where multiple inheritance is such a
mess.
> OTOH, it doesn't seems very difficult or very dangerous in Python once you
> have understood the Method Resolution Order. Am I correct ? What are the
general
> guidelines of the Python community about multiple inheritance ?
>
> That's all folks, TIA for your replies,
>
Use it carefullY!
REGARDS
-----------------------------------------------------------------------
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/pwp/
Bring your musical instrument to PyCon! http://www.python.org/pycon/
-----------------------------------------------------------------------
/
> 1. Unifying types and classes in Python 2.2
Skipped, because I'd like to know the answer as well.
> 2. What does it mean "pure" Object Oriented language ?
> I see SmallTalk and more recently Ruby make a great deal to be "pure".
> But I have no clue what this does mean in concrete terms. I have seen
> people say "the language is pure when everything is an object", but
> it seems to me that in Python everything is an object too:
I think there are two different meanings of the word object here. What
they really mean is that all variables are either method local or
attributes of an object, and all code is in methods. If you want to
get really picky, you can claim that Python is pure because functions
are static methods of modules, and global variables are attributes of
modules, and module is a built-in object type with a really funny
syntax.
> I don't see if Python misses something to be considered a "pure" Object
> Oriented language. Notice that I am not a purist, I simply would like to
> understand the concept.
You can write programs in Python as if it were a "pure" OO
language. The only code that should be written outside of any class
looks like:
if __name__ == "__main__":
intitial_class().initial_method()
> 3. Multiple inheritance.
> I have read this citation by Zack Urlocker "Multiple Inheritance is the goto of
> the 90's" and various recommendation against it. On top of that, various
> languages forbid it by design, because it is a Bad Thing. Nevertheless, it
> doesn't seem so evil to me in Python, I also have seen a paper by Chuck Esterbrook
> about Multiple Inheritance and mixins as a very useful technique. I think the
> original quotation referred to C++ where multiple inheritance is such a mess.
> OTOH, it doesn't seems very difficult or very dangerous in Python once you
> have understood the Method Resolution Order. Am I correct ? What are the general
> guidelines of the Python community about multiple inheritance ?
Mutliple inheritance is a good and useful thing. Languages that
implement it poorly have confused the issue, and some smart
people. Python has a useful implementation, but not a great one.
I recommend you find a read "Object Oriented Software Construction" by
Betrand Meyer. He deals with the issue of multiple inheritance quite
well there. He also uses a "pure" OO language to discuss the issues,
so you can get a feel for what that is like. Finally, it's an
excellent book on writing OO software.
<mike
--
Mike Meyer <m...@mired.org> http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
> I have read this citation by Zack Urlocker "Multiple Inheritance is the
> goto of the 90's" and various recommendation against it. On top of that,
> various languages forbid it by design, because it is a Bad Thing.
> Nevertheless, it doesn't seem so evil to me in Python, I also have seen
> a paper by Chuck Esterbrook about Multiple Inheritance and mixins as a
> very useful technique. I think the original quotation referred to C++
> where multiple inheritance is such a mess. OTOH, it doesn't seems very
> difficult or very dangerous in Python once you have understood the
> Method Resolution Order. Am I correct ?
There is nothing wrong with C++ MI. It provides very nice mixins just
like python or whatever. It allows you to keep interface and
implementation separate. Therein lies the problem. Problems with C++ MI
spaghetti are really caused by mixing interface and implementation in the
same type. C++ is not wrong to allow this: it is handy to have an
interface with default implementations for some items, and even test
methods that check global contracts for the interface. But there is no
language keyword that says "this is an interface", and so naive
programers forget which they are doing.
The second problem some people have with C++ MI is that adding another
method to a virtual base class requires recompiling everything that uses
that virtual base, and virtual base methods are often part of "mixin"
implementation modules rather than part of the public interface. C++ is
not wrong to allow this: static compilation for direct access to objects
is the only way to get maximum speed from ahead of time compilation. It
is perfectly feasible to use handles for C++ objects to avoid recompiling
the world just because an implementation detail changes. It is even
feasible to dynamically load the implementation - and by the time you do
all that indirection, the performance is about as good as Java. You want
the advantages of statically compiled code - you have to recompile the
world when an implementation changes. You can even judiciously partition
things for a compromise between the two extremes.
Python will never give you any recompile the world headaches. However,
like C++, Python does not explicitly distinguish between interface and
implementation - giving you the flexibility of default implementations
and runtime checks for your interfaces. You must keep track of which is
which, and document the result. I recommend keeping interface methods
textually together in a public class. There is some mention in the
Python docs of prepending implementation methods with '_', but this is
not consistently done.
Notice that interface vs. implementation is a different issue than public
vs. private.
--
Stuart D. Gathman <stu...@bmsi.com>
Business Management Systems Inc. Phone: 703 591-0911 Fax: 703 591-6154
"Confutatis maledictis, flamis acribus addictis" - background song for
a Microsoft sponsored "Where do you want to go from here?" commercial.
As Mike Meyer said, the problem is not with multiple inheritance itself,
but by bad implementations in some languages. It can introduce conflicts,
and languages have to include mechanisms to resolve them. C++ doesn't have
such mechanisms, Python also. Eiffel contains such mechanisms (and it is
a very good language in many other respects). See www.eiffel.com .
Pure object oriented languages treat basic types like integers, floats,
booleans,
string, arrays etc. in the same way as other types. This is not an academic
question, but a very practical issue. For example, in some languages you
must write copy constructors or operator=, just to copy an object to
another one.
Imagine writing and maintaning such code for every class you write.
A pure object oriented language has methods like "clone" that
are defined at the top of object hyerarchy and work for every class, being
it integer, array, or any user's class. You get this functionality
automatically.
If you want to write serialization methods, again, in non-pure O-O langauges
you must treat basic types and other types differently, which means that
you'll
end up writing lots of unnecessary code.
Ian Joyner's : Objects Unencapsulated: Java, Eiffel, and C++
and also an article by Ian Joyner:
C++?? A critique of C++ and Programming and Language Trends of
the 1990s, 3rd edition
which can be found on Internet.
Obviously ad-hoc quick-fix gotos will produce spaghetti, but then
abusing any language feature can do that.
--
http://mail.python.org/mailman/listinfo/python-list
By that kind of logic, *all* flow control statements can be thought of
as combinations of ifs and gotos.
The difference between goto and break is that break is very limited in
where you can go to, namely the first statement after the immediately
enclosing block (I hope I said that in a way that satifies language
laywers). So, if you're looking at a piece of code and think to
yourself, "how could I get here?", the scope of places to look is
limited to the immediately preceeding statement block. If you're
looking at a statement label in a language that has gotos and ask
yourself the same question, the scope of places you have to look is now
the entire function (compilation unit?)
> I have a few general questions on Python as an Object Oriented Programming
> language.
I addition to the answers you've got, I'd just say that Python does
not go in for object-oriented-programming-as-religion.
Cheers,
M.
--
Of the four project development variables - scope, cost, time and
quality - quality isn't really a free variable. The only possible
values are "excellent" and "insanely excellent", depending on
whether lives are at stake. -- Kent Beck, XP Explained
"As Brooks has pointed out, there is no silver bullet. Good craftsmen choose
the
right tools and techniques, but the result is dependent on the skill used in
applying
the tools. Any tool is worthless in itself. But the silver bullet rationale
is not a
valid rationale against adopting better programming languages, tools, and
environments..."
- Ian Joyner
> limited to the immediately preceeding statement block. If you're
> looking at a statement label in a language that has gotos and ask
> yourself the same question, the scope of places you have to look is
> now the entire function (compilation unit?)
I once encountered the following in a bit of supposedly FORTRAN-77
code:
if (condition-A) then
do stuff
if (condition-C) goto 100
200 do more stuff
else
other stuff
if (condition-B) goto 200
100 more other stuff
endif
--
> ============================================================== <
> wlf...@ix.netcom.com | Wulfraed Dennis Lee Bieber KD6MOG <
> wulf...@dm.net | Bestiaria Support Staff <
> ============================================================== <
> Bestiaria Home Page: http://www.beastie.dm.net/ <
> Home Page: http://www.dm.net/~wulfraed/ <
Note that the major impediment to resolving conflicts with multiple
inheritance in Python has gone away - the MRO and super() calls do the Right
Thing (well, they will in 2.3 - I'm not sure if the fix was part of 2.2.2 ;)
It is however not required that code use these - and this is a Good Thing
(TM). Sometimes you *do* want to access a particular base class
method/attribute/etc.
Ensuring that base class methods are called through super() is a job for
PyChecker.
Tim Delaney
Well, yes, of course they can. After all, at a certain level they
*are* just stylized patterns of use of conditional branches. Knuth's
1974 article "Structured Programming with Goto Statements" is a
fascinating exploration of some well-defined structures that aren't
usually available, but certainly could be. Of course the motivation
for the exercise is efficency in a fairly small scale, but the lesson
is much more general. :-)
> The difference between goto and break is that break is very limited in
> where you can go to, namely the first statement after the immediately
> enclosing block (I hope I said that in a way that satifies language
> laywers). So, if you're looking at a piece of code and think to
> yourself, "how could I get here?", the scope of places to look is
> limited to the immediately preceeding statement block. If you're
Yep. Consider, if you like, the parallels behind this constaint and
Python's macrolessness. Hey, I only favor untangled exposition in
code, not usenet threads!
I agree. People seem to forget that at the very bottom level of assembly
language, all loops are really 'gotos' anyway. (but they might argue that we
should abstract away from that, because it's a potential pitfall--but then, so
is a 'while 1:' block!
And your point about break statements is true too. Did you ever try to return a
value from an imperative-style Lisp block from a loop you wanted to 'break'
from, without evaluating what comes after? The mechanisms in Lisp make this
very hard, if not impossible...which I think denies a tool to make life easier!
I found this out trying to write a prime number generator in Lisp: the
recursive style (even using the 'labels' form) exhausted the stack for a higher
(> 300) prime limit, and ran slowly, while the imperative style using loop was
so awkward to code, I gave up in frustration. The same problem in python was
coded in minutes. 'break' is very useful. And from what I can tell, Lisp
documentation doesn't make it clear (i.e. the docs suck) about where to find an
analogous construct in Lisp. (I tried 'return-from', but got errors I couldn't
figure out--even if you say I just am no Lisp pro, I agree and say I'm also no
python pro, but the logic of Python allowed me to proceed very quickly to my
goal--it means it's a language with a cleaner design than most)
-aaron.
Whatever. Go fuck Erik Naggum up the ass if you love him so much. You even
sound like him, so I know you're an asshole, but at least he's original.
*plonk*
> Whatever. Go fuck Erik Naggum up the ass if you love him so much. You
> even
> sound like him, so I know you're an asshole, but at least he's
> original.
This is not a good way to make friends in comp.lang.python.
--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/ \ But since when can wounded eyes see / If we weren't who we were
\__/ Joi
7 Sisters Productions / http://www.7sisters.com/
Web design for the future.
Do you think I care to make friends with people who insult before choosing to
understand, or who question my ability to 'breathe by myself'?
I'm not a christian, so I don't 'turn the other cheek'. Anyone who hits me gets
hit back hard.
Tell him to be friendly! I have little patience for the Erik Naggum
wannabe...I've already experienced the original.
best,
aaron.
On Fri, 20 Dec 2002, Aaron K.Johnson wrote:
> In message <3E02E842...@alcyone.com>, Erik Max Francis wrote:
> > "Aaron K. Johnson" wrote:
> >
> > > Whatever. Go fuck Erik Naggum up the ass if you love him so much. You
> > > even
> > > sound like him, so I know you're an asshole, but at least he's
> > > original.
> >
> > This is not a good way to make friends in comp.lang.python.
>
> Do you think I care to make friends with people who insult before choosing to
> understand
[snip]
Um, I think Erik (the Max Francis one, not Naggum) was referring to the
rest of the members of this group and not whoever you're yelling about -
people around here generally aren't that impressed by tantrums.
Hope your day goes well,
Dave
>In message <3E02E842...@alcyone.com>, Erik Max Francis wrote:
>> "Aaron K. Johnson" wrote:
>>
>> > Whatever. Go fuck Erik Naggum up the ass if you love him so much. You
>> > even
>> > sound like him, so I know you're an asshole, but at least he's
>> > original.
>>
>> This is not a good way to make friends in comp.lang.python.
>
>Do you think I care to make friends with people who insult before choosing to
>understand, or who question my ability to 'breathe by myself'?
>
>I'm not a christian, so I don't 'turn the other cheek'. Anyone who hits me gets
>hit back hard.
>
You might be surprised to know that what you did didn't come off that way ;-)
Your choice of words showed more about you and affected more people's opinion
about you than about anyone or anything else. I doubt if anyone felt "hit hard"
except perhaps in language usage sensibilities. I know it feels bad to be zinged,
but you will learn more from "enemies" than flatterers. And I put "enemies" in
quotes here because I'm pretty sure it was more a friendly jab than a stab.
>Tell him to be friendly! I have little patience for the Erik Naggum
He probably was being friendly, and just mistook you for being bigger than you are.
(Now that was a zing, wasn't it ;-)
>wannabe...I've already experienced the original.
What one experiences is largely what one brings in one's baggage, unless one is Tim Peters.
(I don't know where that came from ;-)
Try to show as much patience for others as you would like for yourself ;-)
Regards,
Bengt Richter
> Do you think I care to make friends with people who insult before
> choosing to
> understand, or who question my ability to 'breathe by myself'?
>
> I'm not a christian, so I don't 'turn the other cheek'. Anyone who
> hits me gets
> hit back hard.
Whether or not you were responding in kind or your response was
warranted or even justified (none of which I'll grant), the point is
that you didn't reply by mail only to your detractor, you posted your
response publicly for everyone in the comp.lang.python newsgroup/Python
mailing list (they're gated to each other) to see.
Regardless of what perceived wrongs you think have been done, a response
like that reflects badly on _you_.
--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/ \ You're a fighter, so fight / Wake up and live
\__/ Sweetbox
Lsystem / http://www.alcyone.com/pyos/lsystem/
A Lindenmayer systems explorer in Python.
I can understand this viewpoint and I do agree that Paul's response was
uncalled for. That being said, resorting to puerile vulgarities* tends
to make you look bad rather than the person they were aimed at. If you
must resort to such tactics, it's better to do it offlist. A junior
high playground might be more appropriate (and you would undoubtedly be
perceived as 'cool' by the 7th graders for saying 'fuck').
> I'm not a christian, so I don't 'turn the other cheek'. Anyone who hits me gets
> hit back hard.
I don't see what being a christian has to do with anything. I am not
religious by any definition and still try not to humiliate myself by
tossing around childish insults in public (* again).
Anyway, it is not uncommon for people new to the list to have some
sarcasm tossed their way and overreact. I suspect that if you forget
about it and temper your future posts everyone else will as well. As
for Paul, hopefully he'll learn how to express his surprise in a more
appropriate fashion so as to avoid offending people who know how to
swear.
> Tell him to be friendly! I have little patience for the Erik Naggum
> wannabe...I've already experienced the original.
*Unless they are fart jokes, which are irresistably funny to everyone.
--
Cliff Wells, Software Engineer
Logiplex Corporation (www.logiplex.net)
(503) 978-6726 x308 (800) 735-0555 x308
This doesn't justify the rudeness, but I have noticed some persnickity
posts from LISPers in comp.lang.python.
On a regular basis... Persnickity and worse...
I confess, I lost my temper today too (in the real world). I feel
very bad about it, but there are certainly people who would try
anyone's patience. Basically, I don't want to throw stones at AKJ
when I live in a glass house.
Manuel
> *Unless they are fart jokes, which are irresistably funny to everyone.
On that topic, what's the emoticon for a fart?
I suppose one could use the traditional smiley, if it were a particularly
satisfying one, but one would think such a common human, uh, "emotion"
deserved it's own symbol in the new electronic medium...
%-| just looks constipated, if you ask me...
-Peter
> On that topic, what's the emoticon for a fart?
3<
--
David Eppstein UC Irvine Dept. of Information & Computer Science
epps...@ics.uci.edu http://www.ics.uci.edu/~eppstein/
If we are throwing stones at him, then we are doing it wrong, and need
to improve. (The image I had was dousing a fire with a bucket of cold
water). The idea is to provide a solid and decent environment so that
it becomes easier to not lose your temper when beset from the idiots.
If we have to wait until we are all perfect at suffering fools, we
will never get there. You have to make the effort even though you
aren't all that good at it, because it is the only way to get better.
Suggestions, AKJ on how to do a better job when somebody loses his
temper?
Laura Creighton
First, make yourself friendly.
Second, welcome to my procmail filter.
Third, it is the best choise of all to add a troll, like you into the filters
for the rest of the folk here...
Fourh, don't try "hit me hard" because your hit will be forwarded to
/dev/null.
Arivederchy...
--
Regards, Bogdan
The best way to convince another is
to state your case moderately and accurately.
-- Benjamin Franklin
This has the undersirable side effect that newcomers to the group will
not have the appropriate procmail filters, and will take existing
practice as an indication of how they are to behave. Like all
solutions which depend on 'every man for himself'it has the tendancy
to rip society apart where only the strong and savvy win, and
everybody else wonders why their lot in life is so miserable. So it
is very tempting, but not, I would say in our own best interests.
Laura Creighton
I would like to urge *everyone* not to discuss this issue any further
without first reading Don Knuth's classic paper, ``Structured
Programming with _goto_ Statements'' in the December 1974 issue of ACM
Computing Surveys.
That way you won't spend lots of time thinking up arguments that Knuth
disposed of nearly 30 years ago.
--
Andrew Koenig, a...@research.att.com, http://www.research.att.com/info/ark
Points taken. Sorry for subjecting you.
Although I was wrong, and overtly strong in my response, I thought CLP was
filled with those who might correct Mr. Foley as well.
Instead, it seems that some people enjoy/accept an obnoxious culture of subtle
insults flying in 'friendly' fashion.
I just don't define friendly in those terms, and take offense.
Best,
aaron.
Thanks Laura,
One thing I might say is that however ridiculous a post may appear (i.e. my
post that brought a scornful response from Mr. Foley), that some decent and
kind querying/correction take place instead of impolite scorn.
This would bypass the need for people correcting the behavior of anyone who
felt hurt enough, or unfairly treated enough, to have as explosive reaction as
I did.
Incidentally, I referred to Erik Naggum of comp.lang.lisp, who I had a row with
last year (same reason-he chose insult over 'edification') Mr. Foley appears no
better, and in fact, tries to push my buttons again today be re-posting Mr.
Naggum's responses to me from last year.
Apparantly, he wants the ghost of that annoying experience to hover over me.
Let me swallow my pride and apologize to all those (including Paul Foley) who
were subjected to my wrathful reply.I will ignore Mr. Foley's posts until he
apologizes for his initial snub, or addresses issues directly relating to
python in a civil manner. I have no desire to continue witnessing Naggum style
bile on a daily basis.
Best,
Aaron.
Thanks Manuel, for being a real person who understands that people can get
pissed off from time to time.
It seems that you are one of the few who sees the inappropriateness of both my
reply AND Mr. Foley's original post.
-Aaron.
I would have responded to Bogdan's message too, but you said what I needed to
say well enough. Thanks, Laura.
-Aaron.
I don't consider CLP a 'playground'. I just expect people to behave and treat
each other decently. And, I should have ket my distance and cooled off a bit
before responding. But no-one likes to be insulted. That's not cool, and that's
more toward the 'playground' image you conjure.
> > I'm not a christian, so I don't 'turn the other cheek'. Anyone who hits
> me gets
> > hit back hard.
>
> I don't see what being a christian has to do with anything. I am not
> religious by any definition and still try not to humiliate myself by
> tossing around childish insults in public (* again).
No offense meant to any Christians...I just don't subscribe to not giving
people a taste of their own nastiness. I admit it doesn't always work, though,
especially when the individual continues being nasty.
I'm glad you are a better person, who never loses his temper at being insulted,
than I. Good for you.
> Anyway, it is not uncommon for people new to the list to have some
> sarcasm tossed their way and overreact. I suspect that if you forget
> about it and temper your future posts everyone else will as well. As
> for Paul, hopefully he'll learn how to express his surprise in a more
> appropriate fashion so as to avoid offending people who know how to
> swear.
I have no wish to continue 'overreacting'...perhaps if certain others choose
not to step over a line of good behavior, it might help.
> > Tell him to be friendly! I have little patience for the Erik Naggum
> > wannabe...I've already experienced the original.
>
> *Unless they are fart jokes, which are irresistably funny to everyone.
I like fart jokes. Except when they come from mean-spirited people like Naggum
I find them unfunny.
Best,
Aaron.
I don't see how you feel you can quell my feeling anger by your above response.
Nor do I understand insulting a stranger as 'friendly'. Maybe such passive
aggression turns YOU on, but I'm more likely to feel like the person stepped
over a line of decency.
I'm sorry, that's just how I feel.
Best,
Aaron.
(_*_) ?
Perfect! Wow, is there *any* question this newsgroup cannot answer?
-Peter
I read your post and it seemed "nasty". Maybe you didn't intend it that
way but I'm not sure how else it could have been read. I suppose
Aaron's post could have been read as humorous just as easily as yours.
> > I'm not a christian, so I don't 'turn the other cheek'. Anyone who hits me gets
> > hit back hard.
>
> So you are the kind of person who hits and thinks in such terms.
> That is valuable to know, but not conducive to your case.
>
> Just stop defending yourself, and you won't feel under attack,
> either, but you make this what you want to make it, and I am
> unimpressed with the way you choose to respond.
I don't think you're in a position to defend yourself either. I read
the post and your response seemed uncalled for. You can't justify a
preemptive attack by pointing to the response.
> #:Erik-Wannabe
Funny, but sad.
Well, if you can see and admit that, then you are not beyond hope ;)
>
> > > I'm not a christian, so I don't 'turn the other cheek'. Anyone who hits
> > me gets
> > > hit back hard.
> >
> > I don't see what being a christian has to do with anything. I am not
> > religious by any definition and still try not to humiliate myself by
> > tossing around childish insults in public (* again).
>
> No offense meant to any Christians...I just don't subscribe to not giving
> people a taste of their own nastiness. I admit it doesn't always work, though,
> especially when the individual continues being nasty.
It's usually more effective to let people make fools of themselves than
to try to do it for them.
> I'm glad you are a better person, who never loses his temper at being insulted,
> than I. Good for you.
Well, having a hot temper is all the more reason to control it. I can
certainly attest to that. It is especially easy to get angry when your
intelligence is insulted or brought into question. All I'm saying is
it's best not to validate the insults <0.49 wink>.
> > Anyway, it is not uncommon for people new to the list to have some
> > sarcasm tossed their way and overreact. I suspect that if you forget
> > about it and temper your future posts everyone else will as well. As
> > for Paul, hopefully he'll learn how to express his surprise in a more
> > appropriate fashion so as to avoid offending people who know how to
> > swear.
>
> I have no wish to continue 'overreacting'...perhaps if certain others choose
> not to step over a line of good behavior, it might help.
Undoubtedly, but it's also best to realize that there is little that can
be done to control others (especially via the Internet) and one can only
control oneself. In the end, your composure in the face of ridicule has
a larger impact on how others perceive you (and your opponent) than
whether you "win" the argument or not (and in this case the argument has
thankfully been forgotten - I'm considering filtering out all threads on
Lisp - they seem to get nasty rather quickly. Maybe that's why it is a
dying language: it seems to attract arrogant individuals. Lisp: Look,
I'm So Pretentious).
Regards,
> Perfect! Wow, is there *any* question this newsgroup cannot answer?
Yes... er, I mean no... hell, I don't know: maybe?
Especially considering what an unmitigated net sociopath Erik Naggum is.
I still have a collection of his run-on abuse archived somewhere. Probably
had I encountered Mr. Naggum anywhere in the first year after that, I would
have promptly violently attacked him. The misdemeanor charge would have been
worth it.
C//
> Undoubtedly, but it's also best to realize that there is little that can
> be done to control others (especially via the Internet) and one can only
> control oneself. In the end, your composure in the face of ridicule has
> a larger impact on how others perceive you (and your opponent) than
> whether you "win" the argument or not (and in this case the argument has
> thankfully been forgotten - I'm considering filtering out all threads on
> Lisp - they seem to get nasty rather quickly. Maybe that's why it is a
> dying language: it seems to attract arrogant individuals. Lisp: Look,
> I'm So Pretentious).
Good points. And I second them, even when I have my all-to-human failings, and
lose my temper.
Best,
Aaron.
> Cliff Wells wrote:
> >
> > That being said, resorting to puerile vulgarities* tends
> > to make you look bad rather than the person they were aimed at.
>
> > *Unless they are fart jokes, which are irresistably funny to everyone.
>
> On that topic, what's the emoticon for a fart?
Nothing in "faces.in" of smiley-4.0
> I suppose one could use the traditional smiley, if it were a particularly
> satisfying one, but one would think such a common human, uh, "emotion"
> deserved it's own symbol in the new electronic medium...
>
> %-| just looks constipated, if you ask me...
>
> -Peter
But that is already defined:
>smiley "%-|"
%-| been working all night
Greetings
Berthold
--
bh...@web.de / http://starship.python.net/crew/bhoel/
It is unlawful to use this email address for unsolicited ads
(USC Title 47 Sec.227). I will assess a US$500 charge for
reviewing and deleting each unsolicited ad.
Although I knew of this paper, I'd never read it in it's entirety.
Very interesting. One quote kind of jumped out at me:
"We will perhaps eventually be
writing only small modules which are iden-
tified by name as they are used to build
larger ones, so that devices like indentation,
rather than delimiters, might become feasible
for expressing local structure in the source
language."
I think this Knuth guy might have been onto something ;-)
A link if you need it:
http://pplab.snu.ac.kr/courses/PL2001/papers/p261-knuth.pdf
Now we have LISPers in CLP doing four things (1) bad-mouthing Python
(2) talking up LISP (3) trying to convince us to turn Python into LISP
(4) claiming Python *already* is just a pale imitation of LISP
Just last week was a whole discussion about how Python needs LISP's
macro capability. I was tempted to join the discussion, but realized
it would be a cold day in hell before Guido added macros to Python, so
no need to even dignify the discussion with a post.
I think we would already have Stackless built into CPython if
Christian Tismer had not also tried to get LISP's continuations added
to Python too. Frankly I consider continuations to be a control
mechanism even more unstructured than GOTO, and a heck of a lot more
confusing. I have Dybvig's Scheme manual, and the section on
continuations degenerates into examples that are progressively (1)
less motivated (2) more tortured (3) more confusing.
LISP's community is not so hot either. I remember Slashdot's
interview with Kent M. Pitman where he said:
"""
In my recent professional life, I have personally written several XML
parsers, all in Lisp, for various employers and most recently for
myself and my fledgling company. My company's implementation is not
available on the market yet...
"""
In the Python community, if anyone worked on anything like this, they
would release it for everyone to freely use right from day one. Which
is why Pythonistas don't write the same program over and over
independent of other Pythonistas. Which is why Python is described as
coming "with batteries" and its built-in library has much more
functionality than CL or Scheme's even Python is a younger language.
And the LISP community cannot stop writing competing C
implementations. As soon as anyone becomes proficient at LISP, they
write their own interpreter or compiler that has 2% better performance
on some corner condition in the language.
Uh, this turned into a bit of a rant... ;-)
Manuel
Nah, it hasn't been so bad. i mostly appreciated what i read on that
topic.
> I think we would already have Stackless built into CPython if
> Christian Tismer had not also tried to get LISP's continuations added
> to Python too.
ASFAIK this is not true. It was rejected because it made the python
core quite architecture dependent and complicated and also made life
tougher for C-extenders. The new version is much better in these
respects. at least Christian says so :-)
> LISP's community is not so hot either. I remember Slashdot's
> interview with Kent M. Pitman where he said:
why is this significant? Should one know Mr. Pitman?
regards,
holger
>I think the whole Python-newsgroup vs. LISP-newsgroup thing all
>started when a Pythonista went into the LISP newsgroup and asked for
>opinions about why Python seemed to be overtaking LISP.
*shrug*
c.l.l is a cestpool, thanks to Erik Naggum. He destroys the place.
I formed this opinion before ever even learning Python.
I had the temerity to ask the c.l.l group if there was an automatic
serializer available for lisp. What I got instead was a long lecture
on why it was that such things wouldn't be good for me. I replied
that I didn't really want a long lecture on why it was that it wasn't
good for me, I wanted to know if there was one somewhere anyway. An
endless torrent of abuse and insult was my reward.
C//
Not at all. But you should well know that no one can see the smile on
your face or hear your gentle tone when you post on usenet - if you're
saying something that might be misconstrued, use the wink key or soften
the words a bit.
>
> >> > I'm not a christian, so I don't 'turn the other cheek'. Anyone who hits me gets
> >> > hit back hard.
> >>
> >> So you are the kind of person who hits and thinks in such terms.
> >> That is valuable to know, but not conducive to your case.
> >>
> >> Just stop defending yourself, and you won't feel under attack,
> >> either, but you make this what you want to make it, and I am
> >> unimpressed with the way you choose to respond.
>
> > I don't think you're in a position to defend yourself either.
>
> I wasn't aware that I was. I don't think I need defending.
Short memory? Or just lack of social skills? Am I to assume from this
point on that you're one of those pocket-protector wearing "geniuses"
with taped up glasses who can write an OS over the weekend but lack the
social skills to stop picking their nose when a pretty girl walks by?
That your entire social existence consists of usenet and a small circle
of dungeon masters who dress up before games and talk to each other in
klingon? That's the only way I can see that you could possibly claim
ignorance of your misconduct.
Oh, just in case: <0.3 wink>
P.S. Sorry to go on so long with the dork thing, but I was on a roll ;)
--
Cliff Wells <cliffor...@attbi.com>
> I don't know about "humorous", but it did make me laugh.
>
> I don't know how you could read my initial response as "nasty",
> though; it was just a gentle ribbing, I thought. Are you always so
> quick to impute bad motives to people?
>
Listen Paul,
I have some distance from your post and my response. I was to quick to anger
and I apologize. Can we bury the hatchet and let bygones be bygones? I don't
want this to turn into comp.lang.lisp part two.
I forgive you. Can you forgive me? Let's both try to me more civil in the
future. Please post a 'gentle ribbing' with a wink or something, ok?
Best,
Aaron.
Yeah, I know the feeling. I wish I could say that Erik is the only guy doing
it, too. But from what I can remember, he has a samll loyal band of cronies who
back him up from time to time, saying stuff like "Erik is a bit harsh-but you
deserved it for asking such a dumb question."
Its a real hostile place, and it utterly turned me off to Lisp culture in
general.
I gain satisfaction in knowing that Python is enjoying real-world success and
usage while their pet language dies a slow pathetic death. And I have nothing
against Lisp (ok a couple of things) as a language. Just many of the people
using it, or at least those in C.L.L., appear to be such losers!
-Aaron.
And that is a shame, because actually programming in LISP is a joy.
> I gain satisfaction in knowing that Python is enjoying real-world success and
> usage while their pet language dies a slow pathetic death. And I have nothing
> against Lisp (ok a couple of things) as a language. Just many of the people
> using it, or at least those in C.L.L., appear to be such losers!
>
> -Aaron.
It is probably not a good idea to judge real programming communities
by usenet newsgroups that refer to the same language. This is because
when the places become hostile and nasty, the really decent people
leave, saying 'this is a waste of my valuable time, and besides it
hurts too much'. Then new people do not join, because they have better
things to do as well, even if it is taking them a heck of a lot longer
to do them because they don't have anybody to answer their questions.
Absolutely everybody I have talked to about this has said that this is
inevitable and it will happen to comp.lang.python as well. That is why
so many of us make such a huge effort to prove these people wrong. We
know we have something special here.
Laura
> I gain satisfaction in knowing that Python is enjoying real-world
> success and usage while their pet language dies a slow pathetic
> death. And I have nothing against Lisp (ok a couple of things) as a
> language.
Unless that attitude changes, you'll probably one day find yourself
hanging out in comp.lang.flavour.of.the.month saying similar things
about Python and its users. The character of a newsgroup changes over
time, and very seldom for the better. But the language has nothing to
do with the newsgroup, and it's pretty sad to see somebody wishing
that one of the genuine highlights in the history of computing would
die a slow and pathetic death simply because his feelings were once
hurt on usenet. Please do everyone a favour Aaron. Get over c.l.l.,
and enjoy Python without disparaging Lisp every time you see half a
chance.
>
>
> It is probably not a good idea to judge real programming communities
> by usenet newsgroups that refer to the same language. This is because
> when the places become hostile and nasty, the really decent people
Hmm, Laura "BraveHeart" ,weren't you the wench who sort of sided recently
with some Rambo Scandinavian who asserted his forbears were into "rape/pillaging"
and the like :-) Tsk, tsk ...
> leave, saying 'this is a waste of my valuable time, and besides it
> hurts too much'. Then new people do not join, because they have better
> things to do as well, even if it is taking them a heck of a lot longer
> to do them because they don't have anybody to answer their questions.
>
> Absolutely everybody I have talked to about this has said that this is
> inevitable and it will happen to comp.lang.python as well. That is why
I've read c.l.p for a couple of years and even tho I'm not a avid
practioner of the language, I check it regularly because to me
the experience is like having a relaxing sauna in the company of
refined and civilized folk :)
Not only can one learn esoteric features of the language from
the likes of Peters et al, there are often little gems to
be found like a recent one ; whats an emoticon for a fart ?
{ 3< )
Where else could one find such information ?
But concerning declining standards of discourse in the group,
I guess there's no real solution. Enhance public IQ I guess.
In my Amiga days there was comp.os.amiga (or similar), and a
"/dev/null" type associated one, namely comp.os.amiga.advocacy.
Most neurotics gravitated towards it and grappled therein
with similar whackos from the Windoze/OS9/Atari world. I
could name names but libel laws prevent me.
> so many of us make such a huge effort to prove these people wrong. We
> know we have something special here.
Extra special, Laura :)
- Gary (A "black swan of trespass in an alien newsgroup" - 'Darkening Ecliptic' )
>
> Laura
>
Presented as a totally different data point, there's my
experience as a novice Scheme programmer in comp.lang.scheme.
The people were great; even my inane post was handled with
courtesy and good-will. The problem was that the whole
newsgroup was dedicated to replacing Scheme with a new
language called Dylan. No help to me at all, so I went
away. I still wish them well over there, whatever they're
doing.
Regards. Mel.
| Presented as a totally different data point, there's my
| experience as a novice Scheme programmer in comp.lang.scheme.
| The people were great; even my inane post was handled with
| courtesy and good-will. The problem was that the whole
| newsgroup was dedicated to replacing Scheme with a new
| language called Dylan. No help to me at all, so I went
| away. I still wish them well over there, whatever they're
| doing.
They're still using Scheme.
Dan
Worse! I started it. The Scandinavian Rambo types were just saying
'me too!' ...
Happy Holidays...
Laura
Yes, sir! ;)
See my points to Laura elsewhere acknowledging what you say about newsgroup
character vs. language. In short, Lisp deserves respect for its place in
history. Its paradigm is is unique, and partly responsible for the whole branch
of interpreted languages that lead to Python. I know this. But I am sensitive
to the elitism of the Lisp community--but I will stop short of another rant, in
bowing to your wishes.
'Nuff said.
Best,
Aaron.
I know, I know. But it's hard. I'm only going by my experiences on c.l.l, which
give the impression that these people have bad attitudes and wish to mangle
newbies in the name of their beloved 40 year tradition.
No authors of lisp books give me that impression, of course. My own experience
USING Lisp has been pleasant at times, too.
I just lost interest as soon as I discovered that some of the things I was
trying to do in it were so much less of a headache in Python.
Ok. No more language flame wars.
Best,
Aaron.
> <snip>
>
> It is probably not a good idea to judge real programming communities
> by usenet newsgroups that refer to the same language. This is because
> when the places become hostile and nasty, the really decent people
> leave, saying 'this is a waste of my valuable time, and besides it
> hurts too much'. Then new people do not join, because they have better
> things to do as well, even if it is taking them a heck of a lot longer
> to do them because they don't have anybody to answer their questions.
>
> Absolutely everybody I have talked to about this has said that this is
> inevitable and it will happen to comp.lang.python as well. That is why
> so many of us make such a huge effort to prove these people wrong. We
> know we have something special here.
Inevitable, eh? That's a bit depressing, but it has the feeling of
truth about it. Perhaps that's how newsgroups age.
Fortunately, c.l.p. seems still to be in it's prime. As long as
un-c.l.p.-like behavior is responded to as it has been in this thread,
I think we're in good shape. As long as we keep seeing newbies
joining the community because they like the language and they see
others asking newbie questions without getting trashed, the community
will keep growing and the discourse will tend to stay civil.
I'm keeping my fingers crossed.
I think there is some hope that Python, as a language, attracts "nice"*
people. Think about some of its distinguishing characteristics:
1) It not only makes things easy, it makes them *look* easy. Perl and Lisp
don't do this -- they make it look hard, which makes you look smarter if you
can understand it, which fuels pecking-order battles. Python, I find, is
consistently frustrating to any such impulses I might have. Most newbies can
figure out even fairly clever code by reading the source alone. There are
exceptions, but, IMHO, not as many.
2) It makes a form of literate-programming very easy. Some packages, like
Zope will even enforce the use of docstrings. It also uses descriptive names
instead of obscure symbols which must be memorized. Both practices attract
capable writers.
Capable writers are "nice" on usenet for several reasons -- they don't feel
as threatened by competing arguments, because they have no difficulty
articulating their position. They generally will have had experience with
competing/dissenting opinions in print, and can cope with the idea. They
feel, much more than other people, that their reputation rides on what they
write, and, finally, they are better able to back down without losing face.
And, of course, if all my English teachers are any guide, they are much more
intolerant of rants and cussing as forms of expression, and have a consistent
idea of the "rules of discourse".
3) All that "explicit is better than implicit" stuff, combined with the ease
of reverse engineering python code, and the nature of the python license
itself, makes Python a crummy language for the knowledge-hider. It is, by
design, a language for open-source development. And the open-source
community, in turn, relies on "good behavior" to function. Although I do not
consider altruism to be a pre-requisite for developing open-source, it does
help, and at minimum, a degree of community spirit is needed for such
projects to work.
So I think there may be a selection effect going on here, and I personally am
glad for it.
not-gonna-make-me-a-fatalist-ly yours,
Terry
*Obviously this is a specialized definition of "nice" -- I specifically mean
people who will show a pronounced predisposition to "behaving themselves"
on newsgroups. I actually imagine that some of the so-called "jerks" are
actually nice people in person who are corrupted by the relative anonymity of
the net (compare: drivers).
--
Terry Hancock ( hancock at anansispaceworks.com )
Anansi Spaceworks http://www.anansispaceworks.com
"Some things are too important to be taken seriously"
> 1) It not only makes things easy, it makes them *look* easy. Perl and Lisp
> don't do this -- they make it look hard, which makes you look smarter if
you
> can understand it, which fuels pecking-order battles. Python, I find, is
> consistently frustrating to any such impulses I might have. Most newbies
can
> figure out even fairly clever code by reading the source alone. There are
> exceptions, but, IMHO, not as many.
This seems to me to be a bit of a myth which was more true in 1.5.2 days.
It is not to say that many of the additions to the language are not welcome,
but only that they seem to deal with topics and practices which are
complicated. While the developers of the language have done a good job of
implementing new features in a reasonable way, the additional complexities
to reading other's code often puts it beyond the realm of newbies -- perhaps
including some of us who feel like perpetual newbies.
-d
> It is not to say that many of the additions to the language are not
> welcome, but only that they seem to deal with topics and practices which
> are complicated. While the developers of the language have done a good
> job of implementing new features in a reasonable way, the additional
> complexities to reading other's code often puts it beyond the realm of
> newbies -- perhaps including some of us who feel like perpetual newbies.
I'm curious what you would put in the category of additional complexities?
Note that the complaint that Python has moved too fast has been taken to
heart for Python 2.3. The release will be over a year since 2.2 came out
and will contain no new major features. A couple of exceptions have been
added, one new builtin (enumerate) and one new method to dicts (pop). New
libraries cuurently include: bzip2, datetime, and logging. Python 2.3 is
about 40% faster for me. While I'm sure there's thing I've forgotten,
there's no big changes coming.
I point this out only to show that development has changed based on
feedback. More feedback with well-reasoned arguments do affect
development. Even if the comments are not in line with developers wishes.
The PBF has also been created. It intends to support Python 2.2.x
releases further into the future.
Neal
[dsavitsk]
> This seems to me to be a bit of a myth which was more true in 1.5.2
> days.
I don't think so. If, for example, you dig into the actual archives, even
in Python 1.0 days you're sure to find threads between me and Steven
Majewski that even today nobody else would understand.
Because Python strives to expose pieces of its implementation, both for
introspection and for the extremely knowledgeable to alter, Deep Magic has
always been possible, and has always been deeply obscure.
Most Python users shouldn't bother with any of that, though. People, e.g.,
writing Python debuggers, or automating C generation (etc -- system tasks),
have to bother with it. Indeed, I'd lump metaclasses almost entirely into
this category: even 2.2's flavor are deeper magic than 99% of users should
ever worry about. If you wonder whether you need them, you don't (the
people who actually need them know with certainty that they need them, and
don't need an explanation about why).
> It is not to say that many of the additions to the language are
> not welcome, but only that they seem to deal with topics and
> practices which are complicated.
I expect you're mostly thinking of features here that fell out of type/class
unification, but TCU was primarily for the benefit of authors of C extension
packages, not for Python end users (although they got some cool features out
of it too). Writing extensions in C, and especially writing classes in C,
has always bristled with subtleties, and the TCU work actually made that
substantially easier.
> While the developers of the language have done a good job of
> implementing new features in a reasonable way, the additional
> complexities to reading other's code often puts it beyond
> the realm of newbies -- perhaps including some of us who feel
> like perpetual newbies.
Here's the plan: When someone uses a feature you don't understand, simply
shoot them. This is easier than learning something new, and before too long
the only living coders will be writing in an easily understood, tiny subset
of Python 0.9.6 <wink>.
Point taken. However, I suppose I am meaning something shallower. For
example, writing
>>> l = [i for i in range(10)]
instead of
>>> l = []
>>> for i in range(10):
... l.append(i)
is less readable, imo, to a newbie. I don't think this is either a negative
or a positive, or an encouragement to use one syntax over another, but
simply an observation that one seems more readable to someone just starting.
Certainly 1.5.2 features would be more difficult to understand than 1.4,
which would be in turn more difficult to read than 1.0 (or indeed 0.9.6).
All this is is an observation that languages tend toward complexity, Python
included (I asked a linguist who says that, indeed, often in language
irregular forms are not just tolerated and preserved, but are in fact
favored).
* * *
> Here's the plan: When someone uses a feature you don't understand, simply
> shoot them. This is easier than learning something new, and before too
long
> the only living coders will be writing in an easily understood, tiny
subset
> of Python 0.9.6 <wink>.
again, I think my observation was simply positive and not normative. I am
certainly not opposed to new things going in, particularly when they don't
break old things :-)
-d
And it will continue to be special, though not unchanging, so long as a
sufficent number of regular participants continue to behave that way.
Inevitably... well, in the inevitableness of it all, we'll all be
dead; then the universe will peter out (or perhaps rush headlong for a
fatal rendevous - last I heard the jury was still out).
Since I was upbeat (sort of) already, I can be mildly depressing now
and still be in balance. :-) C. S. Lewis described it all:
That is the key to history. Terrific energy is expended -
civilizations are built up - excellent institutions devised; but each
time something goes wrong. Some fatal flaw always brings the selfish
and cruel people to the top, and then it all slides back into misery
and ruin. In fact, the machine conks. It seems to start up all
right and runs a few yards, and then it breaks down.
> Fortunately, c.l.p. seems still to be in it's prime.
Right. If the British Empire had a run of only a few yards, then we
have much to hope for once c.l.p. gets properly rolling!
> Point taken. However, I suppose I am meaning something shallower. For
> example, writing
>>>> l = [i for i in range(10)]
> instead of
>>>> l = []
>>>> for i in range(10):
> ... l.append(i)
> is less readable, imo, to a newbie. I don't think this is either a negative
> or a positive, or an encouragement to use one syntax over another, but
> simply an observation that one seems more readable to someone just starting.
>>>> l = range(10)
is probably even more readable :-).
--
Ganesan R
Speaking only for myself, I'm much more comfortable with the changes
for 2.3 as compared to earlier releases. I still don't know about
metaobjects, nor the nuances of deriving from types, or the new
getattribute bits. I haven't yet had a project where I could experiment
with them and figure them out.
Compare that to my read of AMK's "What's New in 2.3." I understood
most everything it talked about and very much enjoyed what you all
have been doing for this release.
Then again, I was one of the "expand and improve the modules"
rather than "expand the language" camp when this issue came up
years ago.
Andrew
da...@dalkescientific.com