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: 103376,703c4f68db81387d X-Google-Thread: 109fba,703c4f68db81387d X-Google-Attributes: gid103376,gid109fba,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!news.glorb.com!npeer.de.kpn-eurorings.net!news.netcologne.de!newsfeed-fusi.netcologne.de!151.189.20.20.MISMATCH!newsfeed.arcor.de!news.arcor.de!not-for-mail Date: Thu, 10 Mar 2005 13:04:43 +0100 From: Georg Bauhaus User-Agent: Debian Thunderbird 1.0 (X11/20050116) X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada,comp.lang.c++ Subject: Re: Teaching new tricks to an old dog (C++ -->Ada) References: <4229bad9$0$1019$afc38c87@news.optusnet.com.au> <1110032222.447846.167060@g14g2000cwa.googlegroups.com> <871xau9nlh.fsf@insalien.org> <3SjWd.103128$Vf.3969241@news000.worldonline.dk> <87r7iu85lf.fsf@insalien.org> <1110052142.832650@athnrd02> <1110284070.410136.205090@o13g2000cwo.googlegroups.com> <395uqaF5rhu2mU1@individual.net> <1110377260.350158.58730@z14g2000cwz.googlegroups.com> <422f0c08$1_1@baen1673807.greenlnk.net> <1110421853.766292@athnrd02> <4%PXd.358789$w62.304065@bgtnsc05-news.ops.worldnet.att.net> <1110429670.232319@athnrd02> <1110447646.716725@athnrd02> <4230212c$0$26538$9b4e6d93@newsread4.arcor-online.net> <1110451882.739920@athnrd02> In-Reply-To: <1110451882.739920@athnrd02> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: <423037a9$0$26552$9b4e6d93@newsread4.arcor-online.net> Organization: Arcor NNTP-Posting-Date: 10 Mar 2005 13:03:53 MET NNTP-Posting-Host: f146ca0d.newsread4.arcor-online.net X-Trace: DXC=NhHS73WY5hG5VQnf?UOZgE:ejgIfPPldDjW\KbG]kaMHGSi?jHD8GO@TUUbab]\[CLhP3YJKgE\jL:` Ioannis Vranos wrote: > Georg Bauhaus wrote: > >> The same way, using the random number generator and the >> STL-like containers. (See Ada 95 for the genertors, and >> AI-302 or Ada 2005 for the STL-like container library.) >> >> Functions are passed to a passive iterator like in >> >> ... >> procedure some_proc (e: int); >> ... >> iterate(some_vec, some_proc'access); > > > > Has Ada this level of abstraction and compile-time safety? (the same > code made more high-level): The starting point of the aforementioned AI-302/Ada 2005 container library is Charles, which is STL in Ada, including a rich set of algorithms. But I don't think that a comparison of language facilities is best served by concentrating on algorithms written in the language to overcome some of the languages shortcomings. That's cheating. Notice how you use e.g. distance to work around things that are more present in Ada than in C++ "proper". Notice also that template metaprogramming is a lot more present in C++ than in Ada. Now if the basis of C++ can and should be overcome as you demonstrate, why stick to the baiss of C++ when obviously all the value is in STL? Glad we have D at least :-) And yes, all sorts of compile time checking is done with Ada 2005 containers. Only many of the checks have to do with the Ada language "proper". Given there is little template metaprogramming in Ada, different things are checked at other levels. > // Use rand() to fill vector with values > // As you see the operation is entirely safe. > generate(vec.begin(), vec.end(), rand); As an Ada example package int_Vectors is new Ada.Containers.Vectors(C.int); -- supplies type Vector of int, i.e. "std::vector" vec: Vector; ... procedure rand (i: Cursor); -- stores a random value in the element at cursor i iterate(vec, rand'access); I think you recognize the idiom. But we are in a sense no longer talking about programming *languages*, this is about libraries, so I'd rather stop here.