Hello! I'd like some help to resolve the subject's question...
Let me start with my background...Finished Computer Engineering studies and during that period was introduced to several programming languages (including some assembly stuff) starting with Fortran & C, a little Prolog and did my thesis by programming simulator for coloured Petri nets using Zortech C++ - that was in 1990 :-) I also playing with Smalltalk a bit...I'm saying as small emphasis that D would not be my 1st programming language. Later, my life went away from programming into totally different area and today programming is not my occupation, but should serve my hobby projects. After my 'programming come-back', I explored Ruby a bit, checked Ocaml shortly (did not like syntax) and wanting something 'new', I ended up tinkering with Haskell. For my web purposes I wanted to use Django, but realized that not being web developer, there is no sense to write so many code, when I can achieve the same by learning some PHP (which I do these days) in order to tweak and/or write some missing module for my preferred CMS (Made Simple). Similarly, to create invoices for our startup 'company', I abandoned GNUCash which requires tinkering with Scheme (Guile) and decided to use SimpleInvoices (PHP & MySQL web app). The keyword here is 'pragmatism', iow. understanding that one needs to make some compromises in order to "get job done". Now, we're back at D...Saw a Reddit thread yesterday which inspired me to think (once again) about Haskell vs D... So, we want a general programming language to work on our open-source (we plan GPL) hobby project which is desktop GUI application and besides the need to develop several libs for it, it needs to use C-lib (Swiss Ephemeris). Are there other alternatives? Well, I do not like Java, VMs (Scala included)., want something 'modern' to avoid manual memory management, pointers etc., higher-level...which eliminates C(++). Scripting languages (Perl, Python) are too slow and I'm aware of some projects from the same domain which switched from Python to C++. I'm not interested in LISP-family ala Clojure, neither inspired by C#,Go... We want to develop on Linux (running x86_64 I7 cpu) and have app working on Mac and possibly Windoze. For a long time I was thinking about gtk2hs bindings, but since Mac platform became important for us (supervisor of the project recently switched to it), I abandoned GTK. I was even advised by one dev working on GTK Mac port that wx(haskell) is better solution if we target Mac. However, we would like to write kind of 'desktop-lite' app here idea to use Qt & Meego was born, since there is no wxQT port. I was sorry to discover yesterday that QtD project is suspended. :-( So, let's recap in regards to Haskell vs D. a) I like Haskell syntax, its type-system, purity and the concept of separating pure code from non-pure (e.g. IO), HOF. Community is very friendly and growing (1st time when i visited #haskell it was <100 users, today probably >600), there are lot of packages available on Hackage, GHC is keeping strong, Cabal build system is nice, QuickCheck... Otoh, many libs/packages are not adequately documented, there is joke that one needs PhD to use the language, lot of papers but with strong influence from academia and one has to encounter lot of terminology from category theory etc. although maybe wanting to 'just get the job done' - iow, Haskell could become more pragmatic. Moreover, to get better performance, laziness with its non-determinism might be a problem and/or profiling to discover leaks is not straightforward and/or code becomes more ugly. :-) 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. 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. What about ARM if we want to target MeeGo in the future? I also did not research what is the state of database support...Now we're thinking to use sqlite3 as back-end. Our project will be developed in free time and we want language which is easy to maintain because the project (with all desired features) might evolve into a big one during the period of several years. 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 read The Case for D article and saw Andrei's Google talk - it was funny to see Google people being like little children when questioned by him :-) 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 b) decent performance c) higher-level programming and suitable for general programming tasks d) good library support (database stuff, data structures, Qt GUI...) 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' ? (It would be nice if someone familiar with both languages can share...) Sincerely, Gour -- Gour | Hlapicina, Croatia | GPG key: CDBF17CA ----------------------------------------------------------------
signature.asc
Description: PGP signature