From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 766D6D45F for ; Fri, 4 Nov 2005 17:50:38 +0100 (CET) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id jA4Gocvx025458 for ; Fri, 4 Nov 2005 17:50:38 +0100 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 RAA04588 for ; Fri, 4 Nov 2005 17:50:37 +0100 (MET) Received: from mz2.forethought.net (mzpi4.forethought.net [216.241.36.13]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id jA4GoZ4c025454 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Fri, 4 Nov 2005 17:50:37 +0100 Received: from [216.241.35.41] (helo=[10.0.0.2]) by mz2.forethought.net with esmtp (Exim 4.51) id 1EY4lu-0003Ov-4M for caml-list@inria.fr; Fri, 04 Nov 2005 09:50:34 -0700 Message-ID: <436B9168.90707@gushee.net> Date: Fri, 04 Nov 2005 09:50:48 -0700 From: Matt Gushee User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051002) X-Accept-Language: en-us, en MIME-Version: 1.0 To: caml-list@inria.fr Subject: Re: [Caml-list] what is high-level References: <200511031726.59561.jon@ffconsultancy.com> <1131045878.4327.94.camel@localhost.localdomain> <1131071464.10871.44.camel@rosella> <200511041443.15429.fmonnier@linux-nantes.fr.eu.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 436B915E.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 436B915B.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 high-level:01 ocaml:01 sml:01 haskell:01 ocaml:01 sml:01 haskell:01 inherently:01 lambdas:01 hofs:01 ...:98 --a:98 ...:98 wrote:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 Brian Hurt wrote: > OK, here's the thing: Ocaml is a different paradigm than Python, Ruby, > and PHP. If you know Pascal, C, Fortran, etc., then learning PHP isn't > difficult, because it too is a procedural language. If you know C++, > Java, etc., then learning Python or Ruby isn't that hard, because > they're Object Oriented languages too. If you already know SML or > Haskell, learning Ocaml wouldn't be that hard. The problem is that most > people don't know SML or Haskell. I used to believe that too, and have told people more than once: "It's not inherently harder, it's just different from what you're used to." But my opinion has changed. Actually, I would argue, making effective use of functional techniques *is* harder because it requires more abstract thinking. Procedural programming is full of "Do A to X, then do B to Y ..."--a series of concrete operations performed on explicit entities. There are no lambdas, no partial evaluation, no HOFs ... and the fact that functions are always named and always defined in a specific, identifiable piece of code is limiting, but also can make it much easier to understand what a program is doing. And I would argue that functional programming is a way of "working smarter, not harder"--which of course requires knowing something. It may be that the same is true of good OO programming, but as far as I can tell few OO practitioners have a very deep understanding of the paradigm (note that my impressions come mostly from exposure to run-of-the-mill corporate Java programmers). -- Matt Gushee Englewood, CO, USA