My Best Teaching Is One-on-One


Of course, I team teach and do special lessons, etc.


But my best work in the classroom is after the lesson is over --
going one-on-one,
helping individual students with their assignments.


It's kind of like with computer programs, walking the client through hands-on.
The job isn't really done until the customer is using the program.


Thursday, August 11, 2011

program bugs in context

A thread in the fedora users list on debugging html pages got me thinking about context, and I ended up posting this. You have to read it in context to follow what I'm talking about (if that's possible), so I'm posting the same here with some explanations:
Ten years ago, Japanese people who used the internet could (more or
less) read English, and Latinized (romaji) spellings of Japanese used
in urls didn't cause many problems either.
Twenty years ago, it was a common assumption in Japan that, programming languages being non-human languages anyway, English was the "proper" context language for all programming. The assumptions was so strong and ingrained that I was never able to sell my idea for a pre-processor for C that would allow the use of Japanese symbols, using headers that would contain suitable mappings between Japanese and English based variable, function, and macro names.

I think I have identified several reasons for that attitude.

One, of course, is that programmers tended to be not overly worried just by the mere sight of stuff that isn't their native language. (Not to say that they are all in love with the English language, just that they are not immediately threatened by discrete foreign symbols.)

Another is that it is (perversely) comfortable for them (and us, too) to isolate the entire technical context from their (our) day-to-day world. And English based symbols helps the isolation when English is not your native language.
These days, ordinary Japanese people use the internet, and the latin
basic set urls are just as meaningless as telephone numbers to them.
Less, perhaps. (Yeah, they get force-fed English in primary grades,
but that doesn't mean it is even comfortable for them to "read" -- and
comprehend -- new combinations of romaji.)
Yeah, that's what I do for a living these days.

(Not much of a living, and, even though I enjoy the work, I have to either change jobs or ask my poor wife to take full-time work. No money in it, no way to certify and get the same pay package that people born in Japan get. Without the bonuses, insurance, Japanese version of tenure, retirement plans, etc., no way to support even just two children through high school. You AET/ALTs who think you want to marry someone Japanese, be warned. You will have to find some other way to make a living, usually just when you get to where you can actually do the AET/ALT job reasonably well.)

Well, I try to avoid the force-feeding approach, but some of the students just aren't ready or interested. There are more teachers like me these days, who can make English less threatening, less of a trial and tribulation, more interesting, more fun. But we each have differing abilities to reach students, and there will always be at least one or two in ten who will not like English. No surprise, there, since even in the US there are students who don't like English.

Heh. I didn't like English in the primary grades. Not until my junior year in high school.

At any rate, the role of Japanese in URLs is not exactly limited to syntactic sugar.
On the other hand, simply allowing Kanji to be used in urls is going
to create as many problems as it solves. It would be almost easy to
fold hiragana and katakana, but not even possible to fold kanji and
kana. As a result, the ads you see in trains tend to show the katakana
or hiragana for a company's name in a search box, with the search
button being clicked.
Katakana is a kind of box-character phonetic writing system. These days it is primarily used for foreign (borrowed) words and emphasis. Kind of like italics are used in English. Hiragana, on the other hand, is more of a cursive phonetic writing system.

The two sets of characters are almost corollary, but native Japanese doesn't have certain sounds that are common in some languages, so there are a few characters (voiced "u", for instance) that exist in the katakana but not in the hiragana.

(I personally would like to research a reformed kana syllabary where all the permutations exist in both sets, but that sort of thing is definitely not in the standard Japanese character sets at this point.)

Just an aside, the roles of katakana and hiragana relative to foreign words sort of reversed before World War One and reversed back after WW II, in the processes of standardization.

And, lest we forget kanji, almost every kanji has more than one pronunciation. And almost every pronunciation that can be mapped to a kanji or a string of kanji has more than one mapping. Endemic one-to-one.
As Paul points out, we should solve our problems in the local context
first, since it's the one we best understand, and the one we probably
need most to work in.
That's such an important rule. It's founded in mathematics, or, at least, provable with advanced mathematics. So many wars and other social problems could be avoided and/or solved if we would all postpone our efforts to solve other people's problems until after we had solved our own.

Not talking about helping other people, taking about trying to solve their problems for them.
And then we try to figure out how to get things working in a broader
context, and at some point we have to resort to a layer of
translations (a human version of an API, perhaps?). 
APIs -- Application Programming Interfaces. These are the methods and definitions that a program module presents to the outside world, the interface by which the outside world "uses" or interacts with the module.
And our minds tend
to handle so much of this so well, that it's often a surprise how much
detail you have to add to mechanical rules. 
Mechanical, as in a context-free grammar or a state machine, with simple, straightforward rules that can generally be analyzed in a finite amount of time.
And then there are
problems that you just have to leave unsolved (and hope something
works out), like the issues with Japanese in urls. And that's when
there are no bugs.
This is the realm of the real world, unprovable systems that we use because, even though they are not proven, they seem to work.

Which is a long rant, just to say that, no matter how hard we try, the real world is never going to match our ideals.

I'm not saying we should give up on our ideals. But we do need a certain amount of flexibility to get along in the real world, including the flexibility to sometimes refine or even re-define our ideals.

The real world will always have plenty of problems to present us.

No comments:

Post a Comment

Courtesy is courteous.