On Sunday, 13 March 2016 at 13:02:16 UTC, Bastien wrote:
Hi, apologies for what may be a fairly obvious question to some.
## The background:
I have been tasked with building software to process data
output by scientific instruments for non-experts - basically
with GUI, menus, easy config files (JSON or similar) - and the
ability to do some serious number crunching.
My background is python/octave and would be happy building it
in python (or god forbid, even octave), but it would end up
clunky and slow once ported to a standalone executable. Hence
why I'm looking at other languages. D caught my eye.
## The problem:
The sticking point is unless I commit the rest of my life to
maintaining this software, I can't write it all in D. The
algorithms change/are improved yearly; the output format from
the instrument changes once in a while and therefore these need
to be easily scripted/modified by other (non-programming)
scientists and the community that only really know python and
octave.
Essentially I'd like a D front end, and a D back-end that does
most of the memory and data management but calls and interprets
.py, .m and/or .jl scripts (python, matlab, julia) to know how
to treat the data. This leaves the py/m/jl scripts visible to
be edited by the end user.
## The question:
Can it be done?
Does this entirely defeat the point of using D and I should
just code it in python because of the added overheads?
Thanks for your help!
B
I REALLY don't think you should use _any_ scripted language, if
what you're looking for is speed.
Now for your main question:
It can be done.
An incomplete list of libraries and bindings for D:
http://wiki.dlang.org/List_of_Libraries_and_Frameworks.
It includes tools such as GTK.
And I'm very sure that it will be faster than writing it
completely in python.
Another thing: I myself find D *much* easier to program in than
python (having experience in both). The many meta-programming
tools in D and the nice syntactic features of D really make-up
for the increased complexity of the language compared to Python.
Somethings I'd like to recommend: OpenCL. For algorithms and
such, using the GPU is much much faster than using the CPU.