Scientific computing with D
Don
nospam at nospam.com
Wed Feb 4 07:00:25 PST 2009
Lars Kyllingstad wrote:
> I think D is, or at least could be, the scientific programming language
> of the future. Here's why -- and possibly how:
>
> A couple of years ago, I took a university class called Numerical
> Physics. After finishing the course, I was left with the impression that
> numerical computing was all about squeezing every last bit of
> performance out of the computer -- that unnecessary operations and
> function calls should be avoided at any cost, even if the resulting code
> is full of nasty hacks and tricks, making it completely illegible and
> utterly unmaintainable. And of course, in many cases this is true.
>
> Now, however, I have a bit more experience in the field and I know that
> it is not always so. In numerics, as in other areas of programming, it
> is a trade-off between development time and execution time.
> Traditionally, if one has a desperate need for speed (sorry), one uses
> FORTRAN, C or C++. The programs run very fast, but can be hard to
> develop, debug and maintain. For less processor-intensive tasks one uses
> Matlab, Mathematica, etc. which have a lot of built-in functionality and
> make for rapid development, but programs run at a snail's pace.
>
> With D one has the best of both worlds. I've used both C++ and
> Mathematica for numerics in the past, but now I use D almost
> exclusively. I find it a lot easier (and more fun) to code in than C++,
> and I spend a LOT less time debugging my programs. On the other hand,
> calculations that would take an entire day in Mathematica are finished
> in a matter of minutes using D.
>
> It's a fact that D programs don't have the performance of C(++) ones,
> but that, I think, is just a matter of time (pun not intended). It's a
> relatively new language, and the compilers are still somewhat immature.
>
> The one thing I miss the most, however, and which I think is necessary
> for D to "take off" as a scientific language, is a native D scientific
> library.
>
> Searching dsource, I find that many nice modules and libraries have been
> made already:
> - MultiArray (Bill, Fawzi)
> - dstat (dsimcha)
> - blip (Fawzi)
> - MathExtra, BLADE (Don)
> - Scrapple/backmath (BCS)
> - Scrapple/units (BCS)
> - bindings to GSL, BLAS, etc.
> - ...and probably more
>
> Myself, I've written/ported some routines for numerical differentiation
> and integration, one- and multi-dimensional root-finding and some very
> basic linear algebra, but so far only for personal use. Currently, I'm
> thinking of porting QUADPACK to D.
>
> I think it would be really nice if many or all of the above mentioned
> things could be collected in a single library, together with all kinds
> of other stuff. Something like the GSL, only written in D. (In my head
> it's called SciD. At first I thought of DSL - D Scientific Library - but
> that acronym is used all over the place.) I haven't the time, nor the
> skills, to write an entire such library myself, but I'd be happy to
> contribute where I can.
>
> Here are some design goals I find important:
> - sensible, logical and tidy package hierarchy
> - access to high-level functionality for rapid development
> - access to low-level functionality for performance
> - make use of D's awesome compile-time functionality
> - reusability, pluggability and extensibility
>
> (By the last point I mean that if one method doesn't work it should be
> quickly and easily replaceable in code with something else. This is
> achievable through the use of templates and interfaces, and ties in with
> the second point.)
>
> So, what do you think? Am I making any sense? Am I the only one
> interested in these things?
>
> All of the above are, of course, my personal opinions. What are yours?
>
>
> -Lars
As a first step, I created a wiki page and copied your list to it.
http://www.prowiki.org/wiki4d/wiki.cgi?ScientificLibraries
I think it would be really useful to fill in the contents of each of
these libraries (as I've done for mine), so that we can get a good idea
of what's out there.
More information about the Digitalmars-d
mailing list