caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] OCaml vs Ada and/or GUI options
@ 2013-09-10 21:09 Gour
  2013-09-10 21:38 ` Paolo Donadeo
                   ` (2 more replies)
  0 siblings, 3 replies; 80+ messages in thread
From: Gour @ 2013-09-10 21:09 UTC (permalink / raw)
  To: caml-list

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

-- 
The spirit soul bewildered by the influence of false ego thinks 
himself the doer of activities that are in actuality carried out 
by the three modes of material nature.

http://www.atmarama.net | Hlapicina (Croatia) | GPG: 52B5C810



^ permalink raw reply	[flat|nested] 80+ messages in thread

end of thread, other threads:[~2013-11-17 20:12 UTC | newest]

Thread overview: 80+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-10 21:09 [Caml-list] OCaml vs Ada and/or GUI options 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 ` [Caml-list] " Francois Berenger
2013-09-11  5:07   ` 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

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).