Dreaming of new generation IDE

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sat Feb 6 20:57:24 EST 2010


On Sun, 07 Feb 2010 01:34:14 +0000, bartc wrote:

> For a real-world example, it means instead of having a room with a
> light-switch in it, if I *know* I want the light on or off, I should
> have two rooms: one with the light permanently on, and one with it
> permanently off, and just walk into the right one.

I don't think you can apply real-world analogies to software in that way. 
They're too different.

Think of the objections to having two rooms, one permanently lit up, the 
other permanently not:

(1) Having two rooms is expensive and wasteful of physical space, which 
is in short supply.

(2) You typically use rooms for storing things (furniture and smaller 
objects), having two rooms mean you would need to clone every object 
inside it and somehow keep them in perfect synchronisation.

(3) the light that is always on will use electricity 24 hours a day, 
regardless of whether you are inside it or not.

But none of those objections apply to functions:

(1) Functions are cheap and live in memory, which is not in short supply 
unless you're programming for an embedded device.

(1a) Even if you are programming in a device that is short of memory, the 
overhead of a second function is minimal. There's little difference 
between:

def func(flag):
    if flag:
        blockA
    else:
        blockB


and


def funcA():
    blockA

def funcB():
    blockB


for any non-trivial code blocks, particularly if any common code is 
factored out into another function which you call.

(2) Functions aren't typically used for storage, and when they need 
external data, it is easy to have them access a common data store.

(3) Functions don't use CPU cycles just by existing.



-- 
Steven



More information about the Python-list mailing list