From: "Luca de Alfaro" <luca@dealfaro.org>
To: peng.zang@gmail.com
Cc: caml-list@yquem.inria.fr, "circ ular" <circularfunc@gmail.com>
Subject: Re: [Caml-list] Ocaml, a practical functional language?
Date: Mon, 1 Sep 2008 10:48:23 -0700 [thread overview]
Message-ID: <28fa90930809011048l60d1fb7fmc31a11e3f69c3f92@mail.gmail.com> (raw)
In-Reply-To: <200809011237.00069.peng.zang@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4588 bytes --]
I also cast my vote for Ocaml.
Ocaml is the best compromise between pleasure of coding, speed of code, the
compiler working for you (strong type checking = most bugs found at compile
time). Memory management is much better than in Python.
I particularly favor Ocaml for largish projects. There, the type system
helps you gain confidence that the part of the system that you did not touch
in a change (typically, 99%) is unaffected by the change. This makes
debugging and development much easier and painless. I certainly would not
imagine any more developing in languages where any change may break far-away
things without warning.
And where else can you find a debugger that can execute code (or give you
the impression it does) backwards?
This is invaluable when trying to find things like where an exception is
thrown: you simply run the code until it exits throwing the exception, then
you back off a few steps until you find what is throwing the exception and
why. C programmers grappling with Segmentation Faults are very surprised to
see this style of debugging!
And even though Ocaml was born as a functional language, I am happy using it
even for code that has to access databases and interact with the web; see
http://trust.cse.ucsc.edu/WikiTrust .
The one drawback of Ocaml is that it is harder to find developers for it.
But this can be an advantage as well: since the barrier to entry is slightly
higher, a typical Ocaml programmer tends to be a better programmer than a
typical perl or C++ programmer, in my limited experience.
Luca
On Mon, Sep 1, 2008 at 9:36 AM, Peng Zang <peng.zang@gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
> On Saturday 30 August 2008 03:50:30 pm circ ular wrote:
> > I have tried a lot of languages but never really felt 100% satisfied.
> > I really like Python, it makes me very productive but Iwant something
> > a little more functionally oriented plus a static(optionally declared)
> > typesystem.
> >
> > I tried Haskell and I really like it but I find it hard to get used to
> > some things(like no destructive updates of datastructures outside the
> > IO Monad).
> > Ocaml seems a little bit more practical and it is aslo very fast(well
> > haskell is too).
> >
> > tried lisp at first but libraries and documentation just werent up to
> > standards there either.
> >
> > so far Pytho is the best Ive found (for me) but still isn't satisfied.
> >
> > could ocaml be what I look for?
>
> I think OCaml is what you are looking for. I went through a similar search
> for a comfortable language. My order was a bit different, lisp first, then
> python, then OCaml, then played a bit with Haskell but am sticking with
> OCaml.
>
> I find OCaml to be a great compromise. Haskell is cool, but it forces you
> to
> do things in certain ways and use a lot of abstraction which often seems
> overkill, making simple things much harder than they should be. I really
> like how easy things are in Python but large programs I find are impossible
> to maintain because it's not statically typed (it's also slow.. but that
> might have been ok). Lisp is really great with what you can do and many
> simple things are simple, but it doesn't have the scaffolding to let you
> scale up to big stuff (missing libs and stuff). OCaml has been great. It
> has its drawbacks and yucky corner cases like all languages. Overall
> though,
> it's been good and I've been able to find reasonable workarounds for things
> I
> don't like. I encourage you to give it a serious try.
>
> There's a great book on OCaml here:
>
> http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf
>
> The best emacs mode for ocaml is tuareg mode here:
>
> http://www-rocq.inria.fr/~acohen/tuareg/<http://www-rocq.inria.fr/%7Eacohen/tuareg/>
>
> I also write some additional on top of tuareg mode to be more like the
> SLIME
> mode for lisp but it's alpha (mostly because I wrote it for myself and
> packaging it and making robust is a lot of work that I'm too busy to
> handle)
> so I don't really recommend it yet.
>
> Peng
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.7 (GNU/Linux)
>
> iD8DBQFIvBosfIRcEFL/JewRAv4kAJ40DMoR1GZd1LagWMwR1umbEglLVwCfaMoP
> F9jaCP+f2iJvqU/ZxVs+Czs=
> =k9FZ
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
[-- Attachment #2: Type: text/html, Size: 5754 bytes --]
next prev parent reply other threads:[~2008-09-01 17:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-30 19:50 circ ular
2008-08-30 20:32 ` [Caml-list] " Richard Jones
2008-09-01 16:36 ` Peng Zang
2008-09-01 17:48 ` Luca de Alfaro [this message]
2008-09-01 18:34 ` Ulf Wiger (TN/EAB)
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=28fa90930809011048l60d1fb7fmc31a11e3f69c3f92@mail.gmail.com \
--to=luca@dealfaro.org \
--cc=caml-list@yquem.inria.fr \
--cc=circularfunc@gmail.com \
--cc=peng.zang@gmail.com \
/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