Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Python
Clarity vs. code reuse/generality
 

Index | Next | Previous | View Flat


no.email at please

Jul 3, 2009, 7:05 AM


Views: 777
Permalink
Clarity vs. code reuse/generality

I'm will be teaching a programming class to novices, and I've run
into a clear conflict between two of the principles I'd like to
teach: code clarity vs. code reuse. I'd love your opinion about
it.

The context is the concept of a binary search. In one of their
homeworks, my students will have two occasions to use a binary
search. This seemed like a perfect opportunity to illustrate the
idea of abstracting commonalities of code into a re-usable function.
So I thought that I'd code a helper function, called _binary_search,
that took five parameters: a lower limit, an upper limit, a
one-parameter function, a target value, and a tolerance (epsilon).
It returns the value of the parameter for which the value of the
passed function is within the tolerance of the target value.

This seemed straightforward enough, until I realized that, to be
useful to my students in their homework, this _binary_search function
had to handle the case in which the passed function was monotonically
decreasing in the specified interval...

The implementation is still very simple, but maybe not very clear,
particularly to programming novices (docstring omitted):

def _binary_search(lo, hi, func, target, epsilon):
assert lo < hi
assert epsilon > 0
sense = cmp(func(hi), func(lo))
if sense == 0:
return None
target_plus = sense * target + epsilon
target_minus = sense * target - epsilon
while True:
param = (lo + hi) * 0.5
value = sense * func(param)
if value > target_plus:
hi = param
elif value < target_minus:
lo = param
else:
return param

if lo == hi:
return None

My question is: is the business with sense and cmp too "clever"?

Here's the rub: the code above is more general (hence more reusable)
by virtue of this trick with the sense parameter, but it is also
a bit harder to understand.

This not an unusual situation. I find that the processing of
abstracting out common logic often results in code that is harder
to read, at least for the uninitiated...

I'd love to know your opinions on this.

TIA!

kj

--
http://mail.python.org/mailman/listinfo/python-list

Subject User Time
Clarity vs. code reuse/generality no.email at please Jul 3, 2009, 7:05 AM
    Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 3, 2009, 7:33 AM
    Re: Clarity vs. code reuse/generality alan.isaac at gmail Jul 3, 2009, 7:34 AM
        Re: Clarity vs. code reuse/generality no.email at please Jul 3, 2009, 9:19 AM
            Re: Clarity vs. code reuse/generality alan.isaac at gmail Jul 3, 2009, 10:50 AM
                Re: Clarity vs. code reuse/generality no.email at please Jul 4, 2009, 8:05 AM
                    Re: Clarity vs. code reuse/generality tn.pablo at gmail Jul 4, 2009, 8:26 AM
            Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 3, 2009, 11:03 AM
                Re: Clarity vs. code reuse/generality charles at declareSub Jul 3, 2009, 11:50 AM
                Re: Clarity vs. code reuse/generality tjreedy at udel Jul 3, 2009, 1:36 PM
        Re: Clarity vs. code reuse/generality a0046088 at airmail Jul 5, 2009, 11:20 AM
    Re: Clarity vs. code reuse/generality aahz at pythoncraft Jul 3, 2009, 7:36 AM
        Re: Clarity vs. code reuse/generality no.email at please Jul 3, 2009, 9:20 AM
    Re: Clarity vs. code reuse/generality bearophileHUGS at lycos Jul 3, 2009, 7:48 AM
    Re: Clarity vs. code reuse/generality bruno.42.desthuilliers at websiteburo Jul 3, 2009, 8:19 AM
    Re: Clarity vs. code reuse/generality jeanmichel at sequans Jul 3, 2009, 8:58 AM
    Re: Clarity vs. code reuse/generality lie.1296 at gmail Jul 3, 2009, 9:10 AM
    Re: Clarity vs. code reuse/generality http://phr.cx at NOSPAM Jul 3, 2009, 9:33 AM
        Re: Clarity vs. code reuse/generality no.email at please Jul 4, 2009, 8:00 AM
            Re: Clarity vs. code reuse/generality http://phr.cx at NOSPAM Jul 4, 2009, 11:20 AM
                Re: Clarity vs. code reuse/generality no.email at please Jul 4, 2009, 2:10 PM
                    Re: Clarity vs. code reuse/generality http://phr.cx at NOSPAM Jul 4, 2009, 3:24 PM
                    Re: Clarity vs. code reuse/generality dns4 at cornell Jul 5, 2009, 8:53 PM
            Re: Clarity vs. code reuse/generality jeanmichel at sequans Jul 6, 2009, 5:32 AM
    Re: Clarity vs. code reuse/generality tn.pablo at gmail Jul 3, 2009, 4:40 PM
    Re: Clarity vs. code reuse/generality no.email at please Jul 4, 2009, 9:30 AM
        Re: Clarity vs. code reuse/generality http://phr.cx at NOSPAM Jul 4, 2009, 11:29 AM
            Re: Clarity vs. code reuse/generality python at mrabarnett Jul 4, 2009, 11:43 AM
            Re: Clarity vs. code reuse/generality Scott.Daniels at Acm Jul 4, 2009, 1:01 PM
                Re: Clarity vs. code reuse/generality http://phr.cx at NOSPAM Jul 4, 2009, 1:55 PM
            Re: Clarity vs. code reuse/generality no.email at please Jul 4, 2009, 2:13 PM
                Re: Clarity vs. code reuse/generality digitig at gmail Jul 6, 2009, 8:43 AM
        Re: Clarity vs. code reuse/generality alan.isaac at gmail Jul 4, 2009, 11:54 AM
        Re: Clarity vs. code reuse/generality sajmikins at gmail Jul 4, 2009, 3:22 PM
    Re: Clarity vs. code reuse/generality no.email at please Jul 4, 2009, 2:14 PM
        Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 4, 2009, 6:27 PM
    Re: Clarity vs. code reuse/generality tn.pablo at gmail Jul 4, 2009, 9:26 PM
    Re: Clarity vs. code reuse/generality martin at librador Jul 6, 2009, 12:44 AM
    Re: Clarity vs. code reuse/generality andreengels at gmail Jul 6, 2009, 12:51 AM
    Re: Clarity vs. code reuse/generality Scott.Daniels at Acm Jul 6, 2009, 5:33 AM
        Re: Clarity vs. code reuse/generality no.email at please Jul 8, 2009, 6:21 PM
    Re: Clarity vs. code reuse/generality jdnier at gmail Jul 6, 2009, 11:52 AM
    Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 6, 2009, 6:01 PM
        Re: Clarity vs. code reuse/generality aahz at pythoncraft Jul 6, 2009, 9:02 PM
            Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 6, 2009, 10:05 PM
                Re: Clarity vs. code reuse/generality afriere at yahoo Jul 7, 2009, 1:48 AM
                Re: Clarity vs. code reuse/generality ethan at stoneleaf Jul 10, 2009, 3:11 PM
            Re: Clarity vs. code reuse/generality lie.1296 at gmail Jul 6, 2009, 10:13 PM
                Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 6, 2009, 10:57 PM
                    Re: Clarity vs. code reuse/generality lie.1296 at gmail Jul 7, 2009, 5:48 AM
                        Re: Clarity vs. code reuse/generality albert at spenarnc Jul 16, 2009, 6:19 AM
                    Re: Clarity vs. code reuse/generality jeanmichel at sequans Jul 7, 2009, 5:51 AM
                        Re: Clarity vs. code reuse/generality sajmikins at gmail Jul 7, 2009, 7:48 AM
                        Re: Clarity vs. code reuse/generality gagsl-py2 at yahoo Jul 7, 2009, 6:30 PM
    Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 6, 2009, 6:16 PM
        Re: Clarity vs. code reuse/generality pdpinheiro at gmail Jul 7, 2009, 11:01 AM
        Re: Clarity vs. code reuse/generality digitig at gmail Jul 8, 2009, 3:25 PM
    Re: Clarity vs. code reuse/generality aahz at pythoncraft Jul 7, 2009, 7:41 AM
    Re: Clarity vs. code reuse/generality http://phr.cx at NOSPAM Jul 7, 2009, 11:06 AM
        Re: Clarity vs. code reuse/generality pdpinheiro at gmail Jul 7, 2009, 11:31 AM
    Re: Clarity vs. code reuse/generality andreengels at gmail Jul 7, 2009, 11:26 AM
    Re: Clarity vs. code reuse/generality pdpinheiro at gmail Jul 7, 2009, 11:30 AM
    Re: Clarity vs. code reuse/generality pdpinheiro at gmail Jul 7, 2009, 11:51 AM
    Re: Clarity vs. code reuse/generality davea at ieee Jul 7, 2009, 12:04 PM
    Re: Clarity vs. code reuse/generality pdpinheiro at gmail Jul 7, 2009, 12:10 PM
    Re: Clarity vs. code reuse/generality http://phr.cx at NOSPAM Jul 7, 2009, 6:24 PM
        Re: Clarity vs. code reuse/generality pdpinheiro at gmail Jul 8, 2009, 7:06 AM
    Re: Clarity vs. code reuse/generality no.email at please Jul 8, 2009, 6:20 PM
    Re: Clarity vs. code reuse/generality no.email at please Jul 8, 2009, 7:19 PM
        Re: Clarity vs. code reuse/generality gagsl-py2 at yahoo Jul 9, 2009, 12:57 AM
        Re: Clarity vs. code reuse/generality ethan at stoneleaf Jul 9, 2009, 1:06 PM
        Re: Clarity vs. code reuse/generality digitig at gmail Jul 10, 2009, 7:38 AM
    Re: Clarity vs. code reuse/generality nobody at nowhere Jul 9, 2009, 7:28 PM
        Re: Clarity vs. code reuse/generality steven at REMOVE Jul 9, 2009, 7:57 PM
        Re: Clarity vs. code reuse/generality jeanmichel at sequans Jul 10, 2009, 2:11 AM
    Re: Clarity vs. code reuse/generality charles at declareSub Jul 10, 2009, 9:27 AM
    Re: Clarity vs. code reuse/generality jcd at sdf Jul 10, 2009, 9:50 AM
        Re: Clarity vs. code reuse/generality robert.kern at gmail Jul 10, 2009, 9:57 AM
            Re: Clarity vs. code reuse/generality jcd at sdf Jul 10, 2009, 11:56 AM
                Re: Clarity vs. code reuse/generality robert.kern at gmail Jul 10, 2009, 12:02 PM
    Re: Clarity vs. code reuse/generality steve at REMOVE-THIS-cybersource Jul 10, 2009, 9:01 PM
        Re: Clarity vs. code reuse/generality tjreedy at udel Jul 10, 2009, 10:04 PM
        Re: Clarity vs. code reuse/generality digitig at gmail Jul 11, 2009, 11:33 AM
    Re: Clarity vs. code reuse/generality albert at spenarnc Jul 16, 2009, 5:45 AM
    Re: Clarity vs. code reuse/generality albert at spenarnc Jul 16, 2009, 6:15 AM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.