From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id ACA377EE80 for ; Sat, 23 Mar 2013 00:47:26 +0100 (CET) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of murthy.chet@gmail.com) identity=pra; client-ip=209.85.223.176; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="murthy.chet@gmail.com"; x-sender="murthy.chet@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of murthy.chet@gmail.com designates 209.85.223.176 as permitted sender) identity=mailfrom; client-ip=209.85.223.176; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="murthy.chet@gmail.com"; x-sender="murthy.chet@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ie0-f176.google.com) identity=helo; client-ip=209.85.223.176; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="murthy.chet@gmail.com"; x-sender="postmaster@mail-ie0-f176.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvoEAG3sTFHRVd+wiWdsb2JhbABDimC7A4FpFg4BAQEKCRQSKoIkAQEEAToGARsdAQMMBgUhFRAPARMRAQUBHC0Fh2gBAwkGpAyMMoJ7hCQKGScNWYh8AQUMjwYHFoMqA4h3iieSaD+ETQ X-IPAS-Result: AvoEAG3sTFHRVd+wiWdsb2JhbABDimC7A4FpFg4BAQEKCRQSKoIkAQEEAToGARsdAQMMBgUhFRAPARMRAQUBHC0Fh2gBAwkGpAyMMoJ7hCQKGScNWYh8AQUMjwYHFoMqA4h3iieSaD+ETQ X-IronPort-AV: E=Sophos;i="4.84,895,1355094000"; d="scan'208";a="8915786" Received: from mail-ie0-f176.google.com ([209.85.223.176]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 23 Mar 2013 00:47:26 +0100 Received: by mail-ie0-f176.google.com with SMTP id x14so5512795ief.21 for ; Fri, 22 Mar 2013 16:47:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:user-agent :in-reply-to:references:mime-version:content-transfer-encoding :content-type; bh=QMJ9q+gYOpznUQLjp9F00vGiH5zRE757wTQnesKDFFQ=; b=X1xMvNOuvVJlIKt9lO6lW0vnKjAFfSl+16z+lRU3E46eGeQefKSNiL2GytqRpmpF4e chOKccaam8qQgf++lsEyVP5dkOsoFQ9z2L+lxNRFAuhmLK5wDST6PebaElrcc44++p80 HJeC4ASKXSJvFLpFlQTEXAXpoK6Oi9ZCF8ggRxXw7wzn1loaoKLRLaEw5+bM5yXwjser kGtgof9bO5gnVeYMMt1Zt3Y+qqmZeKz7JWCZ1KtadoLMOvXgAuU54OAAz5DkGl0OYFLd vqRUB7w1rme1Q9oluniFC+S7g6pplwGTRdqeC5tLg9VeNqeIAyj+sDhk9bSj7gxVkLUl lKcg== X-Received: by 10.43.117.136 with SMTP id fm8mr2165850icc.33.1363996044744; Fri, 22 Mar 2013 16:47:24 -0700 (PDT) Received: from groupon.localnet (ip-64-134-239-95.public.wayport.net. [64.134.239.95]) by mx.google.com with ESMTPS id i10sm9917610igz.9.2013.03.22.16.47.22 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 22 Mar 2013 16:47:23 -0700 (PDT) From: Chet Murthy To: caml-list@inria.fr Cc: Daniel =?ISO-8859-1?Q?B=FCnzli?= , jon@ffconsultancy.com Date: Fri, 22 Mar 2013 16:47:04 -0700 Message-ID: <54562612.dHlMTtysyv@groupon> User-Agent: KMail/4.8.5 (Linux/3.2.0-38-generic-pae; KDE/4.8.5; i686; ; ) In-Reply-To: <29025F595E9343479E21A54CC92048AA@erratique.ch> References: <01c401ce274a$785ff1e0$691fd5a0$@ffconsultancy.com> <29025F595E9343479E21A54CC92048AA@erratique.ch> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Subject: Re: [Caml-list] Re: Haskell vs OCaml > > Why do "buggy drivers" affect 80% of our users when we write our software > > in 100% OCaml and 0% of our customers when we write our software in 100% > > F#? [short answer: because each time that a paying customer is affected by a buggy driver, the vendor of the CLR or JVM spends -serious- money finding and shooting that bug. They spend -serious- money building internal tooling to help them do this. It's expensive and time-consuming, and furthermore consumes -extremely-skilled- people. No OSS language runtime can afford that.] Maybe I can help here. I've spent a lot of my life with ocaml, and even more with the JVM and Java (feh). The JVM's not so different from the CLR in the sense that it gets used with a -ton- of C drivers. Especially in the early days, lots and lots of C drivers. Here's the thing, though: Java "comes with" a decent number of C libraries for things like graphics and such. And -vendors- write database drivers (like the old ORCL OCI JDBC drivers). When those drivers segfault (or trample on JVM memory), believe it, it's a nightmare for JVM maintainers and support people. Of course, the vendors themsleves work -very- hard to find and remove bugs in these drivers, but some always remain. To the point where, one common diagnosis step is to try to eliminate that C driver and get repro. It is common that JVM developers will also develop in-house support tools that can analyze core-dumps at a -ridiculously- detailed level, in order to figure out what got trampled, and try to work out why. This is hard, expensive, and will never happen for a language runtime maintained by an open-source community. So .... why should you use ocaml instead of a CLR-based language (like F#)? Well, as Daniel Bunzli said, maybe you shouldn't. But I would note that your experience would be no different if you were using Python, Perl, Ruby, or PHP. All those language-runtimes lack support of the sort you get from the JVM or CLR. And there are reasons why people prefer these languages/runtimes over the commercial ones. --chet--