caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Francois Berenger <berenger@riken.jp>
To: caml-list@inria.fr
Subject: Re: [Caml-list] OCaml vs Ada and/or GUI options
Date: Wed, 11 Sep 2013 10:00:50 +0900	[thread overview]
Message-ID: <522FC0C2.8080600@riken.jp> (raw)
In-Reply-To: <20130910230928.2d51cd39@atmarama.noip.me>

You could also clearly decouple the "engine" of your software
from its GUI.

As was done in MLDonkey and plan9's sam test editor:
http://plan9.bell-labs.com/sys/doc/sam/sam.html

On 09/11/2013 06:09 AM, Gour wrote:
> Hello,
>
> TL;DR: Which type-safe language (I'm considering OCaml & Ada)
> would you recommend me for writing multi-platform open-source GUI app
> using some GUI (except GTK) bindings and why?
>
> Long version...
> Some years ago I was considering which language to use for
> writing multi-platform open-source GUI application. Considering it's
> meant to be done as hobby project, I wanted to avoid C(++), fiddling
> with pointers, memory allocation and other low-level stuff and hoped to
> use some more type-safe language to eliminate certain kind of bugs nad
> have more fun when programming.
>
> The idea of FP seemed interesting and I did start learning Haskell which
> was fun, but few potential contributors who showed up for the project,
> found Haskell's learning curve too steep and I admit that reading too
> many papers about category theory, monads everywhere was not too
> appealing to me as well.
>
> Contributors run away and I had to postpone the project.
>
> Later, when considering to revive idea of doing the project I did
> consider D, but found out it still too unstable and GTK bindings are
> practically the only choice.
>
> Some further exploration has brought me to Ada which seems to be very
> mature language, has performant compiler GNAT and even Qt bindings.
>
> Moreover, Ada's 2012 features with contracts & multi-core support look
> nice.
>
> For a short time I did considered OCaml, but although pleased with the
> language itself (although, based on my familiarity with both, I consider
> Haskell's syntax a bit cleaner), only GTK bindings were not satisfying.
> I know the bindings are mature, but GTK itself has poor support on
> Windows & Mac OS, small team of core devs, does not look good on
> non-Linux etc. and the recent steps with GTK3 & roadmap for GTK4 (where
> the  GTK devs say that the toolkit is meant for 'small apps only' does
> not look promising). On top of that, I only see projects moving from GTK
> to Qt...
>
> For a short time I explored some exotic languages like Nimrod
> (interesting, but small community, only GTK bindings), then Cobra & F# -
> despite getting encouraging input: "I'd recommend F# hands down. OCaml
> is still a 1990s language."
> (http://stackoverflow.com/questions/12437792/converting-ocaml-to-f-is-there-an-ocaml-ide-with-gui-debugging-like-visual-stu/13076028#13076028),
> somehow I do not like idea of embracing NET/Mono considering that even
> do not have Mono installed on my (Debian) machine.
>
> Go lang is not interested for me, do not like Java stuff, Rust is not
> finished... which led me to Ada (or Python+Cython+PyQt as last resort).
> Actually, I was thinking to write backend stuff in Ada and then possibly
> use PyQt as GUI front-end.
>
> However, in a recent time when visiting OCaml's web site I could see
> that lot of things are going on...compiler is getting improved with
> multi-core support, lablQt, wxOCaml bindings, OPAM, editor tools...
>
> It looks as there is some kind of OCaml revival or am I completely
> wrong?
>
> Whatever it is, now I'm again looking closely to OCaml and although I am
> aware that the two languages are meant for programming in quite
> different styles/paradigms, I'd be grateful if someone can shed some
> comment and/or enhance my observations:
>
> a) both Ada and OCaml seems to have mature & robust compiler generating
> native code and although language-shootout's benchmarks are in favour of
> Ada, I believe that in practice OCaml compiler can generate quick-enough
> code for 'general GUI app' which is not too behind C(++) code
>
> b) both Ada & OCaml languages seems to be suitable languages for good
> engineering practice writing type-safe code discovering lot of bugs
> duing the development/compile phase albeit using different paradigms
> (e.g. imperative vs FP)
>
> c) both languages seems to have decent tools support - I am mostly
> satisfied using Vim -  Ada has GNAT IDE and gprbuild system, but OCaml
> OPAM seems to improve situation a lot.
>
> d) Ada has mature GTK bindings and two projects with Qt bindings, but
> the more mature ones are not certain about Qt5 support. Otoh, OCaml's
> GTK bindings seems to be mature, but that does not influence me much
> considering general status of GTK's multi-platform support.
>
> I see that there is labltk project, some work on lablqt as well as
> wxOCcaml...Tk could be interesting 'cause I heard that it looks nice in
> newer releases and it is not so bloated.
>
> Lablqt initiative is inspiring, but does not, afaict, enjoy much support
> withing community, while wxOCaml project is tempting due to the reason
> that for long time (even while playing with Haskell) I was looking at wx
> bindings 'cause those are the only ones using native toolkits and
> looking good everywhere, although *today* I might be more please if
> OCamlPro would be behind lablqt for the simple reason of the state of Qt
> project vs wxWidgets.
>
> Another concern is whether wxOCaml is just a testing prototype or
> something one can count on?
>
> e) both Ada & OCaml are suited for open-source projects, but my
> impression is that OCaml's community is larger with much more projects
> and things going on while the Ada's open-source community is pretty
> limited and/or closed withing proprietary projects only.
>
> In #ocaml I was told that neither Ada nor OCaml are very suitable for
> writing GUI apps, but I still believe there is use-case for classical
> desktop apps and that it's not true that everything has to run within
> browser. :-)
>
> Can anyone provide some comments about my (imperfect) analysis and
> correct and misunderstanding I might have as well as providing some
> points which might be relevant to properly decide which
> language/ecosytem might be more suitable for my need of writing
> multi-platform open-source app using some GUI bindings?
>
> Besides that, I also have need for using Sqlite3 as well as 3rd party C
> lib providing some calculation functions. Any tool helping generating
> bindings for C libs?
>
>
> Sincerely,
> Gour
>


  parent reply	other threads:[~2013-09-11  1:01 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-10 21:09 Gour
2013-09-10 21:38 ` Paolo Donadeo
2013-09-11  5:24   ` Adrien Nader
2013-09-11  7:21     ` Kakadu
2013-09-11  8:21       ` [Caml-list] " Gour
2013-09-11  8:14     ` Gour
2013-09-11 18:17       ` Adrien Nader
2013-09-11 19:31         ` Gour
2013-09-11 19:53           ` Adrien Nader
2013-09-11 20:41             ` Gour
2013-09-11 21:01               ` Adrien Nader
2013-09-12  5:44                 ` Gour
2013-09-12  6:31                   ` Adrien Nader
2013-09-12  5:36             ` Gour
2013-09-12  6:48               ` Adrien Nader
2013-09-12  7:26                 ` Gour
2013-09-11 20:06         ` Jon Harrop
2013-09-11 20:48           ` Anthony Tavener
2013-09-11 21:04             ` Adrien Nader
2013-09-12 14:40             ` [Caml-list] " Jon Harrop
2013-09-12 14:51               ` Alain Frisch
2013-09-12 14:57                 ` Lukasz Stafiniak
2013-09-12 15:04                   ` Alain Frisch
2013-09-14  3:05                 ` Jon Harrop
2013-09-14  7:10                   ` Kakadu
2013-09-14 11:37                     ` Jon Harrop
2013-09-15  8:32                       ` Kakadu
2013-09-14 23:51                   ` Francois¡¡Charles Matthieu¡¡Berenger
2013-09-11 22:17           ` [Caml-list] " Richard W.M. Jones
2013-09-12 13:49             ` [Caml-list] " Jon Harrop
2013-09-12 13:58               ` Richard W.M. Jones
2013-09-11  9:49     ` David MENTRE
2013-09-11 10:14       ` Kakadu
2013-09-11 15:21         ` David MENTRE
2013-09-12  1:31           ` Francois Berenger
2013-09-11 18:43         ` Adrien Nader
2013-09-11 18:36       ` Adrien Nader
2013-09-11 19:34         ` [Caml-list] " Gour
2013-09-11 19:45           ` Adrien Nader
2013-09-11 22:06             ` [Caml-list] " Jacques Garrigue
2013-09-12  3:25         ` Ivan Gotovchits
2013-09-12  6:41         ` Adrien Nader
2013-09-12 11:49           ` Gerd Stolpmann
2013-09-11 19:17       ` [Caml-list] " Gour
2013-09-11 22:03       ` [Caml-list] " Jacques Garrigue
2013-09-12  8:16         ` Alain Frisch
2013-09-11 12:26     ` Jon Harrop
2013-09-11 18:48       ` Adrien Nader
2013-09-11 13:22     ` Paolo Donadeo
2013-09-11 13:33       ` Kakadu
2013-09-11 14:09         ` Paolo Donadeo
2013-09-11 19:36           ` Jon Harrop
2013-09-11 19:45             ` [Caml-list] " Gour
2013-09-12 12:55               ` [Caml-list] " Jon Harrop
2013-09-11 18:57       ` Adrien Nader
2013-09-11 19:01         ` Rudi Grinberg
2013-09-11 19:15           ` Adrien Nader
2013-09-11  8:10   ` [Caml-list] " Gour
2013-09-11  1:00 ` Francois Berenger [this message]
2013-09-11  5:07   ` [Caml-list] " rixed
2013-09-11  8:26     ` [Caml-list] " Gour
2013-09-11  9:23       ` rixed
2013-09-11 12:54         ` Leo White
2013-09-11 12:59           ` Gour
2013-09-11 19:06             ` Adrien Nader
2013-09-11  8:16   ` Gour
2013-09-11  9:00     ` Francois Berenger
2013-09-11 19:19       ` Gour
2013-11-17 20:12       ` [Caml-list] " Gour
2013-09-11  7:38 ` Gabriel Kerneis
2013-09-11  8:20   ` [Caml-list] " Gour
2013-09-11 11:42     ` Gerd Stolpmann
2013-09-18 11:42       ` [Caml-list] " Gour
2013-09-18 12:24         ` Gerd Stolpmann
2013-09-20  4:47           ` Gour
2013-09-19  8:11         ` Alain Frisch
2013-09-19  8:30           ` Daniel Bünzli
2013-09-19  8:47             ` Andreas Rossberg
2013-09-20  4:51           ` Gour
2013-09-20 12:04             ` Gerd Stolpmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=522FC0C2.8080600@riken.jp \
    --to=berenger@riken.jp \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).