caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Brian Hurt <brian.hurt@qlogic.com>
To: Chris Hecker <checker@d6.com>
Cc: Ocaml Mailing List <Caml-list@inria.fr>
Subject: Re: [Caml-list] Re: Camlp4 optimizations (was: productivity   improvement)
Date: Thu, 17 Oct 2002 16:19:51 -0500 (CDT)	[thread overview]
Message-ID: <Pine.LNX.4.33.0210171540290.1981-100000@eagle.ancor.com> (raw)
In-Reply-To: <4.3.2.7.2.20021017130323.02dbb068@mail.d6.com>

On Thu, 17 Oct 2002, Chris Hecker wrote:

> 
> >how important is operator overloading?
> 
> I'm amazed that people who are interested in high level languages are 
> asking these questions (not to attack you personally, just the overall 
> attitude)!

Developers won't learn a new language with a reputation of inefficiency
(by which they mean how fast the program will run, not how easy is it to
develop in).  And I agree with you that this is wrong, but I admit- one of
the reasons I was attracted to Ocaml instead of other functional
programming languages was the performance.  I now like it enough that I'll
stick with it despite inefficiencies.  Wander up to your local java bigot 
and mention "I hear Java is slow" and watch him jump down your throat. 

And this does not necessarily mean that the performance isn't illusory.  
Notice that I used C++ as my "bad example", a language that has (IMHO an 
unjustified) reputation for performance.

Yes, this is marketing and not logical- so what?

I will say- there is a way to get both the ease of development of operator 
overloading *and* the performance of BLAS.  Make matricies first class 
types known to the compiler, like ints, floats, and strings (vectors can 
be considered m-by-1 matricies).  Now the compiler knows what 
substitutions are legal or not- it can easily replace a = b + c + d; with 
a = b; a += c; a += d;, or even a = d; a += c; a += b; if it feels like 
it.  

The compiler would then produce code which would call out to a 
library which would have to be linked in (rather like you have to add -lm 
to your command line to use sin() in C).  So programs which don't use 
matricies don't have to suffer the "code bloat" associated with them.

The only problem with adding matricies to the language is where do you
stop?  Matricies and vectors (as mx1 matricies), OK.  Complexs?  
Matricies (and vectors) of complexes?  Quaternions?  Directed rounding?  
Single and double precision FP?  Quad precision FP?  Matricies and vectors
of all of the above?  Arbitrary precision FP (with matricies)?  Interval
arithmetic (with matricies)?  Etc.

All of these and more have been proposed (for other languages).  Take some 
time to explore:
http://www.cs.berkeley.edu/~wkahan/
for examples (Prof. Kahan is one of the people being the IEEE FP spec).

Barring adding matricies to the language, your two options are operator 
overloads and/or functions of some sort (the two are not necessarily 
incompatible- a single library could supply both of them, with warnings to 
use the functions for best performance).

By the way, there's evidence that garbage collection *increases* 
performance.  See:
ftp://ftp.nj.nec.com/pub/pls/pldi94.ps.Z
if you don't already beleive me (or have already seen that paper).

Brian


-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2002-10-17 21:14 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20020716172916.4903.qmail@web10702.mail.yahoo.com>
2002-07-18 23:14 ` [Caml-list] productivity improvement Oleg
2002-07-18 23:27   ` Brian Smith
2002-07-18 23:54   ` William Lovas
2002-07-19  3:59     ` Oleg
     [not found]       ` <20020719010318.B3631@boson.den.co.bbnow.net>
2002-07-19  8:22         ` Oleg
2002-07-19  8:57           ` Andreas Rossberg
2002-07-19 10:14             ` Alessandro Baretta
2002-07-19 18:15               ` John Max Skaller
2002-07-19 18:33                 ` Brian Smith
2002-07-20 17:30                   ` John Max Skaller
2002-07-19 19:06                 ` Alessandro Baretta
2002-07-20 17:49                   ` John Max Skaller
2002-07-19 10:34             ` Oleg
2002-07-19 17:25               ` Andreas Rossberg
2002-07-20 16:58                 ` John Max Skaller
2002-07-19 16:35     ` Brian Rogoff
2002-10-16 23:24       ` Eray Ozkural
2002-07-19  1:25   ` Alessandro Baretta
2002-07-19  4:04     ` Oleg
2002-07-19 15:46       ` [Caml-list] Rule based language [was: productivity improvement] Alessandro Baretta
2002-07-19 17:20         ` [Caml-list] compact.c Julie Farago
2002-10-15  9:31     ` [Caml-list] productivity improvement Eray Ozkural
2002-10-15 12:34       ` Oleg
2002-10-15 15:08         ` Eray Ozkural
2002-07-19  4:42   ` Emmanuel Renieris
2002-07-19  9:57     ` Oleg
2002-07-19 10:43       ` Alessandro Baretta
2002-07-19 10:52         ` Daniel de Rauglaudre
2002-07-19 11:36           ` Alessandro Baretta
2002-07-19 11:10       ` Xavier Leroy
2002-10-15  9:24         ` Eray Ozkural
2002-10-15 18:47           ` Pal-Kristian Engstad
2002-10-17  0:12             ` Eray Ozkural
2002-10-17  9:34               ` Diego Olivier Fernandez Pons
2002-10-17 15:55                 ` Jeffrey Palmer
2002-10-17 16:15                   ` brogoff
2002-10-17 18:21                   ` [Caml-list] Re: Camlp4 optimizations (was: productivity improvement) Christophe TROESTLER
2002-10-17 18:32                     ` Chris Hecker
2002-10-17 19:08                       ` Shivkumar Chandrasekaran
2002-10-17 20:01                         ` Chris Hecker
2002-10-17 19:36                       ` Daniel de Rauglaudre
2002-10-17 19:59                       ` Brian Hurt
2002-10-17 20:22                         ` Chris Hecker
2002-10-17 21:19                           ` Brian Hurt [this message]
2002-10-17 21:37                             ` Jeffrey Palmer
2002-10-17 23:55                               ` Alessandro Baretta
2002-10-18  0:57                                 ` Jeffrey Palmer
2002-10-18  4:21                                   ` Alessandro Baretta
2002-10-18  8:23                                     ` Remi VANICAT
2002-10-18  8:46                                       ` Sven Luther
2002-10-18  1:47                               ` Brian Hurt
2002-10-17 23:03                             ` Chris Hecker
2002-10-18 23:55                               ` brogoff
2002-10-18 10:43                   ` [Caml-list] productivity improvement Diego Olivier Fernandez Pons
2002-10-21  8:57                   ` Francois Pottier
     [not found] ` <200207200640.CAA11477@dewberry.cc.columbia.edu>
     [not found]   ` <3D391B41.50900@baretta.com>
     [not found]     ` <200207210059.UAA17003@dewberry.cc.columbia.edu>
2002-07-21 13:00       ` [Caml-list] Rule based language [was: productivity improvement] Alessandro Baretta
2002-07-23  9:53         ` Oleg
2002-07-24  8:07           ` Alessandro Baretta

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=Pine.LNX.4.33.0210171540290.1981-100000@eagle.ancor.com \
    --to=brian.hurt@qlogic.com \
    --cc=Caml-list@inria.fr \
    --cc=checker@d6.com \
    /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;
as well as URLs for NNTP newsgroup(s).