Gathatoulie

And of these shall I speak to those eager, That quality of wisdom that all the wise wish And call creative qualities And good creation of the mind The all-powerful truth Truly and that more & better ways are discovered Towards perfection --Zarathustra.

Tuesday, August 14, 2007

programmer's mind

I am trying to cultivate a state of mind and way of life in which
programming "comes easy".

Rhetorical Questions: What do I mean, why do I care, and why am I
talking to you about this now?

Consider a much more low-tech activity: reading and writing. If you
are just reading, you sit there like a catatonic lump, your eyes
flickering over the text, ideas and associations coming to you as they
will, and mostly departing out the mind's back door too.

Now, suppose you start making marginal notes describing your ideas.
You no longer look so catatonic to the outside observer.
Unfortunately, other derangements may occur -- for example, suppose
some part of the text inspires you so much that you fill the whole
margin and have to leave off reading to grab a notebook and froth at
the mouth there for a while. You may never come back to finish
reading the book.

Life is full of action and opportunities for action. But for every
action that one takes, an apparent infinity of opportunities will be
passed by. Thus, life is full of "choices" -- but should we really
believe this? Or should we instead think about how life is
constructed out of causal, physical, arrangements of things, with
"free will" just an illusion?

I figure it doesn't matter that much, because in either case, the only
thing you can do about it is use the native abilities you have. This
includes memory and perception and preferences. Of course all of
these systems are changing over time, as you see new stuff, remember
different stuff, reevaluate your beliefs, and so on. The central
point is that these systems enable one to function as a computer.

Indeed, if you look at the world around you, it also has analogous
systems of persistence, data, and facility. So, it can function as a
computer too. Huzzah. Now the question is how to program and why?

I am pretty convinced that every program represents a transform from
state A to state B. We usually think in terms of sets of states:
e.g. insert an integer N, get out the integer N! but all this means is
that code in the usual sense is a schema for generating a suitable
transform. These are just piddling terminological details. The main
point is that a program trades A for B.

We could now go on into elaborate riffs talking about online
programing and so on, but I trust you can fill in these details if you
want. The point is that to program you need to know how to transform
things. I'm not talking about turning a sow's ear into a silk purse,
either. It is important to know which transformations are feasible.

In general, how can you turn your volitional drives into realized
states of being? If you want to turn 3 dollars into a cheeseburger,
you can go to McDonald's and smash up your cash and leave reasonably
well satisfied. If you want to turn a trend of sorrow and frustration
into a trend of accomplishment and joi de vivre, well, that's more
complicated. And besides that all of these transforms are interacting
with each other (we could call that blowback or externalities) so
there are limited returns to seeking happiness through cheeseburgers.

See, to program well, you need to know about these externalities. It
is not without reason that transforms are often called maps. You are
like a geographer; and if you are only good at identifying moutain
ranges and streams and you can't do cultural geography, your map might
provoke a civil war. And you don't want that; very dangerous. So it
is to your advantage as a programmer to make your system of maps
flexible, even extensible or modifiable in case of unexpected change.
Mainly, though, you just have to work really hard to understand what
all lies between A and B. It probably isn't a straight and narrow
road but a wide expanse, see. (And of course in many cases like my
surveyer friend Joseph K., you may find yourself only able to approach
B, but never to reach it.)

Once you are any good at programming, of course, you will want to
apply what you've learned. Your programs will not take place only at
the level of the possible or in the abstract, but instead will operate
directly at the level of the real. And if you try sometimes, you just
might find you get what you need.

So, that's why I care. Why am I burdening you with these thoughts?
Because between conceiving and doing is a lot of need for expression;
and it is extremely difficult to express things if you don't have
someone to express things to. Actually it seems like life is already
made up of "relationships" -- anyway, relationships are fundamental to
the model above. I need someone to talk to these ideas about -- but I
am also hoping that my words will be helpful to you in some way.
Perhaps if they are or are not you can let me know. In either event I
think this note has boosted my confidence about asking a programming
question has been burning a hole in my brain to some "pros".

Outtake:

If you were to ask me about it, I might have to say that I tend to
think of life as a bit like reading a book or walking around in a
museum or one of those immersive plays that certain theater companies
put on, where the audience moves with the performers and there is no
stage. More flexible, of course -- maybe I'd say, more like
"live-action role-playing". Anyway I'm less concerned with the
theatrical analysis and more with the textual one.

0 comments:

Post a Comment

Post a Comment

Blog Archive

words cut, pasted, and otherwise munged by joe corneli otherwise known as arided.