Is D right for me?

Simen kjaeraas simen.kjaras at gmail.com
Tue Oct 5 03:52:22 PDT 2010


Gour D. <gour at atmarama.net> wrote:

> D, from the other side, is younger language, community is not so
> big, language is, afaict, evolving very rapidly and it's not easy to
> tell which compiler to use, which libs etc.

This is a big problem for D at this point. The language is no longer
evolving (much), and we're at a point in time where libraries and
toolchain parts need to be written.


> Moreover, I'm a bit worried on the state of GUI libs available for D,
> especially about QtD.
>
> Moreover, 64-bit is not ready (yet), although I'm told it should come
> soon.

It will. Latest news (2 days ago) say it's now getting as far as
main(), which is good.


> What about ARM if we want to target MeeGo in the future?

I believe GDC supports ARM.


> I also did not research what is the state of database support...Now
> we're thinking to use sqlite3 as back-end.

There's a list here:
http://www.wikiservice.at/d/wiki.cgi?DatabaseBindings

However, most of those are for D1, and a large percentage seem to be
abandoned.

SQLite seems to be well supported, with 7 projects claiming support.


> I also have experience that some potential developers did not join our
> team since Haskell was to hard to grok for them (coming from C++), so
> D might be an easier path with less steep learning curve, but I also
> wonder about myself whether I could pick D quickly enough (I'll buy
> book, of course) after long exposure to Haskell and FP.

I'm sure you can. D also supports programming styles closer to those
of FP, making such a transition easier (I hope :p)


> So, can you offer some advice, what could be better choice between
> Haskell & D for our planned project with the following features:
>
> a) maintainable code

This is likely a bit subjective, and much more dependent upon the
programmers themselves than the language used.

That said, D supports a variety of features that boost
maintainability:

- Contract programming in the form of pre and post contracts for
   functions[1].
- Class invariants[2].
- Built in unit testing[3].
- Documentation comments[4].

Of course, other features of D may increase maintainability, but
those are the ones most directly associated with it.


> b) decent performance

D is generally as fast as C, though some abstractions of course cost
more than others.


> c) higher-level programming and suitable for general programming tasks

My impression (not having used Haskell), D wins hands down on the
latter, and is a bit weaker on the former.


> d) good library support (database stuff, data structures, Qt GUI...)

Likely Haskell is better here (as noted above, D has some problems in
this regard).


> e) vibrant community and active development so that there is some
> guarantee that the language won't fall in oblivion if some devs leave
> the project, iow. 'bus-factor > 2' ?

The bus-factor of D is sadly close to 1. If Walter should choose to
leave, we have a problem. On the other hand, I don't think a mere bus
would keep him from continuing the project.


> (It would be nice if someone familiar with both languages can share...)

Here I can't help. I don't know Haskell.

In closing,

[1]: http://digitalmars.com/d/2.0/dbc.html
[2]: http://digitalmars.com/d/2.0/class.html#invariants
[3]: http://digitalmars.com/d/2.0/unittest.html
[4]: http://digitalmars.com/d/2.0/ddoc.html
-- 
Simen


More information about the Digitalmars-d mailing list