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,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,c9d5fc258548b22a X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!news.glorb.com!news2.glorb.com!transit3.readnews.com!news-out.readnews.com!postnews3.readnews.com!not-for-mail Date: Wed, 09 Feb 2011 17:50:57 -0500 From: Hyman Rosen User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101207 Thunderbird/3.1.7 MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: How do I write directly to a memory address? References: <67063a5b-f588-45ea-bf22-ca4ba0196ee6@l11g2000yqb.googlegroups.com> <4d51905c$0$19486$882e7ee2@usenet-news.net> <36212a7b-deab-45d9-ac45-aa29cd90c7bc@o18g2000prh.googlegroups.com> <4d51a7bb$0$19486$882e7ee2@usenet-news.net> <4d52b489$0$19486$882e7ee2@usenet-news.net> <9a8njlwvey1p.1a96yvvgdf6yu.dlg@40tude.net> <4d52c5e5$0$19486$882e7ee2@usenet-news.net> <720b7e8f-1ae2-4b3b-851e-12b08b3c99e0@r4g2000prm.googlegroups.com> <4d52dd97$0$18057$882e7ee2@usenet-news.net> <9a8f406d-05ca-4bf3-8487-918d4e0dd634@o18g2000prh.googlegroups.com> <4d52ee47$0$18057$882e7ee2@usenet-news.net> <4d5306a0$0$18057$882e7ee2@usenet-news.net> <76c123ab-7425-44d8-b26d-b2b41a9aa42b@o7g2000prn.googlegroups.com> <4d5310ab$0$18057$882e7ee2@usenet-news.net> <9bff52ca-6213-41da-8fa4-3a4cdd8086d3@y36g2000pra.googlegroups.com> <4d5315c8$0$18057$882e7ee2@usenet-news.net> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID: <4d531a54$0$18057$882e7ee2@usenet-news.net> NNTP-Posting-Host: 0418c430.usenet-news.net X-Trace: DXC=W4EQ>5b4O1;\VIS\BM3`U6^oXGM_6\KV0mX0AG3X_jU?<^JMhOhjP4>VjKk:Lk^BN1cR12TN^Bg7>CKIHCW3N^V4OiaDcmXlf@5 X-Complaints-To: abuse@usenet-news.net Xref: g2news1.google.com comp.lang.ada:17186 Date: 2011-02-09T17:50:57-05:00 List-Id: On 2/9/2011 5:38 PM, Vinzent Hoefler wrote: > Hyman Rosen wrote: > >> Excuse me, but I really, truly do need to know what my >> subprogram is going to do. People have been telling me >> about "contracts" and "requirements" and "proofs of >> correctness" and that Ada is good for stuff. So I have >> this subprogram and I'd like to know what it will do >> for different values of its parameter so I'll know if >> I can use it or not. > > You can't use it. It will raise Storage_Error for some > values. Hmm. You know, this makes me think that before I can call any subprogram, I'm going to need to examine its body to see how many nested subprogram calls it makes, as well as those bodies, and so on. And even then, is there anything that tells me exactly when I will get Storage_Error? How can I reason about the behavior of any Ada program? OK, I know I'm sounding like a smart ass, but take my question seriously. There's an awful lot of castigation of C code (and coders) going on here, with complaints about "bugs on every line", but isn't that equally true of Ada code? Doesn't every subprogram call potentially raise Storage_Error, and isn't that possibility usually ignored? And in fact, don't Ada newbies run into this all the time, because they declare large arrays or records as local variables and run out the call stack?