Teaching programming should be teaching teaching.But it's not.
Programming currently requires much more skill than just communicating information logically. It requires:
- translating ideas from concepts and formulations natural to humans to those natural to the machine. [The machine makes very little attempt to work with ideas the way humans do.]
- communicating these unnatural concepts in an unfamiliar and cryptic code.
- knowing lots of details about how things are done internally. [Programming has slowly been getting better on this count.]
Worse, the idea of programming today limits the realm of logical manipulation to just what can be expressed as following a sequence of instructions. There is no concept of a concept, only what to do with it on a low level. What if we could logically manipulate
- mathematical expressions - showing each step in a derivation for a textbook, for once!
- laws - allowing politicians and normal citizens to explore what the effect of a law is in a certain situation
- sciences - finally teaching a computer physics or chemistry, not just how to run the numbers behind it
- language - besides the obvious application to translation, a computer being remotely able to manipulate language is a great help to language learners
- techniques of engineering or other fields - say that someone has taught the computer the technique of least squares (in general); when I am trying to solve a problem that requires some sort of approximation, it offers the least squares technique to me, complete with how to actually do it and the conditions and assumptions I have to make
- documents - beyond grammar checking to does this even make sense (and of course much better grammar checking also, with some help from rational annotation, which I'll get into later -- bug me if I don't)
Next: Communication and Clarification.
~Ken
No comments:
Post a Comment