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,c4cb2c432feebd9d X-Google-Thread: 1094ba,c4cb2c432feebd9d X-Google-Attributes: gid103376,gid1094ba,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local01.nntp.dca.giganews.com!nntp.scarlet.biz!news.scarlet.biz.POSTED!not-for-mail NNTP-Posting-Date: Fri, 26 May 2006 11:45:08 -0500 From: Ludovic Brenta Newsgroups: comp.lang.ada,comp.lang.fortran Subject: Re: Bounds Check Overhead References: <0ugu4e.4i7.ln@hunter.axlog.fr> <%P_cg.155733$eR6.26337@bgtnsc04-news.ops.worldnet.att.net> <6H9dg.10258$S7.9150@news-server.bigpond.net.au> <1hfv5wb.1x4ab1tbdzk7eN%nospam@see.signature> <4475DA61.3080001@comcast.net> <44762F55.4050106@cits1.stanford.edu> <87hd3d1472.fsf@ludovic-brenta.org> <3cBdg.6255$oa3.2407@trnddc08> Date: Fri, 26 May 2006 18:44:58 +0200 Message-ID: <87ac9420s5.fsf@ludovic-brenta.org> User-Agent: Gnus/5.110004 (No Gnus v0.4) Emacs/21.4 (gnu/linux) Cancel-Lock: sha1:8BagkPRWmyQKqT4gr/FxSuJCIwQ= MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii NNTP-Posting-Host: 62.235.56.173 X-Trace: sv3-WsXwx6SM6nQ2qBFTjrSCSSDpPuBhZe4Hae3rh7ZCUKGM9abM6j9u5PcwLBHiiugroSmoflF4MUVbnF+!BqcRsGuNLZu2YYkrK2KzUpB/3u3MUG7mMC3Nb1wURxvRaXwr3KmELdnhApLKi1Q8yS6hQ5oTRA== X-Complaints-To: abuse@scarlet.be X-DMCA-Complaints-To: abuse@scarlet.biz X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.32 Xref: g2news2.google.com comp.lang.ada:4500 comp.lang.fortran:10297 Date: 2006-05-26T18:44:58+02:00 List-Id: Rich Townsend writes: > Dick Hendrickson wrote: >> Given something like >> COMMON I >> DO I = 1,10 >> call something (I) >> call something_else() >> enddo >> "something" is not allowed to change it's argument and neither >> "something" nor "something_else" is allowed to change the variable >> in common. This prohibition flows down the entire call tree from >> these routines. And that's why it's hard to check. > > ...although a lot of the constructs introduced in Fortran 90 help in > checking -- in particular, if the called subroutines have INTENT() > on their arguments, then its pretty cut-and-dry whether I will be > modified or not. Having said that, things like host association can > muddy the waters somewhat -- but at least you only have to go down > one level to check if I is being modified. Then Ada is better in that respect than Fortran. In Ada, the compiler has enough knowledge about what subprograms do to their arguments that it can easily check that loop indexes never change (i.e. you can pass the loop index as an "in" parameter but not as an "out" or "in out" parameter). Also, in Ada, the loop index does not exist outside of the loop. From what you said, it seems to me that in Fortran, the loop index still exists after the loop, and has a well-defined value, but the programmer can then change it. Correct? -- Ludovic Brenta.