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.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Received: by 2002:ac8:45c9:: with SMTP id e9mr53647426qto.133.1563845750124; Mon, 22 Jul 2019 18:35:50 -0700 (PDT) X-Received: by 2002:a9d:3e4e:: with SMTP id h14mr53064301otg.182.1563845749806; Mon, 22 Jul 2019 18:35:49 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!news.uzoreto.com!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!b26no3641628qtq.0!news-out.google.com!e17ni1178qtg.1!nntp.google.com!b26no3641625qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Mon, 22 Jul 2019 18:35:49 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=50.66.161.135; posting-account=lzqe5AoAAADHhp_gregSufVhvwu22fBS NNTP-Posting-Host: 50.66.161.135 References: User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <8adc56f2-7123-45d6-90f1-c03a327f2d40@googlegroups.com> Subject: Re: The answer to "Can Ada replace FORTRAN for numerical computation? From: Brad Moore Injection-Date: Tue, 23 Jul 2019 01:35:50 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Xref: reader01.eternal-september.org comp.lang.ada:56918 Date: 2019-07-22T18:35:49-07:00 List-Id: On Sunday, July 21, 2019 at 10:38:16 PM UTC-6, Nasser M. Abbasi wrote: > In 1980 there was a paper titled "Can Ada replace FORTRAN for numerical c= omputation?" >=20 > ACM SIGPLAN Notices > Volume 16, Number 12, December, 1981 >=20 >=20 > https://dl.acm.org/citation.cfm?id=3D954264 >=20 > " > In July 1980, the proposed final form of the Ada programming > language was released by the U.S. Department of Defense [1]. Even > though Ada was not designed specifically for general numeric > scientific computation, nevertheless the question arises to whether > it is appropriate for this purpose. This question can best > be answered by consideration of the following question: Is Ada > a suitable replacement for the programming language FORTRAN? This > paper discusses those constructs of Ada which are pertinent to the > matter and are considered defective. It is noted that the array defects > are exceptionally critical, not providing needed capabilities > that exist in FORTRAN and have been extensively used for > a quarter century." >=20 > I can't find free version of the paper, any one knows of one? but > there was more discussion on it here: >=20 > https://archive.org/stream/DTIC_ADA139224/DTIC_ADA139224_djvu.txt >=20 > (just search for string "can ada") >=20 > _But_ to answer the question in the title of the paper, and > after FORTY years, it is clear now that the answer is a > resounding NO. If the goal was to have Ada replace Fortran, that was never a realistic goa= l to begin with, for many reasons. One being that there exists a lot of leg= acy Fortran code out there, and secondly I cannot think of any cases where = language X replaced language Y. There will likely always be supporters exis= ting for language Y, expecially if it better fits a particular niche. >=20 > Too bad, because Ada could have been best language for numerical > computation due to its strong typing. But its lack of support > for many things related to linear algebra and such, as discussed > in the above, Ada could not replace Fortran. That being said, a lot has happenned to Ada since Ada 83, when those articl= es were written, including support for things like linear algebra and such.= See Ada.Numerics.Generic_Real_Arrays and Ada.Numerics. Ada.Numerics.Generi= c_Complex_Arrays, which include routes to Solve matrices, and perform vario= us other operations on them. e.g. -- Real_Matrix inversion and related operations function Solve (A : Real_Matrix; X : Real_Vector) return Real_Vector; function Solve (A, X : Real_Matrix) return Real_Matrix; function Inverse (A : Real_Matrix) return Real_Matrix; function Determinant (A : Real_Matrix) return Real'Base; Brad