Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 632
gour Avatar asked Oct 05 '10 11:10

gour


1 Answers

Let's tease out some requirements here, and I'll try to make the Haskell case. Perhaps the D fans or others could try to do the same.

  • Desktop application

So Haskell's certainly used for desktop and server-side applications. The tools are available for all modern desktops, just using the Haskell Platform.

  • Database backend

Well known database backends for Haskell, that have significant use, are HDBC-* and sqlite, though there are many others.

Other commercial groups that have used database-driven apps in Haskell include: Galois (our sqlite library is linked above); Deutsche Bank (see the talk); Hustler Turf Equipment (home of HDBC).

  • C libraries (hence FFI bindings)

Haskell has a high level, widely used FFI, that is a standard part of Haskell 2010.

  • Use of Qt

qtHaskell was developed for a commercial application, and is used by e.g. JoyRide Labs for their commercial games.

  • Source code documentation

Haddock is widely used. Other analysis tools like: graphmod and sourcegraph also help with requirements documentation.

  • Maintainance

Several commercial users have cited purity and strong types as easing the maintainance burden for applications over long project cycles, as they make it easier to make local, safe changes to code. Purity reduces the complexity between components, and types ensure refactorings are sound.

  • Other facts

Size of the community -- the open source Haskell community is thriving now, on par with other large FP languages (Erlang, Scala). The commercial users are funding direct development of GHC, ensuring its long term availability, and there are many experience reports to draw from. Hackage and Cabal help mitigate risk by making it easy to pull in new open source work -- saving you time.

like image 162
Don Stewart Avatar answered Oct 29 '22 07:10

Don Stewart