From: Mattias Flodin (flodin_at_[hidden])
Date: 2004-06-04 08:00:03
Below follow some thoughts on why a potential Boost math library ought
to be implemented within C++ - if not from scratch, then with the help
of existing C++ libraries such as Blitz++. I don't think I adress any of
Tom's discussion points very directly, but overall I would say I agree
with him that there is a lot of potential for new libraries in the area.
I think it's fair to say (?) that there are more mathematicians than
computer scientists in the world. Within computer science alone, we've
managed to devise a great number of languages and several of them are in
common use: C, C++, Fortran, Java, Pascal, Basic, Python, to name a few.
Assuming all these languages provided equivalent math functionality, all
of them would likely attract mathematicians, the same way they already
attract computer scientists. So, why shouldn't we be able to bring a
large number of mathematicians to C++? The only reason, so far, is
probably just lack of tools ("If you build it they will come" as Deane
Yang put it).
Many (if not the majority of) projects are not purely mathematical, but
perform many tasks where scientific computing plays one role. Once you
choose C++ for some reason (John Philips names many reasons), I think
most people agree that it is much less hassle to stay within the
language if you can, rather than hiring FORTRAN programmers and trying
to make everything link together. Thus, even if implementations exist
for other languages, I think one in C++ is worthwhile.
There's been some discussion on whether to just provide wrappers to
other libraries, or to implement them from scratch. At the same time,
the library is viewed in the perspective of something that might end up
in the language specification. That assumption does not quite mix with
the wrapper discussion. Since a language specification would only define
the interface, the use of FORTRAN libraries or whatever in the core
would be at std library vendor's discretion. However, in addition to the
interface, the Boost community provides a reference implementation. The
question is, would we want this reference implementation to require
external compilers for other languages? Furthermore, if the interface is
not proven to be implementable efficiently in C++, can we be sure that
it is at all possible? I think being able to implement 99% of the
language specification within the language itself is important. If such
a goal isn't met, we would essentially limit C++ to platforms that also
provide the other languages needed.
I don't think it would be a defeat to show comparison graphs where
FORTRAN turns out to run faster than C++. There are many times when
other things are important than that extra bit of speed. Speed of
implementing the algorithm, for instance. If I see graphs where FORTRAN
is, say, 10% faster, I might just decide it's worth losing 10% speed in
order to gain something else.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk