From: Jonathan Bryant <jtbryant@valdosta.edu>
To: Paul Snively <psnively@mac.com>, caml-list@inria.fr
Subject: Re: [Caml-list] (Mostly) Functional Design?
Date: Mon, 18 Jul 2005 20:45:50 -0400 [thread overview]
Message-ID: <1121733950.25450.21.camel@starlight.valdosta.edu> (raw)
In-Reply-To: <02791497-749C-4944-BC41-B92454C4ABFD@mac.com>
:D
On Mon, 2005-07-18 at 15:16 -0700, Paul Snively wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
> On Jul 18, 2005, at 2:27 PM, skaller wrote:
>
> > On Mon, 2005-07-18 at 12:15 -0600, Robert Morelli wrote:
> >
> >
> >> With all due respect, claims of order of magnitude productivity
> >> gains, that OCaml is a far better language than Java, etc. are
> >> exactly the kind of advocacy that I think is counterproductive.
> >> Most programmers would regard such dramatic statements as
> >> implausible,
> >> if not preposterous.
> >>
> >
> > Yes they would .. until they tried it.
> >
> I'm going to allow myself to be guilty of exactly what I deplored
> about the original e-mail, namely offering personal opinions and
> anecdotes without citations or sources of any kind. :-)
>
> Although I had the great good fortune to learn Scheme as my third
> language after BASIC and Z-80 assembly language and to attend Indiana
> University and hobknob with the likes of Dan Friedman and Douglas
> Hofstadter, by far the majority of my for-pay programming work has
> been in 680x0 assembly language, C, C++, and Java. I've been doing
> this for about 25 years now. I supported Macintosh developers in the
> transition from Object Pascal to C++ in the MacApp 3.0 timeframe,
> roughly 1989-1991, provided background research for a presentation
> that Larry Tesler gave about Apple's approach to supporting dynamic
> linking of C++, and unofficially supported Macintosh Common Lisp,
> which at the time was owned by Apple. More recently, I spent
> essentially the entirety of the dot-com years working with Java,
> doing everything from what, as far as I know, was the first applet
> used in a movie promotional site (for one of Peter Jackson's earlier
> films, "The Frighteners") to replacing the back-end infrastructure
> for a large multimedia/social site (iFilm.com). I currently develop C+
> + for a combined Linux server/set-top box conditional access system
> for the cable/satellite industry.
>
> I found Objective Caml in a rather roundabout way: I first started
> paying attention to distributed programming and data replication
> issues while at Apple, as part of an effort to reduce the tendency
> that any large organization has to construct numerous "data silos,"
> the left hand not knowing what the right hand is doing. As this was
> about 1990, my investigations led me to Ken Birman's work on the
> Horus project at Cornell. While we never did anything with Horus, I
> continued to pay some attention to it, off and on, over the years.
> Fast forward about a decade, and I was thinking about distributed
> programming again, in the context of the game industry (I've had a
> couple of game programming jobs before). By this time, Birman's group
> had moved on to create the Ensemble system, which was written in
> Objective Caml.
>
> I'd never really cottoned to the ML family before, finding the syntax
> to be too unlike Pascal or C and not being able to really see the
> benefit over, say, Common Lisp or Scheme. O'Caml seemed a bit
> different: it was object-oriented as well as functional, was
> apparently reasonably fast, and the Ensemble team seemed to put great
> stock in being able to prove certain tricky bits of their system
> correct by virtue of having access to a formal semantics for the
> parts of O'Caml that they used. This made for an intriguing
> combination, with Ensemble as a compelling proof-by-demonstration.
> Fast forward again, because I'm still doing this on my own free time,
> but I have enough experience now to suggest that John is correct: the
> ML family in general, but O'Caml in particular, provides extreme
> productivity benefits over the currently popular languages. I find it
> to be on a par with Common Lisp in expressive power, and in fact I
> find the factors in Common Lisp and O'Caml's productivity enhancement
> to be roughly similar:
>
> * Both are functional, in the sense of supporting the use of higher-
> order functions
> * Both are imperative. Sometimes the judicious use of state is the
> most efficient, along a number of dimensions, approach to solving
> your problem
> * Both are object-oriented. Sometimes the judicious use of inclusion
> polymorphism, etc.
> * Both are geared towards programming-in-the-large: package/module
> systems, documentation-construction tools, sophisticated steppers/
> debuggers/inspectors, etc. make structuring systems easier
> * Both recognize that a software development ecosystem needs more
> than just a core language: reasonably comprehensive libraries are
> also important
>
> and here's what I think of as the kicker, the above being necessary,
> but not sufficient, properties of a productive development environment:
>
> * Both are interactive, encouraging a playful, exploratory, discovery-
> oriented programming style.
>
> I can't emphasize enough how crucial O'Caml's provision of a
> toplevel, bytecode compiler, and native compiler are. There is no
> substitute for being able to type in some code and see what happens
> without a whole edit/compile/link/test/crash/debug cycle. Of course,
> it's also important to be able to commit to an implementation and
> have it perform acceptably. Modern Lisps and O'Caml have these bases
> covered. You can get close-ish with a good Standard ML, but there's
> no one system that ties it all together like O'Caml does (you have
> to, e.g. mix and match something like Moscow ML with something like
> MLton to get both the interactivity and the final performance out of
> Standard ML). This is the key. The Lisps and O'Caml let me have a
> thought and be playing with that thought instantly; they don't yank
> me out of the thought while I'm waiting for my compiler/linker,
> either the first time, or whenever I make a mistake. I don't know how
> to put this any better: as a programmer, I get into a rather fluid
> state of analysis/synthesis with respect to my problem domain. Lisp
> and O'Caml sustain that fluid state; virtually all other language
> environments shatter it. And yes, the difference, in my experience,
> is roughly an order of magnitude in productivity. But because this
> productivity comes from sustaining this fluid analytical/synthetic
> process, it can't be described in any meaningful way; it can only be
> experienced, and this is a real burden to impose upon those who are
> quite rightly skeptical about such claims, which is why, apart from
> this e-mail, I don't generally bother trying; I limit my advocacy to
> saying "Why not take O'Caml for a spin some weekend? What have you
> got to lose?"
>
> > --
> > John Skaller <skaller at users dot sourceforge dot net>
> >
> >
>
> Best regards,
> Paul Snively
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (Darwin)
>
> iEYEARECAAYFAkLcKl4ACgkQO3fYpochAqLIywCfcvn6l/UrazIK3d7Wxm9RTt0T
> qmwAoNADqJErYWaC3m3oxUx0ZxOlWciX
> =rkZl
> -----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
--
*=========================*
|Jonathan Bryant |
|Valdosta State University|
|Information Technology |
|System Operations |
|-------------------------|
|jtbryant@valdosta.edu |
|x6358 |
*=========================*
next prev parent reply other threads:[~2005-07-19 0:44 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-14 18:00 Kyle Consalus
2005-07-18 7:59 ` [Caml-list] " Robert Morelli
2005-07-18 9:22 ` Alex Baretta
[not found] ` <42DB78D3.7010401@andrej.com>
2005-07-18 10:01 ` Alex Baretta
2005-07-18 18:15 ` Robert Morelli
2005-07-18 18:45 ` Alex Baretta
2005-07-18 18:56 ` padiolea
2005-07-18 19:19 ` Jon Harrop
2005-07-18 19:38 ` Jon Harrop
2005-07-18 21:27 ` skaller
2005-07-18 21:55 ` Alwyn Goodloe
2005-07-18 22:16 ` Paul Snively
2005-07-19 0:45 ` Jonathan Bryant [this message]
2005-07-18 21:37 ` skaller
2005-07-18 22:00 ` Kenneth Oksanen
2005-07-18 9:29 ` Mark Meyers
2005-07-18 9:56 ` Large scale and FP (was: Re: [Caml-list] (Mostly) Functional Design?) David MENTRE
2005-07-18 18:11 ` Large scale and FP Robert Morelli
2005-07-18 14:08 ` [Caml-list] (Mostly) Functional Design? james woodyatt
2005-07-18 16:37 ` Alwyn Goodloe
2005-07-18 14:21 ` alphablock
2005-07-18 15:26 ` Alex Baretta
2005-07-18 15:38 ` alphablock
2005-07-18 17:17 ` Doug Kirk
2005-07-18 18:14 ` Alex Baretta
2005-07-19 7:42 ` james woodyatt
2005-07-19 9:35 ` Robert Morelli
2005-07-19 16:53 ` james woodyatt
2005-07-19 17:13 ` Paul Snively
2005-07-19 23:58 ` Jon Harrop
2005-07-20 0:29 ` Paul Snively
2005-07-18 18:23 ` padiolea
2005-07-18 19:45 ` Gerd Stolpmann
2005-07-18 22:16 ` skaller
2005-07-19 0:48 ` Chris Campbell
2005-07-19 20:14 ` Some Clarifications Robert Morelli
2005-07-20 6:18 ` [Caml-list] " Ville-Pertti Keinonen
2005-07-24 0:04 ` Robert Morelli
2005-07-24 2:30 ` Paul Snively
2005-07-24 7:37 ` Alex Baretta
2005-07-24 8:08 ` Robert Morelli
2005-07-24 12:23 ` David Teller
2005-07-24 18:29 ` skaller
2005-07-24 18:51 ` Paul Snively
2005-07-24 12:42 ` Gerd Stolpmann
2005-07-25 7:23 ` Ville-Pertti Keinonen
2005-07-20 7:34 ` David MENTRE
2005-07-27 15:37 ` Robert Morelli
2005-07-27 20:33 ` skaller
2005-07-27 23:48 ` Paul Snively
2005-07-20 16:28 ` Damien Doligez
2005-07-24 14:51 ` Robert Morelli
2005-07-24 16:11 ` David MENTRE
2005-07-25 12:21 ` Damien Doligez
2005-07-25 15:47 ` Richard Jones
2005-07-22 5:18 ` [Caml-list] (Mostly) Functional Design? Marius Nita
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=1121733950.25450.21.camel@starlight.valdosta.edu \
--to=jtbryant@valdosta.edu \
--cc=caml-list@inria.fr \
--cc=psnively@mac.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