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,1e3f2eac5c026e3 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-12-28 11:59:06 PST Path: archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.mathworks.com!nntp.TheWorld.com!not-for-mail From: Robert A Duff Newsgroups: comp.lang.ada Subject: Re: Other Ada Standards (was Re: SIGada Conference) Date: 28 Dec 2003 14:59:05 -0500 Organization: The World Public Access UNIX, Brookline, MA Message-ID: References: <468D78E4EE5C6A4093A4C00F29DF513D04B82B08@VS2.hdi.tvcabo> <3FE991DD.5060301@noplace.com> <3FEA5C82.8050309@noplace.com> <3FEB047A.1040100@noplace.com> NNTP-Posting-Host: pip1-5.std.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: pcls4.std.com 1072641545 465 192.74.137.185 (28 Dec 2003 19:59:05 GMT) X-Complaints-To: abuse@TheWorld.com NNTP-Posting-Date: Sun, 28 Dec 2003 19:59:05 +0000 (UTC) User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Xref: archiver1.google.com comp.lang.ada:3899 Date: 2003-12-28T14:59:05-05:00 List-Id: "Dmitry A. Kazakov" writes: > Robert A Duff wrote: > > > "Dmitry A. Kazakov" writes: > > > >> Just allow "with" everywhere "use" is allowed. Then "use A.B" could > >> literally imply "with A.B". > > > > That would defeat the whole purpose of with_clauses. The point of > > with's is that you can see a summary of the interconnections between > > compilation units all in one spot, right up front. > > Should a reader see these interconnections? Couldn't we bring the famous "it > is a question of a good IDE" argument here? Well, I suppose the IDE argument can always be used. I'm a language designer at heart, so I like like to provide readability via language design. I.e., I have a hammer, so I want to use my hammer. ;-) Maybe we should write programs in assembly language, and have a fancy IDE that can figure out the design from the code, and make it all readable and wonderful? Seems like a bad approach to me. I like the idea of an IDE (or just good-old Emacs) providing *writeability*. But usually, *readability* should be made easier by language design, not by postulating fancy IDE's. On the other hand, I have nothing against an IDE that can, say, produce a graphical picture of the interdependencies among packages. But on the other other hand, I want what I see on the screen (or paper) to be readable. I don't want to click on stuff to see what's going on -- just looking at what's in front of me is far more efficient. > > The most important aspects of a software design are: what are the > > pieces, and which pieces interact with which other pieces. Scattering > > this information all over the place is a bad idea, IMHO. > > Again, true. But it is not compilation units which interacts, but rather > smaller objects. With clauses give the "big picture". I don't want to click on some IDE thingy that tells me this thing depends on everything else under the Sun. I want to see the overall design, more or less. > > Why bother with with at all? You might as well just say that any > > reference to a name automatically imports that name, as necessary. > > There are other languages that do something like that. > > Absolutely. I think that the compilers are enough mature to go without with. > Can we go so far? [with-ing generic children is really boring] Will > implying of "with" be backward compatible? I doubt if it could be made to work in the context of Ada, but other languages have done it (Java, for example). But I don't care to think about that -- I was *not* seriously suggesting that eliminating with_clauses is a good idea! > >> So: > >> > >> package A is > >> package B is > >> ... > >> end A; > >> > >> with A.B; -- This is OK, implies with A, as usual > >> package C is > >> with A.B; -- This is also OK > >> > >> BTW, this would give numerous addititional possibilities: > >> > >> package X is > >> -- public things > >> > >> private > >> with Something_Implementational.Not_To_Expose; > > > > It is indeed unfortunate that you can't have with's that apply only to > > the private part. IMHO, the language would be better if the with's > > appeared *inside* the package, either at the start of the visible part, > > or the start of the private part, or the start of the body. But I want > > them together, up front (for each of these parts) -- not scattered all > > over. > > To enforce this we would need to formally define "start-of-a-part" in RM. Not too hard. For example, if the syntax were designed from scratch, it would not be hard to have an "import clause" that can only appear at the appropriate place. Even without that, it's not too hard -- we already require that "pragma Pure" appear "at the beginning", and there's some verbiage in the RM to define what that means. > IMO it is easier to allow it everwhere with a stylistic note that it is > better to place it as early as possible in the text. The problem with that is that you and I might have different ideas as to where it's appropriate to put with_clauses. So if I'm reading your code, I have to search all over, because I can never be sure you interpret the "stylistic note" the same way I do. Better to define it formally, and require the compiler to check it, so you and I can understand each other's code. - Bob