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

Re: learning languages [Was: Re: Y Store now C++]

>   Agreed.  In this case, I'm concerned with not so much "genius" as
>   questions of who can learn to program, and how well.  More broadly, I'm
>   interested in how we can better educate humanity to be thinkers, with
>   programming as a pedagogic and then problem-solving tool.
This thread has been interesting, so thanks for all the posts.

Over on another list where parents are discussing how to introduce
their kids to programming, Lego Mindstorms and the GUI/language that
accompanies it, is often cited in favor of Logo and others targeted at
children. It fits the definition of a mass market product and it would
seem to me that it indicates that programming is done by a lot more
people than professional programmers. (I always remember Bill Gates
comments about PC's fondly -- he has consistently said "a PC for
everyone".. not "a PC for every programmer" even though the marketing
axis for Windows always has begun w/ "developer/programmer

And this thread about targeting programming in order to enable the
writing of more complex programs etc. Sorry -- while I find it
admirable as a goal, I don't at all find the progress during my
professional career encouraging. I'd like people to think and post 
	     <programming language X, complex-problem-solution
	      facilitated exclusively by X>
tuples if they've collected such. To me this sort of goal fits the
definition of a "communal lie" programming language designers tell
themselves :) Problems I'm personally interested in - optimization
problems in NP-complete and P-space complete domains, CAD programs,
graphics/animation/story-telling, education, search, symbolic algebra,
computational geometry etc. are not much easier to write today than they were
say ten years ago.. and don't get me wrong.. I frequent lists with
other numerical analysts / theory,algorithm types, and informal polls
in terms of what they write their code in reveals more or less the
same thing. Of course all of these are perhaps "library" problems, 
I appreciate and can resonate with the poster that compared
programming / tools with hammering a nail into a wall. But his analogy
is off. Mainly because of the solution space -- think of the 

   valid solutions / possible solutions you might try

ratio. In programming problems, the space is <fragile> (Sundar's
definition: if this ratio < 0.01), in that this ratio is *extremely*
small -- the fact that compilers or interpreters will reject most of
these as invalid is irrelevant (it just gives experienced programmers
a smaller denominator perhaps :). Computers and programming problems
are quite unlike other tasks because choosing what to do is often the
entire problem. Once you've chosen to hammer the nail into the wall
"how you do it" can of course be done differently -- but I find it
much less interesting. I think of the successes like VB (I've always
found Alan Cooper's thoughts on learnability and affordance
enlightening), and MindStorms as evidence that one should focus on
reducing ways one can shoot oneself in the foot even at the expense
of expressiveness. And Donald Norman's work seems to point that
"conceptual models" that people are given drastically affect
learnability -- and programming languages don't really seem to have
that many variations.. which is why experienced programmers can pick
up new languages (they have the right conceptual models in their heads
which they can map new lanaguages into). 

And I also think that the problems, for professional programmers, are
not at all w/ "learning a language" these days. Programming is all
about "leverage" -- I'd rather not write another LP solver, or CAD
modeler, or SQL database -- so if I am going to use someone else's
code, then it behooves me to learn their API .. and I think
unfortunately most enterprises have "internal" API's that are as
voluminous as Win32 these days. This is why I think I find some
elements of CLR interesting.. because I internalized it as striving
for "mapping an API written in one language into another" -- may be a
another instance of a "library" problem and hence uninteresting to
language designers :)

This msg. is too long already so I'll end w/ a couple of questions:
Why are languages viewed as all or nothing deals.. why don't they have
a gradual light-dark setting (to (ab)use Dan's Toaster analogy) that
could help people learn them. Are people thinking about changing the
"interface" such programming language work-products present to the
target market?