Thanassis Tsiodras wrote:
> I apologize beforehand if this is not the forum to ask.
> 
> I am on the fence about whether to learn OCaml or not, and while reading
> an article called "Why OCaml"
> (http://www.cs.ubc.ca/~murphyk/Software/Ocaml/why_ocaml.html), I saw that
> OCaml was praised for the speed of the executables it generates - and was
> referred to, speed-wise, as "second to none", except C and
> C++.

Do remember that speed isn't always everything - there are many applications 
where it's just not critical. Maintainability, readability, ease-of-use, 
availability of libraries are large concerns too.

> However, when I actually went to the Language Shootout page suggested in
> the article, I found out that OCaml is not 2nd, it is 13th, behind
> languages like Haskell and C#...
> (http://shootout.alioth.debian.org/u32/which-programming-languages-are-
> fastest.php)

As the kinda large number of messages in this thread suggests, benchmarks can 
be very subjective :o)

The Wiktionary definition of "to benchmark" is "To measure the performance of 
(an item) relative to another similar item in an impartial scientific manner". 
IMHO the problem benchmarking "programming languages" (note - "programming 
languages", not "problems solved in programming languages") lies in the word 
"similar" in that definition. Reducing an entire programming language's 
strengths (or weaknesses!) to a single number is just not really realistic - 
the truth is more complex than one single-precision floating point number (or 
even an array of them) can describe. (NB. The shootout doesn't claim that the 
final ranking displayed is anything other than a score of how well the 
languages did at the various benchmarks given - but a graph like that is easy 
to interpret erroneously in that way)

> Is it just hype, then? Or am I missing something?

OCaml's big strengths (by no means unique to OCaml, incidentally) for me are 
its ML legacy - automatic memory (de-)allocation, type inference, static 
type-checking (i.e. no BizarreRuntimeTypeException's here...) and polymorphism 
- all things which allow me to write less (and clearer) code to solve a given 
problem. I also find some of the more exotic features useful - private types 
and polymorphic variants, for example. I'm forced to program in a few less 
desirable languages from time to time and sorely miss the basic features of ML. 
I'd also echo Sylvain's point: I too find the time spent testing and debugging 
OCaml is much, much lower than, say, equivalent C(++) or Java code. 

Personally, I've found the best way to find out if you like a new programming 
language is to write a non-trivial program in it (maybe with the occasional 
assistance of skilled people in its community) and then see what happens when 
you go back to programming in something you used before.

And if speed really is worrying you, the big thing you may have noticed from 
the, ahem, slightly animated discussion that's followed is that there are 
plenty of people on this list who know how to help you identify what's causing 
the problem and then offer suggestions to tweak it. Personally, in six years of 
programming in OCaml for a variety of tasks I've never hit the brick wall where 
I felt the task I was carrying out would have been orders of magnitude faster 
in another language *and also easy to code in that language*!

HTH,


David
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to