Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: [Caml-list] poll - need for a good introductory OCaml book (LONG)
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: William Lovas <wlovas@s...>
Subject: Re: [Caml-list] poll - need for a good introductory OCaml book (LONG)
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