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.

Reply via email to