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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,a498aa1404ef5d87 X-Google-Attributes: gid103376,public From: eachus@spectre.mitre.org (Robert I. Eachus) Subject: Re: Why C++ is successful Date: 1998/07/30 Message-ID: #1/1 X-Deja-AN: 376431864 References: <35AE4621.2EBC7F6A@eiffel.com> <6p83vj$657$1@news.intellistor.com> <35B79E7D.6068DCDF@eiffel.com> <6pg7fg$qhi$1@news.interlog.com> <901533851.20058.0.nnrp-04.9e980ba3@news.demon.co.uk> <35be2a94.57352308@netnews.msn.com> <6plvgl$eaf$1@news-1.news.gte.net> <35bebe5f.95187031@netnews.msn.com> <6pn9af$hqd$1@uuneo.neosoft.com> <35BF49E8.136D75C2@earthling.net> Organization: The Mitre Corp., Bedford, MA. Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-07-30T00:00:00+00:00 List-Id: In article <35BF49E8.136D75C2@earthling.net> Charles Hixson writes: > But what Ada REALLY needs is a good garbage collection mechanism. And > saying "Do it by hand" doesn't qualify as good! The Ada philosophy is to give the programmer the tools he needs and to allow him the freedom to create types (classes) that do what is required for that type. Of course there are also predefined types and where appropriate there are directions given to the compiler writers about those types: A.4.4(106): Implementation Advice Bounded string objects should not be implemented by implicit pointers and dynamic allocation. A.4.5(88): Implementation Requirements No storage associated with an Unbounded_String object shall be lost upon assignment or scope exit. Now if you are creating a type that needs special storage management, my experience is that it requires about six lines. If you are creating something more ordinary, just use components of predefined types like Unbounded_String, and don't worry about garbage collection. Yes, it is possible to write code in Ada that leaks memory absent garbage collection, but is well behaved if garbage collection is provided, as it is by some implementations. But such programs are rare. For the large majority of Ada programs, memory management is not an issue. (Or at least, it isn't an issue if there ISN'T a garbage collector.) For a much smaller set, but probably much larger than the set where general garbage collection is helpful, you do need to put in some storage management code. But with Ada 95, the most I have ever had to do was about one page of code. (Create a type descended from Controlled that cleans itself up when no longer visible by calling Unchecked_Deallocation. These objects are often used for communication between tasks where a simple protected type won't do. However, I'd say that 90% of such cases all you have to do is use Unbounded_Strings.) I'll post a very useful example to comp.lang.ada soon. -- Robert I. Eachus with Standard_Disclaimer; use Standard_Disclaimer; function Message (Text: in Clever_Ideas) return Better_Ideas is...