Search code examples
user-interfaceprogramming-languageshaskelld

Haskell or D for GUI desktop application?


I like haskell and many things connected with it as its type-engine, lot of packages at Hackage, nice community, active development etc.

Otoh, I had experience that some people gave up on our planned project considering Haskell too complicated (monads, lot of jargon from academia...) to grok (coming from C++ background), so it might be easier to bring some devs to our open-source project if we'd use D.

We want to develop general desktop application which needs to have database back-end (probably sqlite3), use C-lib for some extensive computational tasks (ephemeris calculation) and use Qt toolkit since we hope to provide 'light' version for MeeGo in the future.

Ability to document source-code easily as well as maintainance are impotant factors since our feature list is long and considering we'll develop in our free time, it may require long time to write everything what we'd like.

Python & other scripting languages are too slow for the project and I do not want go back to C++ after so many years, iow, prefer some more higher-level programming...Without going into too many details, I've excluded some other langauges as well (Go, Clojure, Java..) which brings list down to Haskell vs D.

One concern regarding D is that recetly QtD project was suspended, so I'm curious if in the short term one can even count D as adequate option.

Any pro/cons which one might be more suitable as general programming language covering Linux/MaC/Windows platforms?

Edit: Let me just add link to the post I sent to D list where I explain in more detail about our requirements.


Solution

  • I am wary of your comment:

    Python & other scripting languages are too slow for this project

    Haskell written in a straightforward style will probably be less than an order of magnitude faster than python. It is possible, by nitpicking over the details of a Haskell program, to make it as fast as a low-level C program, but it is tricky, time consuming, and requires a lot of knowledge about eg. GHC's code generation mechanism.

    You say you are already using C bindings, so what does speed matter? I am just worried that you are throwing out a lot of great tools based on an assumption that you haven't checked. It sounds like you want a tool with great library support more than anything else.

    What about Scala, Scheme, C#/VB.NET (on mono)? I can't imagine what bizarre criteria would cause you to restrict your options to Haskell and D.

    That said, Haskell is a great language. If it fits your project, go for it. Just open up your mind a bit so you don't choose Haskell for the hell of it, when there is some other tool out there that will allow you to do 10% of the work for the same results.