caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alex Baretta <alex@barettadeit.com>
To: Robert Morelli <morelli@cs.utah.edu>
Cc: Ocaml <caml-list@inria.fr>
Subject: Re: [Caml-list] (Mostly) Functional Design?
Date: Mon, 18 Jul 2005 20:45:45 +0200	[thread overview]
Message-ID: <42DBF8D9.7060004@barettadeit.com> (raw)
In-Reply-To: <42DBF1C6.7080005@cs.utah.edu>

Robert Morelli wrote:
> Alex Baretta wrote:
>> Your points are very simply wrong. Functional design addresses the same
>> large-scale design problems that OO tries to address, and, in fact,
>> given cognitive compatibility with the mind of the developere, it offers
>> a productivity at least an order of magnitude greater on very large
>> scale projects (over 100klocs) where the dominant cost factor is code
>> maintenance. Ocaml's functional paradigm greatly stresses a priori
> 
> 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.

As of today, I am unable to compute any software metric over my repo,
including the banal and meaningless klocs. This is due to the need to
develop faster than the tree maintainer--that is, I--can verify
changesets and commit them to a repo. Currently, my collegues are
working each on his own tree and producing tarballs as backups, which
pile up waiting for me to merge them.

Since I cannot give you numbers, let me give you ideas about what we
did: we have written a compiler for a functional web oriented
language--the Xcaml--which is to Ocaml what JSP is to Java; we have
written a virtual machine for this language implementing the execution
model for an Xcaml application; since Xcaml needs a very strong level of
intgration with relational DBs, we developed the Xcaml DataBase
Specification language and toolchain, which compiles OO-ER models down
to logical, physical and virtual DB schemas--thus supporting design
refinement at the intermediate level--and compiles the whole thing to
SQL-DDL and to Ocaml database access libraries; the Embedded SQL is a
syntax extension to Ocaml which compiles SQL queries to calls to the
data access libraries generated by the XDBS, thus delegating static
typechecking of SQL queries to the Ocaml type system. Collaterally we
have developed Machiavelli: a event-driven asynchronous servlet
framework, working behind the scenes of the Xcaml application to perform
long running computations that would lock the HTTP user agent for too
long. On top of all this we are developing FreerP--a full fledged ERP
application. We are almost there: FreerP currently manages sales, stock
inventory, logistics, accounting. Besides all this we have developed
Schopenhauer, a realtime soft PLC/CNC based on Ocaml, which we use to
control industrial equipment such as glass cutting machines or metal
sheet cutting machines. Schopenhauer has a seemless integration with the
Xcaml system, so that user interfaces can be based on the web, and can
easily take advantage of the powerful database API. Schopenhauer is
actually our most successful technology commercially, at least this year.

Now, how many man years have gone into this: about 5. I can guarantee
that with Java this would not be feasible.

>> correctness via static type-checking, which we take advantage of to
>> achieve static verification of the Embedded SQL queries in our FreerP
>> suite of business applications. It is only thanks to the rich type
>> system in Ocaml that we are able to maintain coherence between a
>> database schema counting hundreds of relations and hundreds of Xcaml
>> server pages containing at least as many embedded SQL queries. Java
>> simply would not scale.
> 
> The use of type checking is a point where the FP community
> has not reached consensus,  as there are widely divergent views from
> the Scheme community and the ML and Haskell communities.  Even between

I am not advocating FP languages. I am advocating type-checking over
everything else and Ocaml as the most productive language I have ever seen.

> I am not familiar with your FreerP technology and its use of Xcaml,
> but I will not dispute your claim of great success.  It just seems
> likely to me that you've taken advantage of uncommon insight to
> cast your problems into a new sort of niche application.  Relational
> algebra is after all not so far from category theory.  Perhaps you've
> found an approach that could be used in many more applications to
> business.  If so,  I wish you success.

Thank you. I wish ourselves as much. I might have had some clever ideas,
but mainly I have taken advantage of what the type system gives me:
deferred binding of recursive calls, extensional polymorphism and
recursive types, a tiny bit of OO (I miss Javascripts delegation so
much!), a couple of recursive modules, iterators, high level
datastructures such as sets, maps and real-time deques. We have also
used an old-time Obj.magic hack to achieve polymorphic recursion in one
function which simply could not be done without it. But I have a
correctness proof ;)

Alex


-- 
*********************************************************************
http://www.barettadeit.com/
Baretta DE&IT
A division of Baretta SRL

tel. +39 02 370 111 55
fax. +39 02 370 111 54

Our technology:

The Application System/Xcaml (AS/Xcaml)
<http://www.asxcaml.org/>

The FreerP Project
<http://www.freerp.org/>


  reply	other threads:[~2005-07-18 18:47 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 [this message]
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
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=42DBF8D9.7060004@barettadeit.com \
    --to=alex@barettadeit.com \
    --cc=caml-list@inria.fr \
    --cc=morelli@cs.utah.edu \
    /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).