caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Arturo Borquez <aborquez@altavista.com>
To: Pierre.Weis@inria.fr
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] ocaml complexity
Date: 11 Jun 2001 13:33:49 -0700	[thread overview]
Message-ID: <20010611203349.9072.cpmta@c012.sfo.cp.net> (raw)

On Mon, 11 June 2001, Pierre Weis wrote:

>
> Objective Caml is one of a very few sucessful software provided by
> INRIA. Hence it is politically important for INRIA (read it as ``it is
> an important argument for INRIA to get funding), hence INRIA is not
> likely to abandon its support for Caml (also remember that more and
> more INRIA's software is written in Caml!).
> 
I must add to this that after three month evaluating and testing some server apps at my company, we have decided as part of a major improvement (that includes a new DB model) to port ALL our propietary server apps (mainly C/C++) to OCaml. The survey we did show that OCaml productivity is 5 to 10 times C/C++, runtime and memory perfomance good enough to put it in production. Also we have found that the core language / libraries supplied fullfill almost our needs. We envise OCaml as a part of the key to provide customers satisfaction (quality services and requirement responsiveness). The lack of 'market programmers' in OCaml certainly is an issue, so we started doing capacitation investments (3 month 45 min/day/programmer) that are marginal in the long term and payed in excess with the benefits of the language. As OCaml isn't already a 'popular' language we are confident that these guys will stay with us as they earn more money with less effort and enjoy programming in OCaml, !
they don't want back to boring C/C++.

My experience 'teaching' Ocaml to C/C++ programmers are:

1) Remark the difference between imperative vs FP. The analogy of a spreadsheet or a calculator (without parens -> imperative) (with parens -> FP) is very usefull, the programm is an expression to be evaluated not a sequence of instructions. It seems me that this is the main obstacle at the begining to switch from the 'sequence thinking' to the 'expression thinking'.

2) Use a blackboard and show a piece of code known by the audience at the left side in C/C++ and at the right side in OCaml. Take all the time to disscuss the differences. Even more is better if you show a gentle trasition from imperative to FP style for the example regarding not to obfuscate with too much abstraction. Do it trivialy and simple as possible.

3) Do not introduce explicit typing annotations or partial function application at the begining. Let beginers to practice and be confident with type inference. 

4) Stay in the core language and libraries for a while (don't hurry). Even some functions exercised were polymorphic by nature don't distract attention.

5) Introduce the typing system, modules and labels at a second stage. Explain polymorphism partial function applications currying, recursions. Put the accent in FP style.

6) Develop a full fledged known application step by step. Show how you can improve starting with the design and the befefits of coding OCaml. It is very important sychological issue to transmit confidence to programmers, be patient.

7) Continuity. Give some real apps to code to do in pairs programmers and give them continuos time to do it (do not disturb them with other stuffs and support them as they need).

8) As programmers get skilled revise old code, show the enhancements that could be made. Let them to discover and exercise the advanced features of the language. I am not a fun of OOP and I try to avoid OOP code in our apps, but it isn't a religion, certainly I have used LablGtk. 

OCaml is so good that even if it would freezed by INRIA we plan to use it as much we can. I am not allowed by my company to reveal some commercial details but I can inform that we serve about 1000 customers client workstations along the country, at a rate of 80000 transaction/day. I have no doubt upon the success of this proyect and surely it will open the door to other projects with OCaml.

Best Regards
Arturo Borquez (Chile).


Find the best deals on the web at AltaVista Shopping!
http://www.shopping.altavista.com
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


             reply	other threads:[~2001-06-11 20:33 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-06-11 20:33 Arturo Borquez [this message]
2001-06-11 21:17 ` Miles Egan
2001-06-12  7:19   ` wester
  -- strict thread matches above, loose matches on Subject: below --
2001-06-14 16:04 John R Harrison
2001-06-13 21:04 David Gurr
2001-06-13 23:13 ` leary
2001-06-13 23:19 ` Brian Rogoff
2001-06-15 13:28   ` Tore Lund
2001-06-15 14:03     ` Nils Goesche
2001-06-15 14:54       ` Xavier Leroy
2001-06-15 15:14         ` Jonathan Coupe
2001-06-15 15:23         ` Nils Goesche
2001-06-15 17:38         ` Sven LUTHER
2001-06-15 20:36           ` Remi VANICAT
2001-06-15 14:16     ` Doug Bagley
2001-06-28 12:54   ` Didier Remy
2001-06-28 18:31     ` Brian Rogoff
2001-06-07  8:58 leary
2001-06-07 18:29 ` Jonathan Coupe
2001-06-08  9:41   ` leary
2001-06-08 12:27     ` Jonathan Coupe
2001-06-08 20:22       ` Chris Hecker
2001-06-08 20:31         ` Miles Egan
2001-06-08 22:17           ` Jonathan Coupe
2001-06-08 22:18             ` Miles Egan
2001-06-11 14:05             ` Pierre Weis
2001-06-09 19:41           ` John Max Skaller
2001-06-08 22:59         ` David Fox
2001-06-09  0:43         ` leary
2001-06-09  1:09           ` Mark Wotton
2001-06-09  8:36           ` Markus Mottl
2001-06-09 20:58           ` John Max Skaller
2001-06-08 22:46       ` leary
2001-06-09  1:18         ` David Fox
2001-06-12 14:17           ` John Max Skaller
2001-06-13 15:21             ` Brian Rogoff
2001-06-13 20:32               ` leary
2001-06-13 22:58                 ` Johann Höchtl
2001-06-13 21:18               ` John Max Skaller
2001-06-09 22:32         ` Jonathan Coupe
2001-06-11  0:20           ` leary
2001-06-06 16:50 Miles Egan
2001-06-06 17:30 ` Chris Hecker
2001-06-06 18:25 ` Charles Martin
2001-06-06 19:27   ` Michael Hicks
2001-06-06 21:15   ` David Fox
2001-06-07 12:25   ` FabienFleutot
2001-06-08  0:27   ` Miles Egan
2001-06-06 19:36 ` William Chesters
2001-06-06 19:55   ` John Max Skaller
2001-06-06 20:06     ` William Chesters
2001-06-07 16:30       ` John Max Skaller
2001-06-08  0:32   ` Miles Egan
2001-06-08  0:56     ` David Fox
2001-06-07  7:35 ` wester
2001-06-07 17:27   ` John Max Skaller

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=20010611203349.9072.cpmta@c012.sfo.cp.net \
    --to=aborquez@altavista.com \
    --cc=Pierre.Weis@inria.fr \
    --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).