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-Thread: 103376,7272aa7508a3d83f X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!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 R. Carter" Organization: jrcarter at acm dot org User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: pointer questions References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Date: Thu, 27 Oct 2005 18:43:26 GMT NNTP-Posting-Host: 67.3.212.109 X-Complaints-To: abuse@earthlink.net X-Trace: newsread2.news.pas.earthlink.net 1130438606 67.3.212.109 (Thu, 27 Oct 2005 11:43:26 PDT) NNTP-Posting-Date: Thu, 27 Oct 2005 11:43:26 PDT Xref: g2news1.google.com comp.lang.ada:6008 Date: 2005-10-27T18:43:26+00:00 List-Id: Robert A Duff wrote: > > Never? Well, these kinds of low-level hacks are _rarely_ a good idea. > But you might need them when interfacing to some other language > that uses such trickery. True, but then you're not using Ada, you're using Ada and X, which I addressed later. For just Ada, you never need the kind of pointers the OP was asking about. > Maybe the kinds of programs I write are different. Question for those > who rarely use access types: what sort of application areas are you > talking about? Mine are usually software development tools -- such as > compilers. Maybe. I use unbounded data structures frequently, but I don't write a new one every time. Instead, I reuse existing generic data structures, so the code I write doesn't contain those access types. When you talk about all the access types in your compiler code, are you talking about frequent creation of new access types, reuse of existing but exposed access types, or reuse of packages that hide the use of access types? That will help decide if compilers are different. For learning Ada, one should write some dynamic data structures, but to use Ada, you should reuse existing dynamic data structures. I don't count access types hidden in reused packages as using access types. Recently, I've written a generic package for genetic algorithms, and a TSP program that uses it, and a package to implement the Nicias encryption algorithm, and a program that uses it. Nary an access type in sight. > If I designed a language, I would go even further in that direction. > I would allow mutually recursive types without intervening pointers. > The only need for pointers in my language would be where > reference semantics is desired -- e.g. when you want two pointers > to the same object, such that updates to that object can be seen > through both. We're still waiting to see an informal specification for Duff, or whatever it's called :) > I don't really agree. A beginner to Ada who knows how to program > (in some other language, such as C) might well want to make a > linked list, for example, and that requires pointers of some > sort -- usually access types. Again, for learning Ada, certainly. For using Ada, no. Part of learning Ada is learning to reuse. Even after the beginner has crafted a generic, unbounded list to learn about generics, access types, memory management, and information hiding, it's still a good idea for him to use the unbounded list component from (or Ada.Containers in 0X) to learn to reuse others' packages, and to gain the benefit of SW that has been much more thoroughly tested than his own effort. My comments that pointers are rarely needed in Ada are usually addressed to beginners coming from C who think they must use pointers for everything, from passing a parameter that can be modified to creating an array with bounds known only at run time. I hope that my saying this will cause them to stop, every time they think they need a pointer, and see if perhaps Ada can do it without one. In that way, perhaps they will gain a better understanding and appreciation of Ada. -- Jeff Carter "My mind is aglow with whirling, transient nodes of thought, careening through a cosmic vapor of invention." Blazing Saddles 85