comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: memory management in Ada: tedious without GC?
Date: Mon, 19 May 2008 10:36:04 +0200
Date: 2008-05-19T10:36:04+02:00	[thread overview]
Message-ID: <xdkpmk9xj1eo$.upqntkymvudp$.dlg@40tude.net> (raw)
In-Reply-To: a6206763-cf9c-421a-8c58-b7352773636b@a1g2000hsb.googlegroups.com

On Sun, 18 May 2008 13:51:44 -0700 (PDT), Maciej Sobczak wrote:

> On 18 Maj, 16:59, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
> 
>>>> 1. Its body cannot be allocated on the stack.
>>
>>> What is "body"?
>>
>> Storage used to keep the array elements.
> 
> From when should we care where it is?

We don't want to care, it means to have the least strict requirements on
the storage. It should be possible to allocate it in the task local
storage, or in the storage having certain allocation policy. One
implementation constraint which satisfies these requirements is that the
object is contiguous. Maybe, one could relax it, but I don't see a good way
to it.

>>>> 2. It is not a proper type (requires parametrization)
>>
>>> Is it wrong?
>>
>> Yes. It has no values and no operations.
> 
> Can I say that arrays in Ada also have no values and no operations
> until they are parapeterized with element and index type (and
> constrained)?

Right, these are points 4-5 of my earlier post.

>>>> 3. Optimization. I have doubts that small vectors could be passed by value,
>>>> loops over them unrolled, values cached in registers, that static bounds
>>>> checking could be enforced at compile time and skipped at run-time etc.
>>
>>> All of these can be done.
>>
>> Is there a C++ compiler that does this?
> 
> You had doubts whether it *could* be done, not whether it *is*
> done. :-) There is nothing fundamental that would prevent it.
> Note that vector is a *standard* feature - so the compiler knows what
> it does and how.

Ah, that is the point. The compiler shall know if something is an array. In
Ada, which "has arrays" the language tells the compiler - here is one. In
C++, which "does not have arrays", it is the name of the template that
should convey the idea. What happens if I modify or rename the template?

This is an argument for having, not arrays, but their interfaces built-in
in the language. Both Ada and C++ are wrong here. I don't understand why
C++ advocates feel offended when somebody tells that C++ does not have
arrays. They should be proud of this. C++ has better means for array
interfaces than Ada has. These are not templates or vector<>, but
operator[].

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2008-05-19  8:36 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-16 17:44 memory management in Ada: tedious without GC? jhc0033
2008-05-16 18:56 ` Ludovic Brenta
2008-05-16 20:42 ` Maciej Sobczak
2008-05-16 21:45   ` Ivan Levashew
2008-05-16 22:59   ` Peter C. Chapin
2008-05-17  5:24     ` jhc0033
2008-05-17  7:50       ` Ivan Levashew
2008-05-16 23:05   ` Randy Brukardt
2008-05-19  3:50   ` Matthew Heaney
2008-05-19  7:55     ` Dmitry A. Kazakov
2008-05-19 13:18       ` Georg Bauhaus
2008-05-19 14:16         ` Dmitry A. Kazakov
2008-05-23 23:15       ` Robert A Duff
2008-05-24  0:45         ` Randy Brukardt
2008-05-24  8:25         ` Dmitry A. Kazakov
2008-05-24 16:14           ` Robert A Duff
2008-05-24 19:04             ` Dmitry A. Kazakov
2008-05-24 20:52               ` Robert A Duff
2008-05-25  8:12                 ` Dmitry A. Kazakov
2008-05-25 11:28                   ` Maciej Sobczak
2008-05-25 12:35                   ` Robert A Duff
2008-05-26  8:16                     ` Dmitry A. Kazakov
2008-05-24 19:39             ` Georg Bauhaus
2008-05-24 20:45               ` Robert A Duff
2008-05-19  8:35     ` Maciej Sobczak
2008-05-19 15:11       ` Matthew Heaney
2008-05-19 21:13         ` Maciej Sobczak
2008-05-23 23:03         ` Robert A Duff
2008-05-24  0:12           ` Adam Beneschan
2008-05-16 22:45 ` anon
2008-05-17  7:34 ` Pascal Obry
2008-05-17 15:11   ` Bob Klungle
2008-05-17 15:27     ` Pascal Obry
2008-05-17 16:18       ` Georg Bauhaus
2008-05-20  8:04         ` Ole-Hjalmar Kristensen
2008-05-20  8:01       ` Ole-Hjalmar Kristensen
2008-05-20 10:03         ` Martin Krischik
2008-05-17 17:23     ` Martin Krischik
2008-05-17 16:51   ` Maciej Sobczak
2008-05-17 17:45     ` Pascal Obry
2008-05-17 22:28       ` Samuel Tardieu
2008-05-18  7:03         ` Martin Krischik
2008-05-18  8:50           ` jhc0033
2008-05-18  9:31             ` Dmitry A. Kazakov
2008-05-18 14:10               ` Maciej Sobczak
2008-05-18 14:59                 ` Dmitry A. Kazakov
2008-05-18 20:51                   ` Maciej Sobczak
2008-05-19  8:36                     ` Dmitry A. Kazakov [this message]
2008-05-18 15:03             ` Martin Krischik
2008-05-18 18:27               ` jhc0033
2008-05-19  4:12                 ` Matthew Heaney
2008-05-19  8:39                   ` Maciej Sobczak
2008-05-19 15:37                     ` Matthew Heaney
2008-05-19 21:21                       ` Maciej Sobczak
2008-05-19 23:02                         ` Matthew Heaney
2008-05-19 10:27                 ` Martin Krischik
2008-05-17 22:42       ` Peter C. Chapin
2008-05-18  6:58         ` Martin Krischik
2008-05-18  6:52     ` Martin Krischik
2008-05-18 14:16       ` Maciej Sobczak
2008-05-17 14:30 ` Brian Drummond
2008-05-17 16:47   ` Maciej Sobczak
2008-05-19 14:45     ` Brian Drummond
2008-05-20  7:42       ` Maciej Sobczak
2008-05-20 18:01         ` jayessay
2008-05-18  8:06   ` Simon Wright
2008-05-18 14:21     ` Maciej Sobczak
2008-05-18 20:48       ` Simon Wright
2008-05-19 14:40     ` Brian Drummond
2008-05-19  3:44 ` Matthew Heaney
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox