'for every' and 'for any'

Quinn Dunkan quinn at regurgitate.ugcs.caltech.edu
Thu May 30 16:57:37 EDT 2002


On Thu, 30 May 2002 09:09:38 -0400, Oren Tirosh <oren-py-l at hishome.net> wrote:
>On Wed, May 29, 2002 at 08:48:33PM +0000, Quinn Dunkan wrote:
>> >I don't have a personal utility library. It's on purpose. I don't have
>> >personalized key bindings. I try to avoid customization.  Customization is
>> >a big part of what makes one programmer's code difficult to maintain by
>> >another programmer, what makes on programmers's workstation unusable by 
>> >another and makes combining code from several sources difficult.
>> 
>> Um, customizing your workstation is only going to cause problems for other
>> people if they use your account.  I'm hoping they don't do that?  No one can
>> use my wacky setup but they don't need to because I log out when I'm done.
>
>Nobody else ever uses my workstation but if I customize it too much I will
>feel crippled whenever I ssh or install a new machine somewhere.  So I ask
>myself whether I really need it.

Ok, I can understand that.  I have to know qwerty because I use public access
terminals.  For everything else, I haven't had a problem because either my home
directory is NFSed, or I untar my little wad of dotfiles and static binaries.

No, I don't "really need it", since I could do everything under windows with
notepad.  I might not even be that much slower, since I spend most of my time
making mistakes and then thinking about the mistakes I just made.  I'd have
a lot less fun, though.

>> All of the good programmers I've seen working have idiosyncratic setups. 
>
>And they spend ridiculous amounts of time fine-tuning their setup that could 
>not possibly be justified by the alleged efficiency gained.  I used to do 

Well, I can't speak for anyone else, especially not "good programmers", but my
wacky setup hasn't changed significantly since high school.  Occaisionally I
find some new way of doing things that bypasses some old annoyance I'd gotten
used to, and I don't know if it actually makes me any "faster", but it makes
life noticably more pleasant.

>that too.  It's fun, but it is not rational activity.  Python is one of the 
>things that helped me stop it.  It's just good enough as it is.  I only need 
>a nice editor (vi will do if I'm on an alien machine) and Python which comes 
>installed by default more and more often.

I guess my computing lifestyle is sedentary enough that I can afford to settle
down and decorate the place to taste.  The analogy doesn't hold because
untarring a 600K blob is easier than unpacking 1,000 knick-knacks and I can't
NFS mount my room.

I think there's a continuum between taking advantage of configurability to make
the system conform to your personal taste vs. leaving it all alone because
"standard is better than better".  The other dimension is that of genuinely
useful modification vs. the occaisionally cathartic pleasure of poking at
minutiae.

Anyway, this subject is not adequately analogous to the utility function
question so I'll leave it alone :)

>> Of the hard-to-maintain code I've looked at, it's always been not enough
>> abstraction, rather than too much.  People who are used to C and Pascal 
>
>It has nothing to do with abstraction.  I'm talking about the part of the
>learning curve called "making youself feel at home".  If the environment is
>not powerful enough and makes you jump through hoops for common tasks 
>it encourages gratuitous customization until you feel comfortable.

Ok.  I guess I just don't consider defining and then calling functions to be
"jumping through hoops".  Your usage of "power" seems to be kind of like the
"capability baseline".  C has such a low baseline that to do anything useful
you usually need to build it up quite a bit.  Higher level languages have a
high enough baseline that you can get quite a bit done with built in data
structures and operations.  If I'm interpreting you correctly, then "jumping
through hoops" is "building up the baseline".

To me, that's "abstraction".  Logging debugging information is a very common
task, but python doesn't have it built in.  I don't write 'if debug >=
whatever: print blah' all the time and blame python for forcing me to jump
through hoops, I write util.dprint().  I don't have to complain about its not
being built in or wait for 2.3 or 2.2.2 or whatever, since I can have exactly
what I want right now.

Working with timed events and lazily evaluated data structures are other common
tasks (for me) that python doesn't have built in.  I don't care that it's "not
powerful enough" to express them directly (generators help some) because it is
powerful enough to write some utility classes which express them as directly as
I want (though possibly not as directly as a real concurrent language).

I could be annoyed about having to type awkward nested combinations of
multiple-value-bind, and destructuring-bind and let in some heavily
pattern-matching oriented lisp, but I'd be better off writing a macro
specifically designed to express the kind of matching and binding I'm
interested in.

I don't think of it as gratuitous, and I do think my comfort is important.  My
definition of "power" is not so much "how much is built in" but closer to "how
much can I express in a natural way (as if it were built in)".



anyway, that's enough handwaving on that subject :)



More information about the Python-list mailing list