Re: Natural language programming?

From: Alexander Schmolck (a.schmolck_at_gmx.net)
Date: 11/09/03


Date: 09 Nov 2003 02:31:33 +0000

Corey Murtagh <emonk@slingshot.co.nz.no.uce> writes:

I can't resist playing a bit of devil's advocate.

> >>*CASUAL* users, yes. Mechanics, no. Same with programmers, I'd bet.
> > When you program in a high level language there is no need to know
> > details about bits and bytes at machine language level.
>
> I'm sorry, but this is almost pure sophistry.
>
> A programmer MUST know certain things, or he is not a programmer.

Well, that's a bit tautological, isn't it?

> Sure, you don't need to know exactly how bits are manipulated during, for
> example, a divide operation. But you do need to understand a whole bunch of
> other things which the 'average' person is unaware of in order to program
> effectively. Try doing anything interesting in programming with only a
> layman's knowledge of boolean logic for example.

Interesting to whom? To you? To the layman "programmer"?

It is certainly true that being an expert programmer is (in the absence of
true AI) an inherently difficult task, because it involves -- apart from the
possession of plenty of random and in itself completely worthless knowledge --
finding novel solutions to conceptually difficult problems.

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"). And every specialist was once a non-specialist.

> COBOL was an abortion. It tried to make programming more accessible by using
> a 'natural' syntax. It actually worked quite well... a lot of people learned
> to program with it... and most of the COBOL code I've seen (and I've seen
> reams enough of the stuff to wallpaper my house a dozen times over) was
> absolutely frightful stuff.

This only demonstrates that "COBOL was an abortion" from the limited
perspective of a professional programmer. I've (thankfully) never had to deal
with COBOL, but I've been told that accountants and other non-programmers
could look at COBOL code and get some reasonable idea what it did. So I can
certainly imagine that this (for the intended uses of COBOL) would outweigh
COBOL's frightfulness to programmers.

> >> Programming is a form of mathematics.

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

The mere fact that programming languages and computers can be well formalized
and that mathematical knowledge and skills can be usefully employed for
certain programming problems doesn't mean that the act of programming as a
whole much resembles doing mathematics or even that the relevant axioms are
largely based on mathematical considerations.

> > Yes, to the computer it is a form of mathematics.
> > But that does not mean that the human who handles the computer needs
> > to use mathematical language to control it.
>
> Sorry, but you're dead wrong. However you express it, if you're doing
> mathematics (which you invariably will for any complex computing task) then
> you need to use mathematical 'language'.

The OP denies (quite rightly) that handling a computer necessarily
necessitates the use of a mathematical language (in the sense that a person on
the street would classify something something as a mathematical language).
Your only counter looks like another tautology.

> Feel free to express it in English, if you like, and if you can find the
> terms to do so.

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."

?

>
> 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 -- if you meant that computer
programming as a discipline ows much to mathematics: sure.
 
> Now go try to convince a mathematician that all those little symbols he uses
> are simply elitist garbage designed to stop 'normal' people from
> understanding mathematics,

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.

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.

That doesn't mean that this cost is therefore insignificant (also it will
presumably appear so to the practioner -- for the above reason):

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 (apart from that, the very choice of becoming a
mathematician is likely is affected by the magnitiude of initial difficulties
experienced).

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.

> > Most people could program computers if we use high level natural
> > language-like language to program them.
>
> Almost anyone can learn to program a computer using existing computer
> languages. 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?

> > The problem we have today is that many programmers want to exclude
> > other people from the field of programming by keeping an unnecessarily
> > complicated programming language.
>
> You've got a chip on your shoulder about this for some reason, but that
> doesn't make your assertions true. 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)?

It is only natural that developments which would render such sacrifices
worthless are unlikely to meet a particularly warm welcome by those who've
already paid the costs. This doesn't necessarily have to manifest itself as a
conscious and coordinated effort to keep programming languages complicated,
even if such complication is one of the outcomes.

'as


Quantcast