Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!ucsd!usc!elroy.jpl.nasa.gov!ncar!noao!arizona!gudeman From: gudeman@cs.arizona.edu (David Gudeman) Newsgroups: comp.lang.misc Subject: Re: Answers, Chapter 1: TeX Message-ID: <27094@megaron.cs.arizona.edu> Date: 2 Nov 90 05:47:10 GMT Organization: U of Arizona CS Dept, Tucson Lines: 55 In article <4569@lanl.gov> jlg@lanl.gov (Jim Giles) writes: ]The 'soft' words (like 'legible') might be considered opinion, the ]statement that pointers provide no more power is a statement of _fact_. Not until you define "power". ]... A C style pointer ... is similar (but not identical ]to) the passing of a one dimensional array which is indexed by ]integers. But, the array differs by requiring its bounds to be ]passed and by its ability to be multidimensional and by the fact ]that it is _not_ aliased or overlapping with any other argument or ]global variable without explicit _local_ declaration of the fact. Well then you are really making three distinct arguments and confusing your readers by merging them into one, aided and abetted by a specialized terminology that the net public in general do not share. Your arguments seem to be (I'll assume everyone agrees that arrays are multi-dimensional): (1) Arrays should be bounds checked. (2) Aliasing of data structures should not be allowed unless made explicit by declarations. (3) Pointers should not have a dereferencing operation. To take the last point first, you keep saying that you want to eliminate pointers, but you also keep saying that you would replace them by something that is semantically equivalent. All you have done is replaced the notion of an reference-valued object with a co-reference, replaced pointer creation with a special assignment, and removed the need for a dereference operation. You haven't eliminated pointers, you have just changed them to something similar. As to the other points, you keep saying that "arrays have property X and pointers don't", when what you really mean is that bounds-checked arrays with guaranteed no-aliasing have property X and that raw machine addresses don't have property X. If you wouldn't keep refering to raw machine addresses as pointers there would be a lot less confusion. There is no reason why pointers in some language could not be defined to be bounded and unaliased. If pointers were defined that way, then pointers would have property X. Property X here mostly refers to your assertions about the greater optimizability and safety of arrays over pointers. (Your example depended on the assumption that the C pointers were not bounded and that arbitrary aliasing is possible.) To make the situation even more bemusing, your version of pointers without dereferencing constitutes a direct counter-example to what you claim is impossible for pointers. -- David Gudeman Department of Computer Science The University of Arizona gudeman@cs.arizona.edu Tucson, AZ 85721 noao!arizona!gudeman