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=0.2 required=5.0 tests=AWL 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 55507BBC4 for ; Thu, 5 Mar 2009 02:01:12 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjMGAKOyrknUnwckZmdsb2JhbACCHZJcDQsDBQkPBsJvhAgG X-IronPort-AV: E=Sophos;i="4.38,304,1233529200"; d="scan'208";a="23878166" Received: from relay.ptn-ipout02.plus.net ([212.159.7.36]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 05 Mar 2009 02:01:11 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An4FAKOyrknUnw6S/2dsb2JhbACCHdYJhAgG Received: from ptb-relay02.plus.net ([212.159.14.146]) by relay.ptn-ipout02.plus.net with ESMTP; 05 Mar 2009 01:01:11 +0000 Received: from [87.112.234.120] (helo=leper.local) by ptb-relay02.plus.net with esmtp (Exim) id 1Lf1xW-0008Rw-VR for caml-list@yquem.inria.fr; Thu, 05 Mar 2009 01:01:11 +0000 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] stl? Date: Thu, 5 Mar 2009 01:06:34 +0000 User-Agent: KMail/1.9.9 References: <91a2ba3e0903031340wcdc976cp52522eb35f7ccb73@mail.gmail.com> <200903042007.43232.jon@ffconsultancy.com> <8763ipypx1.fsf@aryx.cs.uiuc.edu> In-Reply-To: <8763ipypx1.fsf@aryx.cs.uiuc.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200903050106.34700.jon@ffconsultancy.com> X-Plusnet-Relay: 9732fe748abd52e8b9de5ed80e9a8e1e 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 On Wednesday 04 March 2009 20:49:14 Yoann Padioleau wrote: > 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? About 60% of all professional developers. > 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). Of course, most of those programs predate .NET. > >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 ? Does Java need a 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. Java's generics were by Wadler (Haskell) and Odersky (Scala) and .NET's generics were by Syme (F#). They all followed ML and not C++. > And Java has decided to not follow C++ on many things, they also > don't have overloading... Java has overloading but not overloaded operators. > >> 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? No. :-) > Do ML designers really know C++ and all its lastest features too > as in C++0x ? The designers of ML obviously didn't know any C++ because they designed ML before C++ had been invented. I'm not sure there is much for anyone to learn from C++98/C++03/C++0x. They are just flogging a dead horse. > > 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. Stroustrup may well have not known about functors when he was designing C++ but not being familiar with parametric polymorphism was silly. > > 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). Indeed. Which raises the question of how I should put an OCaml front end onto HLVM... > > I'm very happy to see C++ dying. > > Is it ? Yes. > >> > 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++). Stepanov, IIRC, gave a list of languages that he claimed were incapable and was wrong. I would not trust his opinion on such matters and consider C++ to be more of a get-rich-quick scam than a valuable constribution to programming. C++ is one of the few languages I would advise people to not bother learning. -- Dr Jon Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/?e