Mailing List Archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tlug] What is Code?



Attila Kinali writes:

 > Yes, these books exist, and I have read half of them. But that doesn't
 > mean everyone has. Actually, most people who program I know of, have not.

So?  I would say that just means that those people are way ignorant of
the lore of their field.  That's characteristic of amateurs,
apprentices, and journeymen in every field.  It's not a sin to be in
such a state of ignorance, but its prevalence is not evidence that the
lore doesn't exist or is impossible to find, either.

 > And people who teach programming seem to be oblivious to those...
 > or deliberately choose the easy way of teaching.

Well, Matz (of Ruby fame) told me that "in Japan, 95% [or some very
large percentage] of people with software engineering in their job
titles never took a programming course" [in school or on the job].  In
other words, you can pay them as much as you like but they'll always
be amateurs. :-)

I grant that there is a serious teaching problem in some universities:
I can't say that my colleagues are much help to their students in
learning the lore of their fields.  The approach is more to focus on
some extremely narrow problem in a narrow field, narrow enough that
there are only about ten papers and one author (your advisor ...) and
pray you get your paper written before somebody else publishes.  The
odds aren't too bad, since the only folks likely to publish in that
narrow area are your classmates....

 > Programming is something that is kind of similar, but yet different.
 > There is some theory how to do X, but not much of it. There are many
 > obvious ways how to do it, but only a few make sense. Choosing the
 > right one requires a lot of experience. And there isnt much theory
 > that could help you.

In fact, there actually does seem to be quite a bit of theory out
there.  For example, right now there's an extended discussion on
Python-Dev about how to choose the right model: coroutines, threads,
processes, or the new asyncio module.  It's not written down yet, but
the language wonks (not limited to Dutchmen![1]) do seem to have quite
of bit of oral tradition among them, and there's a consensus that it's
time to write it down.

There's also a lot of theory (especially in the Agile community) about
how to get over writer's block and avoid "stupid logic mistakes", on
the "human" or "craft" side of programming.

I think the real problem is that most people are stuck in "job rut",
where they think they don't have time to immerse in the lore of their
craft.  And Japan has a whole set of special problems (not "worse",
just "different").  The structural problems of Japanese organizations
are to a great extent made up for by the tradition of mentoring
institutionalized in the sensei-deshi and sempai-kohai relationships.
The reduction is "permanent employment" positions is going to change
the equation, though.

 > I wouldn't say unfamiliar, but rather have never applied it to
 > "that field". Thus it doesn't seem to cross their mind that one
 > could do that as well. Just take cooking. People know that you
 > have try a few things and experiment a bit until you can make
 > that stew just right. But sit them infront of a computer and they
 > will never get that they have to experiment with the computer to
 > get it to work as they want.

Programming is very different from cooking, or engineering with
physical devices, for that matter, though.  You get direct sensory
feedback, and for cooking and many physical problems the response
functions are continuous.  Humans have a highly tuned set of automatic
systems for dealing with sensory feedback.  But in programming you
can't take advantage of those systems -- which actually are highly
applicable even to natural language use.

 > Hehe.. I'm currently working on metastability of electronical (logic)
 > circuits. After a long discussion on what the state of art is,
 > we concluded that most people just ignore it, unconsciously fearing it.
 > Over time, it became a craft to handle it. A craft very few specialists
 > in high towers know about.

That seems weird to me.  After all, isn't the original flipflop a
device that works precisely because of metastability?  In fact, isn't
metastability the property of systems that makes computer logic
possible?  Maybe I'm thinking of a different word though.

Steve



Footnotes: 
[1]  python -m this | head -16 | tail -2



Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links