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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,703c4f68db81387d X-Google-Thread: 109fba,703c4f68db81387d X-Google-Thread: 115aec,703c4f68db81387d X-Google-Thread: f43e6,703c4f68db81387d X-Google-Attributes: gid103376,gid109fba,gid115aec,gidf43e6,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!news.glorb.com!npeer.de.kpn-eurorings.net!newsfeed.arcor.de!news.arcor.de!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Teaching new tricks to an old dog (C++ -->Ada) Newsgroups: comp.lang.ada,comp.lang.c++,comp.realtime,comp.software-eng User-Agent: 40tude_Dialog/2.0.14.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <4229bad9$0$1019$afc38c87@news.optusnet.com.au> <1110052142.832650@athnrd02> <1110284070.410136.205090@o13g2000cwo.googlegroups.com> <395uqaF5rhu2mU1@individual.net> <1110329098.642196@athnrd02> <1110361741.551255@athnrd02> <422edaec$0$26554$9b4e6d93@newsread4.arcor-online.net> <1111464133.508323@athnrd02> <423fe9df$0$11476$9b4e6d93@newsread2.arcor-online.net> <1111521825.653841@athnrd02> <424094b0$0$11481$9b4e6d93@newsread2.arcor-online.net> <1111568404.687226@athnrd02> <1111572591.296439@athnrd02> <1111574207.72969@athnrd02> Date: Wed, 23 Mar 2005 12:25:08 +0100 Message-ID: NNTP-Posting-Date: 23 Mar 2005 12:25:05 MET NNTP-Posting-Host: 0ffa3213.newsread4.arcor-online.net X-Trace: DXC=oA6S^[1Y@ON4mA>;52^R7K:ejgIfPPldDjW\KbG]kaMHdbobRQ:W=WBM3eMe_?AHeLWRXZ37ga[7Jeh9Z=IkP^1DZ0NLZFc\ZDN X-Complaints-To: abuse@arcor.de Xref: g2news1.google.com comp.lang.ada:9790 comp.lang.c++:46794 comp.realtime:1611 comp.software-eng:5211 Date: 2005-03-23T12:25:05+01:00 List-Id: On Wed, 23 Mar 2005 12:36:46 +0200, Ioannis Vranos wrote: > Pascal Obry wrote: > >> For a domain problem where you have to create an area centered on (0,0) >> for example. What about a vector representing altitude, the sub-zero values >> being under the water. Just some examples, I bet you'll be able to think about >> lot more :) > > I think an associative container like map fits better to this. What do > you do in Ada if you want to associate product names with prices, in the > style > > productlist["something"]= 71.2; > > or a name with a number (string with string) in an address book > application for example? > > namelist["Obry Pascal"]="321-45563"; In general, we use ADT. It is also a recommended practice in C++, BTW. What would you do with namelist["Pascal Obry"]="+0 321/45563 "; or namelist["321-45563"]="Pascal Obry"; Note that both Ada and C++ support ADT. Ada's arrays is just an example of ADT. It is possible in C++ to implement an array as a set of classes though it will be much more verbose and suffer from numerous drawbacks. > Also may you tell me if that famous compile-time boundary checking > applies (can be used) to user-defined containers too? Of course it does. It is no different. The bounds can be specified either as discriminants or as generic parameters (the latter has C++ equivalent). As for the types with discriminants, they can be statically/dynamically constrained and this is propagated down to the implementation where the constraints are used. If corresponding methods are inlined then nothing prevents the compiler from checking statically known bounds at compile-time. I seems to me that you still missing the point. Ada's ability to check bounds is based on the idea of constrained subtypes. It is a fundamental concept which C++ lacks. (The only weak form of constraining C++ supports is templates specialization.) -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de