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.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d6f7b92fd11ab291 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-07-19 09:48:30 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!newshub.sdsu.edu!elnk-nf2-pas!newsfeed.earthlink.net!stamper.news.pas.earthlink.net!stamper.news.atl.earthlink.net!harp.news.atl.earthlink.net!not-for-mail From: Richard Riehle Newsgroups: comp.lang.ada Subject: Re: Crosspost: Help wanted from comp.compilers Date: Sat, 19 Jul 2003 09:51:17 -0700 Organization: AdaWorks Software Engineering Message-ID: <3F197705.97762A50@adaworks.com> References: <_ArRa.81541$H17.26007@sccrnsc02> Reply-To: richard@adaworks.com NNTP-Posting-Host: 3f.bb.a8.d7 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Server-Date: 19 Jul 2003 16:48:30 GMT X-Mailer: Mozilla 4.7 [en] (Win98; I) X-Accept-Language: en Xref: archiver1.google.com comp.lang.ada:40507 Date: 2003-07-19T16:48:30+00:00 List-Id: tmoran@acm.org wrote: > > Remember that Ada has separate specs and bodies. If you want to change > the optimization or get additional debug output on the body, you can > recompile the body and it doesn't cause cascades. If you recompile the > spec with a different optimization level then some things (record layouts, > for instance) might change, and you certainly had better recompile > anything that depends on that spec. I recall one of oiur Ada 83 clients who developed a large system for the DoD and constantly complained about how long it took to compile programs. We looked at the dependencies early in our review and discovered that nearly context clause was at the package specification level even though much of the stuff did not require context clauses at that level. The compiler they were using did not issue a warning about this. In many cases, simply moving the context clauses to the body was sufficient. In other cases, slight changes were necessary to the specification to permit moving context clauses. In a few cases, it was appropriate to declare "is separate" for certain subprograms in the body and move the dependencies to the separately compiled subunits. This solution greatly improved compilation times, made maintenance much more convenient, and reduced some of the overhead spent on programmers who needed to stay on into the night watching their compilations grind on, while they watched in the hope the computer would not crash (it sometimes did) during recompilation. Even with Ada 83, much of the complaining about long compilation times was easily solved by designing the dependencies intelligently. This is one benefit of the Ada separate compilation model. Even though many Ada practitioners dislike subunits, they did then and continue today, to have a place in good design. Richard Riehle