Re: Natural language programming?

From: Programmer Dude (Chris_at_Sonnack.com)
Date: 11/10/03


Date: Mon, 10 Nov 2003 15:06:19 -0600

Alexander Schmolck wrote:

>> A programmer MUST know certain things, or he is not a programmer.
>
> Well, that's a bit tautological, isn't it?

In the sense Arthur mentioned, yep. And consider:

A doctor MUST know certain things, or he is not a doctor.
A lawyer MUST know certain things, or he is not a lawyer.
A mechanic MUST know certain things, or he is not a mechanic.

Same thing, doncha think?

> But many tasks that non-specialists want to carry out with their
> computers are *not* conceptually difficult and yet are far beyond
> their reach (and do by necessity require the use of something more
> expressive than pull-down menus, i.e. a "language").

*Many* tools exist for automating simple tasks. I would say that
*any* given computer user can find tools to match their experience
level and willingness to learn.

> ...I've been told that accountants and other non-programmers
> could look at COBOL code and get some reasonable idea what it
> did.

More or less true. You can get a feel for *generally* what the
program is doing, but the details do require a deeper understanding
of the language (I speak from the experience of someone who had to
figure out a large COBOL program without knowing the language....I
could only get so far and eventually had to recruit someone with
COBOL experience).

>>>> Programming is a form of mathematics.
>
> In the same way that playing monopoly is a form of mathematics.

No, not the same at all. Monopoly requires some crude math, but
*programs* are a type of mathematical expression.

> Would the following be OK as a specification of a complex
> computational task in English:
>
> "Remove red eye artifacts from all the pictures of people that
> I stored on my hard disk within the last two months."

It's a fine spec, but you may not realize the challenges with regard
to its implementation. The above is NOT a program. It's a task or
command which might be *performed* by a program.

>> And PD's statement also parses as: The art of computer programming
>> is largely derivative of the science of mathematics.
>
> Disregarding the funny use of art and science --

Not really funny at all. The science part should be obvious. The
art part is, perhaps, less so, but creativity does play a role in
much software (primarily in the area of user interfaces). I tend
to think of Architecture as a close analog to programming. Both
require "scientific" knowledge (materials and construction science
for the Architect, computer science for the programmer). Both also
have strong creative elements.

> I'd be quite happy to argue that the fact that mathematical
> notation is on the whole fairly moronic isn't conducive to the
> general public's understanding of mathematics.

How would you go about "correcting" that problem?

> Again, mathematics *is* inherently difficult and presumably the
> effort required to become fluent with standard math notation and
> parlance is forms only a tiny part of the cost of becoming an
> expert mathematician.

One could easily substitute "programming" for "mathematics" above.

> Most people neither become nor desire to become expert
> mathematicians, but knowing *some* math (and more than what is
> currently the norm) is beneficial to almost everyone...

And again, you could be talking about programming. If nothing else,
MANY people could benefit from the mental discipline required to
devise a working algorithm.

> ...(apart from that, the very choice of becoming a mathematician
> is likely is affected by the magnitiude of initial difficulties
> experienced).

Also likely true about programming. I know *I* took to it like a
long-lost brother.

> I think the situation broadly mirrors programming: the general
> public is more ignorant than it should be and part of the fault
> lies with unnecessarily high entry-barriers.

I think the fault lies more with the fact that too many people
allow themselves to remain ignorant and stupid. How many people
do you know who can't program the clock on their VCR? And those
instructions are MADE for idiots^H^H^H^H^H^H^H ordinary people.

>> Changing the representation of the language isn't going to make
>> it more accessible, since the algorithms and so on do not change.
>
> So machine code is equally accessible, as, say visual basic?

No, but the underlying algorithm to perform a task remains the same.
And many such algorithms are complex. Period.

>> The number of elitist programmers who are actively trying to make
>> programming harder for everyone else to learn is insignificant
>> compared to the number of programmers who don't give a ***
>> whether you learn it or not.
>
> I find this assertion quite plausible. Have you never come across
> geek vocabulary like "luser" or witnessed displays of (somewhat
> ill-conceived) geeky pride on having mastered the idiocies of
> C++/perl/unix/etc. (at a considerable sacrifice of life-time)?

So atheletes shouldn't be proud of spending a lifetime gaining skill?
So doctors shouldn't be proud of learning a new, difficult technique?
A mechanic shouldn't be jazzed about learning a new engine?

In my experience, most programmers welcome--with open arms--new
people into the field. This group exists, in part, to allow us
to share with each other ... and with non-programmers.

Go back and review the many "newbie--what language should I learn"
posts and responses.

The *only* impediment I've ever seen to new programmers is their
own unwillingness--or inability--to learn what's needed.

-- 
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL  |
|_____________________________________________|_______________________|