From: Andreas Rossberg <rossberg@ps.uni-sb.de>
To: OCAML <caml-list@inria.fr>
Cc: John Skaller <skaller@maxtal.com.au>
Subject: Re: convincing management to switch to Ocaml
Date: Fri, 27 Aug 1999 12:00:34 +0200 [thread overview]
Message-ID: <37C661C2.D374D8F9@ps.uni-sb.de> (raw)
In-Reply-To: <3.0.6.32.19990825135019.009a8990@mail.triode.net.au>
This is going off topic, but I felt that some of the points stated by
John should not be left unanswered.
John Skaller wrote:
>
> >For example, type safety,
>
> Wrong. C++ is type safe, provided you don't use casts.
Wrong, due to pointer arithmetics. This can happen silently: e.g. the
combination of arrays and subtyping as present in C++ is unsound, you
can produce segmentation faults without using any casts or explicit
pointer arithmetics or other features deemed unsafe. I think the basic
example is even in one of Stroustrups books.
> >type inference,
>
> Wrong. C++ does type inference, or it would not be possible
> to call template functions without explicitly specifying the
> parameter types.
This is far from real type inference as present in most functional
languages. Except for template arguments nothing is inferred at all (and
even this `inference' is very restricted and ad-hoc). In particular,
polymorphic parametricity cannot be infered.
> It IS possible to shoot yourself in C++ (and not just in the foot!)
> however with reasonable programming practices, the class of errors which
> cannot
> occur in ocaml -- mainly null pointer problems -- can become
> manageable.
I seriously doubt that.
> I will also add: it isn't clear to me C++ is more
> efficient than ocaml. Where complex memory management
> schemes are required, it is possible ocaml is MORE efficient,
> particularly since it generates assembler, bypassing C.
Not only because of memory management. I believe that simulating higher
order functions by using classes (and note that virtual functions often
are nothing more then an obscured form of higher order parameterisation)
is inherently more inefficient than using first class functions.
> >rather unclear (I'm thinking of coercions and dynamic dispatch)
>
> I would say that there are some problems with specification,
> including imprecision, and complexity. But then, C++ HAS a specification
> document, ocaml doesn't (AFAIK).
I believe that not even the most experienced C++ guru can tell what is
going on when arbitrary combinations of overloading, dynamic dispatch,
templates, template specializations, implicit coercions, and user
defined coercions come into play. In my experience (though a bit dated)
at least existing compilers cannot. And I fear the language
specification cannot either.
> OTOH, I find the ocaml precedence rules are a
> real annoyance -- I can't remember them, and I find all the brackets
> not only make code hard to read, they make it hard to write (for me).
However, they only require a simple look at the grammar. But I agree
that OCaml's syntax is too large and has its flaws.
> Furthemore, these problems rarely come up in practical
> programming, if the programmer is using sensible techniques.
One gets a feeling of what a complex set of rules is required to specify
these `sensible techniques' by looking at the number and size of books
available that try to teach such stuff. And the necessity of such rules
adds to the language complexity. But even if this were considered
feasible I still doubt the statement.
> >Lack of a reference: Is this really a fair criticism?
>
> It is irrelevant whether it is FAIR or not.
I agree. Users don't care why (and why should they?).
> >Lack of ISO standardization: Who cares?
>
> A very large number of organisations.
A document defining the language more formally than the user manual
would definitely be a good thing. If a standard is needed then one has
to stick to Standard ML for now, I'm afraid.
> These arguments are not technical: they're social.
You are right that there are more than just technical reasons for
choosing a particular technology. And many (not all) of these arguments
have their justification. However, I don't agree that in the particular
case of OCaml vs. C++ there exist any _technical_ advantages in the
language C++ itself.
- Andreas
--
Andreas Rossberg, rossberg@ps.uni-sb.de
:: be declarative. be functional. just be. ::
next prev parent reply other threads:[~1999-08-28 17:49 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-07-28 14:47 STARYNKEVITCH Basile
1999-07-30 9:00 ` Markus Mottl
1999-08-13 10:32 ` John Skaller
1999-08-25 1:51 ` Frank A. Christoph
1999-08-25 3:50 ` John Skaller
1999-08-25 6:34 ` Frank A. Christoph
1999-08-26 18:36 ` Stefan Monnier
1999-08-29 6:08 ` John Skaller
1999-08-27 10:00 ` Andreas Rossberg [this message]
1999-08-28 6:24 ` John Skaller
1999-08-30 15:59 ` Sylvain BOULM'E
1999-08-31 5:50 ` Brian Rogoff
1999-08-28 19:51 ` Dave Mason
1999-08-30 19:05 ` Xavier Leroy
1999-08-30 8:02 ` Pierre Weis
1999-08-30 19:35 ` John Skaller
1999-08-31 17:10 ` Pierre Weis
1999-09-03 6:56 ` John Skaller
1999-08-31 19:03 ` Stefan Monnier
1999-09-03 7:28 ` John Skaller
1999-08-31 0:13 ` John Prevost
1999-08-31 5:19 ` John Skaller
1999-08-31 6:35 ` John Prevost
1999-09-03 5:42 ` John Skaller
1999-08-31 16:24 ` Gerard Huet
1999-07-30 14:42 ` John Skaller
1999-07-30 18:49 ` Gerd Stolpmann
1999-07-30 21:30 ` Francois Rouaix
1999-08-12 10:36 ` Reply to: " Jens Olsson
1999-08-16 18:33 ` Chris Tilt
1999-08-12 12:15 ` Frank A. Christoph
1999-08-15 8:14 ` Friedman Roy
-- strict thread matches above, loose matches on Subject: below --
1999-09-07 7:24 TommyHallgren
[not found] <John Skaller's message of "Tue, 31 Aug 1999 15:19:48 +1000">
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=37C661C2.D374D8F9@ps.uni-sb.de \
--to=rossberg@ps.uni-sb.de \
--cc=caml-list@inria.fr \
--cc=skaller@maxtal.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox