[mercury-users] The Mercury Language

Richard A. O'Keefe ok at atlas.otago.ac.nz
Thu Sep 7 09:41:52 AEDT 2000


Peter Schachte <schachte at cs.mu.OZ.AU> wrote:
	I think all of this applies as much to Mercury as it does to ML.
	So the question I have for those interested in seeing Mercury
	"catch on" is:  is the correct solution to this to educate the
	masses to use more sophisticated abstractions, or would we do
	better trying to simplify some of the concepts (while retaining
	Mercury's declarativeness) to make it easier for the average
	developer or uni student to pick up?  Or is it better to accept
	Mercury's current level of popularity and get on with the research?

People will learn how to Q if
 - they *want* to belong to the-community-of-people-who-know-how-to-Q
 - they have not been taught that they cannot Q
 - they are conscious, sufficiently healthy, have the time, &c

Developing reliable software is an intrinsically mathematical
activity.  I've just received the SPARK V5.0 CD-ROM from Praxis;
SPARK is a verifiable subset of Ada produced to help people produce
verifiable real-time software.  You have to have at least as much
mathematical knowledge and skill to use SPARK as you do to use Mercury.
There *is* a community of people who are happy to use formal methods
in program development.

I suspect (but have no hard evidence) that most programmers not only
do not belong to that community, they do not *want* to.  All they can
see in it is a barrier to their creativity.  GNAT has been available
for several years now, available on more platforms than Java, and
generating code as good as or better than C.  Where is the rush to
Ada 95?

The educational systems in Australia, New Zealand, and the United States
are extremely good at teaching people that they cannot do mathematics.
(I was horrified recently, going through a Richard Scarry workbook with
my 4-year-old, to discover what *meaningless* activities children are
expected to do in the name of "math preparedness".  My 4-year-old does
a lot of the things "wrong" because she does something interesting
instead.)

Programmers *can* learn incredibly complex, even arcane, material
when they see some point in it, and when it doesn't *look* like
mathematics.

Let's be really really clear about this:  Mercury right now is no
more mathematical and far less complex than SQL92 (let alone SQL99).
But SQL doesn't *look* mathematical, and people (other than Codd,
who was still extremely unhappy with SQL, last I heard) can see the
point of learning SQL, so they do.  "Domain", "relation", "union",
"cartesian product", "join"; they are as mathematical as anything in Mercury.

Did anyone (say, any of the Java designers) notice that the fact that
SQL syntax doesn't look like C doesn't seem to have hurt it any?

Has the arcane syntax and highly mathematical notions of regular
expressions and associative arrays stopped people learning Perl?

By making Mercury run under Windows, by giving it a CORBA binding,
by putting it on .NET, and other such things, the Mercury team have
done a lot of what would make Mercury attractive:  they have made it
*practically useful* to a large number of programmers.  Once you
can start by telling people "it's a great tool for developing
reliable *Windows apps*", then you have got their attention and they
can see some point in learning it, whatever it looks like.

But then, many programmers will make the rational decision "MSVC++
already does what I want, I'll stick with it", because Mercury
addresses a problem they don't have.  (Their *customers* do, mind.
But *they* aren't suffering.)  Again, it doesn't really matter what
Mercury looks like.  If you tell them "Mercury programs are X times
shorter than C++ programs", they won't care if X is too small, and
they won't believe you (based on the Erlang experience) if X is too
large.

--------------------------------------------------------------------------
mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the users mailing list