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-Language: ENGLISH,ASCII Path: g2news1.google.com!news3.google.com!feeder3.cambriumusenet.nl!feeder1.cambriumusenet.nl!feed.tweaknews.nl!193.201.147.71.MISMATCH!xlned.com!feeder3.xlned.com!feeder.erje.net!feeder.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: David Thompson Newsgroups: comp.lang.ada Subject: Re: Copying rows in a two dimensional array. Date: Tue, 16 Feb 2010 01:51:22 -0500 Organization: Poor Message-ID: References: <4b6637a1$0$4586$4d3efbfe@news.sover.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Injection-Date: Tue, 16 Feb 2010 06:51:15 +0000 (UTC) Injection-Info: news.motzarella.org; posting-host="tW8nN8I9QdNMM2yuI78hxw"; logging-data="21255"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+vGuJzZdnJHT63WBvJRDnrtwFVffs9qtg=" X-Newsreader: Forte Agent 3.3/32.846 Cancel-Lock: sha1:UFkSKEFgax7GmKpHUMkE/QfQXlI= Xref: g2news1.google.com comp.lang.ada:9262 Date: 2010-02-16T01:51:22-05:00 List-Id: On Tue, 02 Feb 2010 09:52:31 +0100, Jean-Pierre Rosen wrote: > Jerry a �crit : > > I've never understood why Ada does not allow slicing in > > multidimensional arrays. What are the safety issues involved? And how > > is it safe to force the programmer into ad hoc methods? > > > One-dimensional slices are simple and efficient. Multidimensional slices > are a can of worms. > > I guess you are thinking about rectangular slices. But why stop there? A > slice comprising the main diagonal and the diagonal above and below can > be very useful for some calculations. Or a slice which is the triangular > part of the upper half... > > AFAICT, Fortran-99 does provide this - and the syntax is so complicated > that nobody uses it. And implementation is also a nightmare. > Fortran 90 (and later) has rectangular but optionally non-unit-stride slices; X(1:5:4,2:6:2) is X(1,2) X(1,4) X(1,6) X(5,2) X(5,4) X(5,6). (Fortran arrays are column-major). (And although it treats string -- fixed length only -- as a different type than array of character, you can use corresponding substrings of elements of an array of strings in a way that is effectively also rectangular.) It also has 'vector subscripting;: X(Y) accesses X(Y(1)) X(Y(2)) ... X(Y(N)) -- but this cannot be used as modifiable actual argument or POINTER target, making it not really a firstclass object/variable. A major new 'coarray' feature, which essentially allows distribution across parallel processing systems, vaguely like an in-language OpenMP (although I hear the standardese must be rather contorted to avoid impermissibly specifying implementation) was proposed for what was scheduled to be F 08, but proved contentious enough that AFAIK it still hasn't been finalized. *PL/I* has the X DEFINED Y (iSUB) syntax which allows things like a diagonal (but AFAICS not more than one at a time). > When designing a programming language, you have to stop at some point. > The ratio (cost of implementation) / usefulness is a good measure for > this. I think the ratio was simply to high for this feature. The features in F90 at least in this area weren't too much of a problem, at least judging from the reports of visibly intelligent and apparently informed people in c.l.f. Although those implementors had the advantage that F90 was originally scheduled for I believe 87, and even before that there had been experience with nonstandard but fairly widespread HPF "High Performance Fortran" extensions. In contrast F03, with adds features mostly in the areas of OO and 'parameterized' types somewhat like Ada discriminated ones, has taken longer although most vendors are now reportedly getting close.