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-7-bit X-Google-Thread: 103376,38159b1b5557a2e7 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-01-29 10:08:11 PST Path: archiver1.google.com!news2.google.com!newsfeed2.dallas1.level3.net!news.level3.com!zeus.visi.com!phobos.visi.com!news-out.visi.com!hermes.visi.com!feed2.news.rcn.net!feed1.news.rcn.net!rcn!logbridge.uoregon.edu!newshub.sdsu.edu!elnk-nf2-pas!newsfeed.earthlink.net!stamper.news.pas.earthlink.net!newsread2.news.pas.earthlink.net.POSTED!a6202946!not-for-mail From: Jeffrey Carter Organization: jrcarter commercial-at acm [period | full stop] org User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Standard Ada Preprocessor References: <400BDB7C.40100@noplace.com> <400D2150.6000705@noplace.com> <400E72F9.8060501@noplace.com> <100upo7ln5e3k59@corp.supernews.com> <400FC8E8.2040100@noplace.com> <4011127C.4030801@noplace.com> <101377e54car5cc@corp.supernews.com> <4017AAEF.1020304@noplace.com> <4018FF55.8030800@noplace.com> In-Reply-To: <4018FF55.8030800@noplace.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Date: Thu, 29 Jan 2004 18:08:11 GMT NNTP-Posting-Host: 63.184.17.223 X-Complaints-To: abuse@earthlink.net X-Trace: newsread2.news.pas.earthlink.net 1075399691 63.184.17.223 (Thu, 29 Jan 2004 10:08:11 PST) NNTP-Posting-Date: Thu, 29 Jan 2004 10:08:11 PST Xref: archiver1.google.com comp.lang.ada:5053 Date: 2004-01-29T18:08:11+00:00 List-Id: Marin David Condic wrote: > You aren't fundamentally changing the problem - just where it will be > dealt with. If the argument against conditional compilation is that it > will make ugly, incomprehensible code, then that same argument goes > against the build process. It is, after all, some set of instructions > that will be obeyed by the computer and hence a kind of programming > language, so giving *it* the responsibility is just going to result in > ugly, incomprehensible code at the build level. There's a general SW engineering principle called localization. You don't lump your code for dealing with a 4-line LCD display in with the code for dealing with a temperature sensor just because they're both hardware. Similarly, you shouldn't want your code for doing something platform dependent on one platform lumped in with your code for another platform, nor your code for doing things lumped in with your code for deciding which code to use for this build. Separating concerns this way makes everything easier to understand. I can look at the code for dealing with a VMS file system without having to understand the code for selecting a VMS file system; I can look at the code for selecting the file system without having to look at the code for dealing with file systems. That said, it would be nice to have a standard, portable way to select different bodies for a build, but even without it, the advantages of separating these independent concerns seem clear. -- Jeff Carter "Many times we're given rhymes that are quite unsingable." Monty Python and the Holy Grail 57