From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=AWL,DNS_FROM_RFC_POST autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id D039FBBC4 for ; Wed, 4 Mar 2009 21:49:32 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8BAAt4rkmArgVhkWdsb2JhbACCHYpPiBcBAQEBCQsKBxEEwxAHhAEG X-IronPort-AV: E=Sophos;i="4.38,302,1233529200"; d="scan'208";a="23871843" Received: from expredir6.cites.uiuc.edu ([128.174.5.97]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 04 Mar 2009 21:49:31 +0100 Received: from axyr (aryx.cs.uiuc.edu [128.174.236.106]) by expredir6.cites.uiuc.edu (8.14.2/8.14.2) with ESMTP id n24KnRui026357; Wed, 4 Mar 2009 14:49:27 -0600 (CST) To: Jon Harrop Cc: caml-list@yquem.inria.fr Subject: Re: [Caml-list] stl? References: <91a2ba3e0903031340wcdc976cp52522eb35f7ccb73@mail.gmail.com> <87eixdz12l.fsf@aryx.cs.uiuc.edu> <200903042007.43232.jon@ffconsultancy.com> From: Yoann Padioleau Date: Wed, 04 Mar 2009 14:49:14 -0600 In-Reply-To: <200903042007.43232.jon@ffconsultancy.com> (Jon Harrop's message of "Wed\, 4 Mar 2009 20\:07\:43 +0000") Message-ID: <8763ipypx1.fsf@aryx.cs.uiuc.edu> User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam: no; 0.00; stl:01 stl:01 stepanov:01 unboxing:01 emacs:01 x-windows:01 gtk:01 ocamlopt:01 ocamldebug:01 parametric:01 polymorphism:01 syntax:01 parametric:01 polymorphism:01 inference:01 Jon Harrop writes: > On Wednesday 04 March 2009 16:48:18 Yoann Padioleau wrote: >> I don't think so. I've read the last "history of C++" by Stroustrup >> in HOPL-III, who discusses quite a lot about the STL and Stepanov, >> and from what I remember unboxing was a big issue >> and having "generic" (which is slightly different from polymorphic) >> algorithms without introducing performance >> penalty that object-solution has with dynamic dispatch was also >> a big issue. Those people are not stupid. > > If they were not stupid, why were their innovations were dropped, e.g. Java, > C# and even VB.NET First, who cares about Java or C# or VB.NET ? Last time I checked, all the software I use on my machine (linux, mozilla, apache, mysql, emacs, X-windows, gtk, gnome, git, transmission, ...) are written in C and sometimes C++ (well except the beautiful ocamlopt and ocamldebug). >>From what I know, most Microsoft software are still written in C++ (Office, Visual Studio, the kernel, etc), and most Apple software too (with sometimes some objective C stuff). Do we have an example of a Java killer-app ? > provide parametric polymorphism from ML (aka generics) > instead of C++ templates? But haven't they added generics in Java because Java programmers wanted some of the capabilities of C++ templates ? They even use its syntax, and recent Java has added some ugly extensions with some star-stuff around it that I don't understand. So I think Java generics are closer to C++ templates than ML parametric polymorphism and its inference. And Java has decided to not follow C++ on many things, they also don't have overloading, they have a GC, etc. It's just not the same target. > >> They know about ML. > > IIRC Alex Stepanov claimed to know ML but then made a series of factually > incorrect statements about it, e.g. "phantom types do not exist". I know ML and I don't know those phantom types thing. And if they are "phantom", isn't he right indeed that they do not actually exist ? Do ML designers really know C++ and all its lastest features too as in C++0x ? > His > published work includes nothing on anything related to ML: > > http://www.stepanovpapers.com/ > > I do not believe they knew about ML. I think at least Stroustrup mentions in its "the design and evolution of C++" book some comparisons with ML. But probably at that time ML didn't have yet the functor stuff, just the parametric polymorphism. > >> C++ even has some advanced dependent types in some way (array). > > I would not call it "advanced". C++'s type system was accidentally Turing > complete in a very practically limited way. > > Haskell is similar in this respect: check Oleg's 600-line GHC-extended Haskell > equivalent of the OCaml code: > > `a > > That's what the "power" of Turing completeness buys you. :) Indeed. Many of those typing-guru tricks are as ugly and incomprensible than all the tricks people use with C++ expression templates. > >> I hate C++ with a passion, but the C++ designers are far from stupid. > > C++ is the pedagogical example of bad language design. That's what I was thinking before reading Stroustrup's HOPL-III paper where you can a chance to get inside the head of stroustrup and the rationale for many of his decisions. Stroustrup wanted a transition path from C to OO, and he wanted to make that possible without introducing any bit of performance penalty versus a hand crafted C program, because he knew the programmers he targeted were really stubborn on performance and then even a 1% overhead would not be accepted (you can call those programmers morons, but that's the kind of people he wanted to have an impact on). He succeeded. > I've learned about 20 > programming languages now and every one taught me something new. C++ taught > me what happens when you let idiots loose on programming language design and > get industry to hype the result regardless of its objective value. C++ taught me that if you want to be really successful, you need a migration path (or you need to wait for old programmers to die or that a very different kind of platform arrives so that legacy code does not matter any more, e.g. the web). > > I'm very happy to see C++ dying. Is it ? > >> > Scripting languages were not so hot at the time, short of Perl, but >> > Ruby would easily fit well into the STL idea, just like Lisp also did. >> >> No, because of the performance penalty of dispatch. Again, those C++ >> designer guys have strong requirments on performance. > > Their performance requirements were: destroy the performance of anything we > are not familiar with in order to preserve the performance of familiar > features > regardless of the relative merits of the different approaches. That > is really stupid and very counter productive, of course. Did Stroustrup did that ? I never saw Stroustrup criticizing other languages (but I've seend many Java people trashing C++). > >> Most of us can live with those overheads, but apparently they don't. > > No, we don't just live with the overheads. We reap the benefits of objectively > well-engineered features like fast exceptions and fast garbage collection > that C++ is incapable of. > > -- > Dr Jon Harrop, Flying Frog Consultancy Ltd. > http://www.ffconsultancy.com/?e > > _______________________________________________ > 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