D for project in computational chemistry

maarten van damme via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 4 06:25:11 PDT 2015


I'm not a programmer myself and used D for a project in computational
electromagnetics. While I had to implement numerical integration and a bit
of linear algebra which was annoying (would be really useful in phobos), it
was a joy to work with and the resulting program was incredibly fast.
Most others used matlab and the difference in speed was more than a factor
100. Not only that, prototyping went quicker in D.

I've also written a simulation of the dual slit experiment which I'll drop
somewhere on github once the code is presentable.

So, if you don't mind having to implement a few algorithms that are already
available in numpy, D will be pleasant and fast.

2015-08-04 11:48 GMT+02:00 Chris via Digitalmars-d <
digitalmars-d at puremagic.com>:

> On Sunday, 2 August 2015 at 16:25:18 UTC, Yura wrote:
>
>> Dear D coders/developers,
>>
>> I am just thinking on one project in computational chemistry, and it is
>> sort of difficult for me to pick up the right language this project to be
>> written. The project is going to deal with the generation of the molecular
>> structures and will resemble to some extent some bio-informatic stuff.
>> Personally I code in two languages - Python, and a little bit in C (just
>> started to learn this language).
>>
>> While it is easy to code in Python there are two things I do not like:
>>
>> 1) Python is slow for nested loops (much slower comparing to C)
>> 2) Python is not compiled. However, I want to work with a code which can
>> be compiled and distributed as binaries (at least at the beginning).
>>
>> When it comes to C, it is very difficult to code (I am a chemist rather
>> than computer scientist). The pointers, memory allocation, absence of the
>> truly dynamically allocated arrays, etc, etc make the coding very long. C
>> is too low level I believe.
>>
>> I just wander how D would be suitable for my purpose? Please, correct me
>> if I am wrong, but in D the need of pointers is minimal, there is a garbage
>> collector, the arrays can be dynamically allocated, the arrays can be
>> sliced, ~=, etc which makes it similar to python at some extent. I tried to
>> write a little code in D and it was very much intuitive and similar to what
>> I did both in Python and C.
>>
>> Any hints/thoughts/advises?
>>
>> With kind regards,
>> Yury
>>
>
> I agree with bachmeier. You cannot go wrong. You mentioned nested loops. D
> allows you to concatenate (or "pipe") loops. So instead of
>
> foreach
> {
>   foreach
>   {
>     foreach
>     {
>     }
>   }
> }
>
> you have something like
>
> int[] numbers = [-2, 1, 6, -3, 10];
> foreach (ref n; numbers
>   .map!(a => a * 5)  // multiply each value by 5
>   .filter!(a => a > 0))  // filter values that are 0 or less
> {
>   //  Do something
> }
>
> or just write
>
> auto result = numbers.map!(a => a * 5).filter!(a => a > 0);
> // ==> result = [5, 30, 50]
>
> You'd probably want to have a look at:
>
> http://dlang.org/phobos/std_algorithm.html
>
> and ranges (a very important concept in D):
>
> http://ddili.org/ders/d.en/ranges.html
> http://wiki.dlang.org/Component_programming_with_ranges
>
> Excessive use of nested loops is not necessary in D nor is it very common.
> This makes the code easier to maintain and less buggy in the end.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20150804/52275a99/attachment.html>


More information about the Digitalmars-d mailing list