Python Programming: Page 7

The danger in this line of thinking is not realizing that the computational effort involved in big NP complete problems is *so* huge that even in optimized micro-code, the algorithm might take a million years to run. Tweezers or shovel -- it makes little difference when you are trying to move a universe...

Sean McGrath, 4 Sep 1999

On a scale of one to ten I'd give it a tim.

William Tanksley, 13 Sep 1999

Statistical analysis shows that the junk looks like human text, which clearly shows that it is actually used in some yet unknown way. (docstrings?)

Fredrik Lundh, writing about junk DNA, 5 Oct 1999

If I engineer code that I expect to be in use for N years, I make damn sure that every internal limit is at least 10x larger than the largest I can conceive of a user making reasonable use of at the end of those N years. The invariable result is that the N years pass, and fewer than half of the users have bumped into the limit <0.5 wink>.

Tim Peters, 11 Nov 1999

I don't think the bytecodehacks, while sufficiently dark and useless to be a tim-ism, qualify me in any way for a Pythonic Wizard Hat...

Michael Hudson, 16 Nov 1999

The bottom tier is what a certain class of wanker would call "business objects"...

Greg Ward, 9 Dec 1999

Since I've done fewer than my normal quota of futile things this week, I thought I'd post to remind people that ...

Phil Austin, 9 Dec 1999

There are useful diagrams in UML, (eg, the state and transition diagrams). Unfortunately, the one most tools use to generate code (and draw from reverse engineering) has everything to do with language structure, and nothing to do with what actually happens at runtime. To put it bluntly: people spend most of their time designing the wrong thing. Worse, they get it wrong, but it's carved in stone now; so the final system is either needlessly complex and marginally functional, or bears no resemblance to the "design".

Gordon McMillan, 15 Dec 1999

The secret to good performance is to prototype and prototype, then code the bottlenecks in a faster language. The secret to large systems is to prototype and prototype, until you've got clean separation of the system into managable pieces, then code in whatever language most suits the need of each piece.

Gordon McMillan, 15 Dec 1999

When Jim [Fulton] says "tricky" it means your brain could explode.

Michel Pelletier, 15 Dec 1999

You have start-tags, attributes, end-tags and character data. We have all seen "XML applications" and "XML parsers" which handle this gang- of-four concepts. ... Now we can peer over the parapet and shout "your parser smells of elderberries" or "I wave my mixed content at your ankles", as long as we like but the simple gang-of-four base apps will not go away.

Sean McGrath, 19 Dec 1999

Abstraction is one of those notions that Python tosses out the window, yet expresses very well.

Gordon McMillan, 6 Jan 2000

The set of naming conventions has a cardinality equal to the number of Python users.

Gordon McMillan, 6 Jan 2000

The way to build large Python applications is to componentize and loosely-couple the hell out of everything.

Aahz Maruch, 6 Jan 2000

It's not the mail volume that bothers me -- I can ignore 100s of messages a day very quickly. It's the time it takes to respond to all of them.

Guido van Rossum, 20 Jan 2000

This is the way of Haskell or Design by Contract of Eiffel. This one is like wearing a XV century armor, you walk very safely but in a very tiring way.

Manuel Gutierrez Algaba, 26 Jan 2000

Life's better without braces.

Unofficial motto of IPC8, coined by Bruce Eckel

"Aggressive" means "sometimes wrong".

John Aycock at IPC8, during his "Agressive Type Inferencing" talk

Do I do everything in C++ and teach a course in advanced swearing?

David Beazley at IPC8, on choosing a language for teaching

Alice is 3D Logo on steroids.

Randy Pausch at IPC8

I was willing to grant this one at once, but, now that I look back at it all -- the loyalty oaths, the relentless self-criticism sessions, the midnight visits from the Ministry of Love -- I'm afraid what we really have here is unspeakably more sinister.

Tim Peters after a reference to "Python's cult-like following", 2 Feb 2000

Guido (like us!) is a bit schizophrenic here: he wants to be a benevolent dictator, but also wants to treat people like grownups. This probably worked better before Python got a large American audience <0.9 wink>.

Tim Peters, 10 Feb 2000

I have formal proofs that any change of the indentation rules results in 35% increase of the page faults for only 63.7% of the cache misses. The net effect is an overall slowdown of 10%.

Vladimir Marangozov after Yet Another indentation flamewar, 16 Feb 2000

... let me just say that my least-favourite Python error message is "SyntaxError: invalid syntax", which somehow manages to be both overly terse and redundant at the same time.

Greg Ward, 15 Feb 2000

See, functional programmers are an insular lot. You rarely see them in public, except at parades when they all have antler- hats and silly shoes on. So they completely missed the infamous "goto considered harmful" thread and didn't even realize they were doing anything wrong.

Now, let's pretend you're writing a 'bot that can pass as a functional programmer. There's a complex protocol here. When two functional programmers see each other on the street, they recognize each other by the antler hats. But in certain parts of the Midwest, regular people wear antler hats, too. So there's a protocol. First a <wink wink>. Then the secret handshake. Then you sniff each other's armpits and stamp your foot 3 times.

OK, so you've written a bot, and it works fine on the street. Now you send it to a cocktail party. It sees a potential functional programmer and gives the <wink wink>. Now it tries to move into position to do the secret handshake, but discovers that it's antler-hat is entangled with someone else's. Oops. <wink wink> at the new guy. Handshake. But before it can sniff, the first one has moved up for his handshake. Ay yi yi. Your bot crashes and is exposed.

So now you rewrite your bot to use a finite state machine so it can handle multiple sessions. That means throwing out all the code that worked on the street. But if you'd used continuations, it would be a relatively minor adjustment of that code. 'Course you wouldn't have had to write the bot to begin with.

Gordon McMillan, 18 Feb 2000

IIRC, Guido went to CNRI to work on bots and agents or something similar. Could the timbot and the effbot be an offshoot of that? Next, he's going to start a company with timbot and effbot as the main products. Van Rossum's Universal Robots?

Bernhard Herzog, 21 Feb 2000

So those are the extremes: Boehm-Demers-Weiser avoids blame by refusing to do anything. Java avoids blame by exposing an impossibly baroque implementation-driven finalization model. Scheme avoids blame by refusing to do anything "by magic", but helps you to shoot yourself with the weapon of your choice. The bad news is that I don't know of a scheme not at an extreme!

Tim Peters on the knotty problem of finalizers and cycles, 3 Mar 2000

It's extremely un-Pythonic to let things leak (despite that it has let things leak for a decade <wink>), but also extremely un-Pythonic to make some wild-ass guess.

Tim Peters on garbage collection, 3 Mar 2000

IOW, the only people who lose under this scheme are the ones begging to lose, and their "loss" consists of taking responsibility.

Tim Peters, 3 Mar 2000

An axiom is accepted without proof: we have plenty of proof that there's no thoroughly good answer (i.e., every language that has ever addressed this issue -- along with every language that ever will <wink>).

Tim Peters on garbage collection, 3 Mar 2000