caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: William Lovas <wlovas@stwing.upenn.edu>
To: Caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] poll - need for a good introductory OCaml book (LONG)
Date: Fri, 14 Mar 2003 06:20:37 -0500	[thread overview]
Message-ID: <20030314112037.GA1373@force.stwing.upenn.edu> (raw)
In-Reply-To: <20030314103626.84986.qmail@web11008.mail.yahoo.com>

On Fri, Mar 14, 2003 at 02:36:26AM -0800, Sergey Goldgaber wrote:
> Now, it's probably the case that once I know one functional
> language others will be easy to pick up.  But why should I have to
> learn two languages if I'm really only going to be focussing on
> one of them?  One of them will likely go to waste (along with the
> tons of other languages I've already learned).

What do you mean by "go to waste"?  If learning language B was the
key factor in your learning of language A, did language B really go
to waste?

I know you've heard this before, but let me restate it again in this
context: to really learn O'Caml, you have to learn the core ideas of
functional programming, and these core ideas are nearly identical in
all functional programming languages.

So if you happen to find the perfect beginner's Haskell tutorial out
there, don't fret -- have a look!  You'll have to learn a bit of new
syntax here and there, but when you come to understand O'Caml -- and
i mean *really* understand O'Caml -- it will be more than worth your
while.

[things get pretty meta after this point -- reader beware.]

Let me go out on a limb here and say that everytime we learn something
new, we do so by association with something we already know.  That's
why once you know one conventional programming language, it's easy to
pick up another.  That's also why so many programming language tutorials
look alike -- the author hopes to leverage your implicit knowledge of
the subject to teach you his particular instance.  The reason O'Caml
is hard to learn -- and the reason it has no tutorial similar to more
conventional programming languages' -- is that it's fundamentally
different in a non-trivial way: it strongly encourages the functional
style of programming.

Unfortunately for O'Caml's popularity, people who want to learn O'Caml
have to, in essence, re-learn programming, because the basic concepts
of functional programming do not map cleanly onto the basic concepts of
typical imperative programming.  So far, O'Caml has survived through a
vociferous userbase trying to convince people that the effort invested
is *worth it*, because functional programming is fundamentally *better*
(in some sense) than conventional imperative programming.  (Well, more
than just that *grin*, but it helps, i'm sure.)

Maybe i'm being too idealistic here, but i think a "perfect" tutorial
for O'Caml should focus on the ways it's different from other programming
languages, not the ways it's the same.  Perhaps such a tutorial (if it
doesn't exist already) could be prefaced by a number of "O'Caml for the
X programmer" hooks, for each conventional popular language X, just to
get programmers well-versed in X excited about O'Caml, at which point
they can segue into this "perfect" tutorial and learn what functional
programming is all about. :)

cheers,
William

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2003-03-14 11:20 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-14  8:12 Sergey Goldgaber
2003-03-14  9:51 ` Noel Welsh
2003-03-14 10:36   ` Sergey Goldgaber
2003-03-14 10:47     ` Noel Welsh
2003-03-14 11:13       ` Sergey Goldgaber
2003-03-14 11:47         ` Noel Welsh
2003-03-14 12:59         ` Geoff Wozniak
2003-03-14 11:20     ` William Lovas [this message]
2003-03-14 11:38       ` MikhailFedotov
2003-03-14 12:16       ` Sergey Goldgaber
2003-03-14 18:57         ` Richard W.M. Jones
2003-03-14 14:17       ` Guido Kollerie
2003-03-14 14:52 ` Fred Yankowski
2003-03-14 17:24 ` Brian Hurt
2003-03-16  0:44 isaac gouy
     [not found] <20030318093223.I30420@latour.inria.fr>
2003-03-18  9:47 ` Sergey Goldgaber

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=20030314112037.GA1373@force.stwing.upenn.edu \
    --to=wlovas@stwing.upenn.edu \
    --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).