This caught my eye on reddit:
http://epsilondelta.wordpress.com/2006/01/31/programming-like-a-mathematician-ii\
-learning-new-languages/
My antennae began to twitch at the point were Dziuba distinguishes the
programmer who _understands_ Java who will think thoughts like "Hmm,
network programming. This feels awful similar to file I/O. I bet they
use the same basic structure. I'll have a look at the docs" from the
one who, as he puts it, simply _knows_ Java who will "fire up IE, type
in www.google.com and search for java network programming". I'm pretty
sure that I'd do the second approach first and the first approach
second and I'm not sure I know why that would be bad. In fact, I just
did google for java network programming and the first hit is a
fantastically useful FAQ.
The programmer who understands a language, in Dziuba's model, grasps
the "fundamental tenet" of the language (by analogy with the various
Fundamental Theorems of this and that in maths) and has trained
themselves in how that tenet conditions solutions in that language and
is able to "understand the fundamentals to a point where [they] can
build upon them in the simplest way to get the most efficient answer
to the question at hand". Furthermore, the _effective_ programmer can
"for any given problem [...] mentally visualize and express in code,
the shortest path to solution". A voice in my head appends "in one
step" to the end of that, but I'm not 100% sure thats the intent.
Anyway, I suppose that people who can do this must exist but I don't
think I've met one in ten years of commerical programming. On the
other hand I have met a number of people who's productivity in that
setting is quite low because they insist on fathoming out the
uttermost details and nethermost implications of the implementation of
BufferedInputStream before making any use of it.
Learning a programming language the way a mathematician learns a new
branch of the subject (although I don't quite believe that they do
this the way Dziuba seems to suggest) doesn't seem like such a
fantastic notion to me. Which raises the question: how would you go
about learning a language like a post-modernist?
Keith