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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id C97297EF29 for ; Fri, 18 Dec 2015 15:45:01 +0100 (CET) IronPort-PHdr: 9a23:etGXqBYaPZ+/8qMo0J57P1P/LSx+4OfEezUN459isYplN5qZpcWzbnLW6fgltlLVR4KTs6sC0LqI9fi4EUU7or+/81k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i760zceF13FOBZvIaytQ8iJ35rxj7j60qaQSjsLrQL1Wal1IhSyoFeZnegtqqwmFJwMzADUqGBDYeVcyDAgD1uSmxHh+pX4p8Y7oGx48sgs/M9YUKj8Y79wDfkBVGxnYFYO+dbzuBLfYQyK73oaGiVKw1sbSzTCuTH3WJvrsyiynO163WHOPcDwQao1Why+6L9sSVnwjyAecTU+9TeEpNZ3ifd0qRi7phF7i7XfYIyPOeA2KqzUd8kbSG4HRc1RWjZMGKuzaoIOC6wKOuMO/Nq1nEcHsRbrXVrkP+jo0DIdwyKv0A== Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gabriel.scherer@gmail.com; spf=Pass smtp.mailfrom=gabriel.scherer@gmail.com; spf=None smtp.helo=postmaster@mail-io0-f178.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of gabriel.scherer@gmail.com) identity=pra; client-ip=209.85.223.178; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of gabriel.scherer@gmail.com designates 209.85.223.178 as permitted sender) identity=mailfrom; client-ip=209.85.223.178; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-io0-f178.google.com) identity=helo; client-ip=209.85.223.178; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="postmaster@mail-io0-f178.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BGAABHG3RWlLLfVdFehAxtBq1NhT2MNhcBCYI8gzACgTAHPBABAQEBAQEBARABAQEBBwsLCR8wgi2CBwEBAQMBEhEdARsSBAcBAwELBgULDQ0dAgIiAREBBQEKEgYTEhCHdwEDCggOnWKBMT4xi0iBaoJ5iA4KGScDClaDUwEBAQcBAQEBAQEBARUBBQ6GSIR+hQiCNToTgTYFhhsMkFiFO4gPgVxJg3yTFIInEiSBFxEogi8jgV49NIURAQEB X-IPAS-Result: A0BGAABHG3RWlLLfVdFehAxtBq1NhT2MNhcBCYI8gzACgTAHPBABAQEBAQEBARABAQEBBwsLCR8wgi2CBwEBAQMBEhEdARsSBAcBAwELBgULDQ0dAgIiAREBBQEKEgYTEhCHdwEDCggOnWKBMT4xi0iBaoJ5iA4KGScDClaDUwEBAQcBAQEBAQEBARUBBQ6GSIR+hQiCNToTgTYFhhsMkFiFO4gPgVxJg3yTFIInEiSBFxEogi8jgV49NIURAQEB X-IronPort-AV: E=Sophos;i="5.20,446,1444687200"; d="scan'208";a="157618700" Received: from mail-io0-f178.google.com ([209.85.223.178]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 18 Dec 2015 15:44:59 +0100 Received: by mail-io0-f178.google.com with SMTP id 186so92787011iow.0 for ; Fri, 18 Dec 2015 06:44:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=NX1jdrRmoUIAfjEA14Tr7b2+xsuOcsSSG8HyKYbqYlM=; b=K/HFKElRf6Fqv2WV3H2MkGLR6GtYVCHHvCv7217Xdk3IbJH/93BgcLmjq8xT36Qh52 WxJXSob5JbWcCvnUR18qjj91Q+sYPonLk9HgmkdPvH8jQXpOi/isHFiTtPUOyqg53phN SEo1/FSUF92ZFJFDPDVxCpOO7O+jtWb9KeY1VDlLDfWXQ/t5pgaD21CMDU43yeIgpvP2 GA5LL5fFbsdBInvyRCcO1xyhtjLoTtpLPK6gNh37zghB6WNMwlRil1yN0cW33/kLOS8L 3Toq6W5k1hCCUp5Rcs5n7WX5u6mj24DPL/yAkifM9zxT6zAXYmSoai3k1X8s1CrRWHSk AXwA== X-Received: by 10.107.13.139 with SMTP id 133mr5326341ion.70.1450449898357; Fri, 18 Dec 2015 06:44:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.27.205 with HTTP; Fri, 18 Dec 2015 06:44:18 -0800 (PST) In-Reply-To: <20151218011315.GB7442@topoi.pooq.com> References: <20151218010834.GA7442@topoi.pooq.com> <20151218011315.GB7442@topoi.pooq.com> From: Gabriel Scherer Date: Fri, 18 Dec 2015 15:44:18 +0100 Message-ID: To: Hendrik Boom Cc: OCaml Mailing List Content-Type: multipart/alternative; boundary=001a1140a388f4d9e505272d2ece Subject: Re: [Caml-list] Is OCaml for experienced beginners? --001a1140a388f4d9e505272d2ece Content-Type: text/plain; charset=UTF-8 > Are beginners even welcome? Yes, beginners are warmly welcome. Feel free to keep pointing out changes that would help answer this question, this is helpful. Of course small-scope changes (fixing library X to support format Y) are always much easier to actuate than general recommendations (more libraries). > Is anyone in charge of the OCaml ecosystem? No, there is no one in charge of the OCaml ecosystem, or of a general "OCaml experience". This may explain some of the very real usability issues, but it is also rather unclear to me how this should be fixed. Would anyone volunteer for such a role (funded how?), and to do what? I agree with your conclusion that the OCaml ecosystem today is unforgiving, and that it is particularly harsh on non-accompanied beginners. How could this state of affairs be improved? I think that while a unified vision for the ecosystem may be necessary to fix some of the usability issues (one problem with unification is that you need people to agree on it), a large part of the problem is rather of the "death by thousand cuts" kind: small things that add up to create an overall unpleasant experience. This portion of the general problem is both too large for a single person to fix (no one person can guess all use-cases), it is easily amenable to crowd-fixing: reporting and/or fixing issues one at a time as you discover them. So please keep doing that! On Fri, Dec 18, 2015 at 2:13 AM, Hendrik Boom wrote: > On Thu, Dec 17, 2015 at 08:08:35PM -0500, Hendrik Boom wrote: > > And in case anyone wonders, I haven't given up. I will continue trying > to use OCaml becuse it seems to be the right kind of tool. Not everyone > will be so stubborn, > > -- hendrik. > > > # Is anyone in charge of the OCaml ecosystem? > > > > I am a beginner to OCaml. I'm not a beginner to the functional style of > programmins, nor to sophisticated type systems, nor to computing in > general. I started programming in 1963, was involved with Algol 68, Lisp, > and constructive type theory. I've managed to get code running in the days > when you had to enter it as numbers; the machine I used then wouldn't even > type letters other than u, v, w, x, y, z (its version of hexadecimal). In > those days what you needed to know was the instruction set and its > encoding. Everything followed from that. > > > > Believe be, I appreciate every advantage high-level languages have to > offer. > > > > With this background, you'd expect I'd take to OCaml like a duck to > water. > > > > Wrong. > > > > The language itself is actually usable. Once you figure out how the > syntax works and where to put the brackets. > > > > But the world has changed since source code was in hexadecimal. > > > > ## Libraries > > > > Nowdays, software rests on a huge inventory of libaries and tools. A > language, however elegant, isn't very usable for anything very practical > without its libraries and their documentation. It's not enough to know the > machine inside out. > > > > That's the hurdle I face whenever I program in OCaml -- figuring out > which libraries are usable, and which are actually documented. Not > documented in the sense that someone has written an API guide and a > tutorial, but documented in the sense that it is actually possible to find > them. > > > > There are often multiple packages to accomplish a single task. > > > > You don't know which one to use. You try the obvious one, have trouble, > ask about it, and then be told, No, that one is troubled, you should use > this other one instead. The one you can download from *this* site. So you > do, You download it. You figure out how to edit the Makefile so that it > generates the right package files. The options you need are actually > documented in the Makefile. > > > > I had to compile my own from the original Makefile, using the options > that are indeed documented inside it.XXX > > > > I've actually manged to write a trivial 3D videogame once I was pointed > to the usable OpenGL library. The one where the function names were > closely related to the ones in the OpenGL manual, of which I have a printed > copy. I didn't have to guess what functions to use. > > > > But then you discover that the one you were recommended to use is in the > opam library (the one you access by saying opam install ... with a default > configuration), and you decide to simplify things by using the Opam package > instead of including all the library's source code within your own > project. But when you do that, it doesn't work, because the Opam package > was was configured with optons that preclude essential functionality. (in > my case, the ability to load PNG files, not just JPEG). > > > > So what? another might say. Just tell opam to install with different > options. But that is another *huge* problem for a beginner. > > > > So I stick with embedding the library source code in my application. I > already understand how to edit a Makefile. > > > > ## Documentation > > > > And try to find documentation. I'm dealing with this problemm with gtk > at the moment. There's a lablgtk. There's a lablgtk2. Whats the > relationship between the two? And where's the documentation. There's > links to a tutorial all over the place, but they seem all to be to the same > web page, which isn't there. > > > > Opam has a way, I'm told, to install documentation along with the > package, but haven't been able to figure out how it works. Or maybe, just > maybe, the packages I've been trying it on don't have documentation. Who > knows? > > > > ## Are beginners even welcome? > > > > Is there anyone in charge of any of this? > > > > And what's the result? It's a lovely language, it deserves to be used, > but to get something done, I find myself programming in C++ instead, even > though the concpts of OCAML fit my style of programming ike a glove and fit > C++ like a rusty nail keeps my hand warm. Or spend days or months trying > things, asking questions, deciphering the answers, and so forth. > > > > I imagine if I were working in a shop where lots of people used OCaml, > all the ways of doing stuff would be local folklore. But for the isolated > beginner, there's a huge barrier to entry. > > > > It's a lovely language, but the pragmatics of its ecosystem are all > wrong. For a beginner. For someone with experience in the particular set > of tools and libraries he needs, it's great. > > > > And most of the problem is lack of organised, findable documentation. > > > > -- hendrik > > > > > > -- > > Caml-list mailing list. Subscription management and archives: > > https://sympa.inria.fr/sympa/arc/caml-list > > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > > Bug reports: http://caml.inria.fr/bin/caml-bugs > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > --001a1140a388f4d9e505272d2ece Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
> Are beginners even welcome?

Yes, beginners are= warmly welcome. Feel free to keep pointing out
changes that would help = answer this question, this is helpful. Of
course small-scope changes (fi= xing library X to support format Y) are
always much easier to actuate th= an general recommendations
(more libraries).

> Is anyone in ch= arge of the OCaml ecosystem?

No, there is no one in charge of the OC= aml ecosystem, or of a general
"OCaml experience". This may ex= plain some of the very real usability
issues, but it is also rather uncl= ear to me how this should be
fixed. Would anyone volunteer for such a ro= le (funded how?), and to do
what?

I agree with your conclusion th= at the OCaml ecosystem today is
unforgiving, and that it is particularly= harsh on non-accompanied
beginners. How could this state of affairs be = improved?

I think that while a unified vision for the ecosystem may = be necessary
to fix some of the usability issues (one problem with unifi= cation is
that you need people to agree on it), a large part of the prob= lem is
rather of the "death by thousand cuts" kind: small thin= gs that add up
to create an overall unpleasant experience. This portion = of the
general problem is both too large for a single person to fix (no = one
person can guess all use-cases), it is easily amenable to
crowd-f= ixing: reporting and/or fixing issues one at a time as you
discover them= . So please keep doing that!


On Fri, Dec 18, 2015 at 2:13 AM, Hendrik Boom <hendrik@topoi.pooq.com> wrote:
On Thu, Dec 17, 2015 at 08:08:35PM -0500, Hendrik Boom wrote:

And in case anyone wonders, I haven't given up.=C2=A0 I will continue t= rying
to use OCaml becuse it seems to be the right kind of tool.=C2=A0 Not everyo= ne
will be so stubborn,

-- hendrik.

> # Is anyone in charge of the OCaml ecosystem?
>
> I am a beginner to OCaml.=C2=A0 I'm not a beginner to the function= al style of programmins, nor to sophisticated type systems, nor to=C2=A0 co= mputing in general.=C2=A0 I started programming in 1963, was involved with = Algol 68, Lisp, and constructive type theory.=C2=A0 I've managed to get= code running in the days when you had to enter it as numbers; the machine = I=C2=A0 used then wouldn't even type letters other than u, v, w, x, y, = z (its version of hexadecimal).=C2=A0 In those days what you needed to know= was the instruction set and its encoding.=C2=A0 Everything followed from t= hat.
>
> Believe be, I appreciate every advantage high-level languages have to = offer.
>
> With this background, you'd expect I'd take to OCaml like a du= ck to water.
>
> Wrong.
>
> The language itself is actually usable.=C2=A0 Once you figure out how = the syntax works and where to put the brackets.
>
> But the world has changed since source code was in hexadecimal.
>
> ## Libraries
>
> Nowdays, software rests on a huge inventory of libaries and tools.=C2= =A0 A language, however elegant, isn't very usable for anything very pr= actical without its libraries and their documentation.=C2=A0 It's not e= nough to know the machine inside out.
>
> That's the hurdle I face whenever I program in OCaml -- figuring o= ut which libraries are usable, and which are actually documented.=C2=A0 Not= documented in the sense that someone has written an API guide and a tutori= al, but documented in the sense that it is actually possible to find them.<= br> >
> There are often multiple packages to accomplish a single task.
>
> You don't know which one to use.=C2=A0 You try the obvious one, ha= ve trouble, ask about it, and then be told, No, that one is troubled, you s= hould use this other one instead.=C2=A0 The one you can download from *this= * site.=C2=A0 So you do,=C2=A0 You download it.=C2=A0 You figure out how to= edit the Makefile so that it generates the right package files.=C2=A0 The = options you need are actually documented in the Makefile.
>
> I had to compile my own from the original Makefile, using the options = that are indeed documented inside it.XXX
>
> I've actually manged to write a trivial 3D videogame once I was po= inted to the usable OpenGL library.=C2=A0 The one where the function names = were closely related to the ones in the OpenGL manual, of which I have a pr= inted copy.=C2=A0 I didn't have to guess what functions to use.
>
> But then you discover that the one you were recommended to use is in t= he opam library (the one you access by saying opam install ... with a defau= lt configuration), and you decide to simplify things by using the Opam pack= age instead of including all the library's source code within your own = project.=C2=A0 But when you do that, it doesn't work, because the Opam = package was was configured with optons that preclude essential functionalit= y.=C2=A0 (in my case, the ability to load PNG files, not just JPEG).
>
> So what? another might say.=C2=A0 Just tell opam to install with diffe= rent options.=C2=A0 But that is another *huge* problem for a beginner.
>
> So I stick with embedding the library source code in my application.= =C2=A0 I already understand how to edit a Makefile.
>
> ## Documentation
>
> And try to find documentation.=C2=A0 I'm dealing with this problem= m with gtk at the moment.=C2=A0 There's a lablgtk.=C2=A0 There's a = lablgtk2.=C2=A0 Whats the relationship between the two?=C2=A0 And where'= ;s the documentation.=C2=A0 There's links to a tutorial all over the pl= ace, but they seem all to be to the same web page, which isn't there. >
> Opam has a way, I'm told, to install documentation along with the = package, but=C2=A0 haven't been able to figure out how it works.=C2=A0 = Or maybe, just maybe, the packages I've been trying it on don't hav= e documentation.=C2=A0 Who knows?
>
> ## Are beginners even=C2=A0 welcome?
>
> Is there anyone in charge of any of this?
>
> And what's the result?=C2=A0 It's a lovely language, it deserv= es to be used, but to get something done, I find myself programming in C++ = instead, even though the concpts of OCAML fit my style of programming ike a= glove and fit C++ like a rusty nail keeps my hand warm.=C2=A0 =C2=A0Or spe= nd days or months trying things, asking questions, deciphering the answers,= and so forth.
>
> I imagine if I were working in a shop where lots of people used OCaml,= all the ways of doing stuff would be local folklore.=C2=A0 But for the iso= lated beginner, there's a huge barrier to entry.
>
> It's a lovely language, but the pragmatics of its ecosystem are al= l wrong.=C2=A0 For a beginner.=C2=A0 For someone with experience in the par= ticular set of tools and libraries he needs, it's great.
>
> And most of the problem is lack of organised, findable documentation.<= br> >
> -- hendrik
>
>
> --
> Caml-list mailing list.=C2=A0 Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group= /ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs

--
Caml-list mailing list.=C2=A0 Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocam= l_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

--001a1140a388f4d9e505272d2ece--