From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 67152BCAE for ; Tue, 19 Jul 2005 02:44:52 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j6J0ipi6016332 for ; Tue, 19 Jul 2005 02:44:51 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id CAA06583 for ; Tue, 19 Jul 2005 02:44:51 +0200 (MET DST) Received: from xmail.valdosta.edu (VO44360.valdosta.edu [168.18.130.220]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j6J0io57015794 for ; Tue, 19 Jul 2005 02:44:50 +0200 Received: from starlight.valdosta.edu (starlight.valdosta.edu [168.18.148.146]) by xmail.valdosta.edu (8.13.4/8.13.4) with ESMTP id j6J0ikmN027657; Mon, 18 Jul 2005 20:44:46 -0400 (EDT) (envelope-from jtbryant@valdosta.edu) Subject: Re: [Caml-list] (Mostly) Functional Design? From: Jonathan Bryant Reply-To: jtbryant@valdosta.edu To: Paul Snively , caml-list@inria.fr In-Reply-To: <02791497-749C-4944-BC41-B92454C4ABFD@mac.com> References: <9cc3782b05071411004b27b6a4@mail.gmail.com> <42DB6161.4030507@cs.utah.edu> <42DB74DC.8030201@barettadeit.com> <42DBF1C6.7080005@cs.utah.edu> <1121722053.6774.93.camel@localhost.localdomain> <02791497-749C-4944-BC41-B92454C4ABFD@mac.com> Content-Type: text/plain Organization: Valdosta State University Information Technology (System Operations) Date: Mon, 18 Jul 2005 20:45:50 -0400 Message-Id: <1121733950.25450.21.camel@starlight.valdosta.edu> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-16) Content-Transfer-Encoding: 7bit X-PMX-Version: 5.0.2.153301, Antispam-Engine: 2.0.3.2, Antispam-Data: 2005.7.18.25 X-PerlMx-Spam: Gauge=IIIIIII, Probability=7%, Report='__CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __LINES_OF_YELLING 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __SANE_MSGID 0, __STOCK_CRUFT 0, __STOCK_PHRASE_6 0' X-Miltered: at concorde with ID 42DC4D03.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 42DC4D02.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 hash:01 morelli:01 ocaml:01 replacing:01 syntax:01 o'caml:01 semantics:01 o'caml:01 o'caml's:01 polymorphism:01 productive:01 encouraging:01 o'caml's:01 toplevel:01 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.2 X-Spam-Level: :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 > > > > > > 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 | *=========================*