From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,5d4ade2fd8fd67c6 X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news3.google.com!feeder.news-service.com!weretis.net!feeder4.news.weretis.net!nuzba.szn.dk!news.jacob-sparre.dk!pnx.dk!jacob-sparre.dk!ada-dk.org!.POSTED!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Legit Warnings or not Date: Thu, 28 Jul 2011 18:48:30 -0500 Organization: Jacob Sparre Andersen Research & Innovation Message-ID: References: <531193e0-3305-4292-9ed8-0176226c1d00@x12g2000yql.googlegroups.com> <1rx6dwrxmc81p.eazb4fjqztox$.dlg@40tude.net> <1hi6gva8jhf7o.tq1yp29jn3qu.dlg@40tude.net> NNTP-Posting-Host: static-69-95-181-76.mad.choiceone.net X-Trace: munin.nbi.dk 1311896911 15946 69.95.181.76 (28 Jul 2011 23:48:31 GMT) X-Complaints-To: news@jacob-sparre.dk NNTP-Posting-Date: Thu, 28 Jul 2011 23:48:31 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 Xref: g2news2.google.com comp.lang.ada:21378 Date: 2011-07-28T18:48:30-05:00 List-Id: "Dmitry A. Kazakov" wrote in message news:go2nk5b4odfy.fpdttridydu6$.dlg@40tude.net... > On Wed, 27 Jul 2011 19:37:55 -0500, Randy Brukardt wrote: ... >> Experience with containers shows that no one would use such things unless >> they were part of the predefined libraries. > > What experience? It never was possible in Ada. No one uses predefined libraries of any kind in Ada unless they either wrote them themselves or they are part of the standard. Otherwise, people claim that Ada cannot do X even though it is simple to write a package to do X. That would absolutely be the result if we adopted your approach. Hardly anyone would use it, and Ada would be purceived as substantially less powerful. >> Moreover, you cannot create a *better* implementation than the one >> built-into the compiler > > See, this is where you approach leads. The compiler can do virtually *anything* better than the programmer. The only question is where to draw the line. >> (Keep in mind that hardly any compilers optimize finalization, >> even though it is possible and reasonably practical, mainly because of >> the >> difficulty of allowing arbitrary user code in such optimizations. The >> same >> would be true for your sorts of abstractions.) > > Maybe because compiler vendors are too overwhelmed by implementing more > and > more magical stuff? Not at all. This is true because to build a better approach in a library form, you have to know every possible usage of the library (otherwise, you have to support the most general case which by definition would have lots of overhead unnecessary in your specific circumstances). That is not practical in a language that supports separate compilation and it is not possible at all if you support shared libraries. When the compiler does it, it can share the overhead (for pools and finalization, just to take two examples) and in many cases eliminate it altogether, based on the form of the type declaration and other properties that cannot be available inside of a generic container. >> You seem to want the >> programmer to work harder (and apparently never want anyone to use >> dynamic >> array objects in Ada, since those have the sort of implicit-reference >> semantics that you claim to hate). > > No, I want that dynamic arrays were *arrays*. I want that Ada.Container > could be selected as an implementation of that array by mere renaming or > other kind of delegation: > > type A is array (Positive range <>) of S'Class; > private > package My_Arrays is > new Ada.Container.Indefinite_Vector (Positive, S'Class); > type A is new My_Array.Container_Type with null record; > > Is it too much? Yes, for Ada it is too much. Anything implemented now has to be compatible with the existing language and implementations. For the "Dmitry" language, feel free. After all, I'm probably tilting at windmills on this topic, and *the language already allows this approach*. You want a vastly different approach that would require massive language and implementation changes. (The above would be completely impossible with the Janus/Ada shared generic approach, for instance.) That's not happening any time soon. Randy.