Gour D. <g...@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

Reply via email to