Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!elroy.jpl.nasa.gov!ncar!noao!arizona!gudeman From: gudeman@cs.arizona.edu (David Gudeman) Newsgroups: comp.lang.misc Subject: Re: C's sins of commission Message-ID: <27376@megaron.cs.arizona.edu> Date: 12 Nov 90 01:54:21 GMT Organization: U of Arizona CS Dept, Tucson Lines: 49 In article Piercarlo Grandi writes: ] ]Pah. pointers are just a thin veneer on the underlying implementation. ]The thing you want to implement is a *relationship*; a pointer is a way ] to implement a relationship Pah. Pointers are a direct representation of a fundamental way to visualize relations. The thing I want to implement is a relationship that I am visualizing as a pointer. You are abusing the term "implement". The correct way to say this is that a pointer is one way to _represent_ or _visualize_ a relationship. "Implement", implies a machine implementation, and it is just false to suggest that people would not visualize pointers if they were not implementing things on machines. The concept of one object referencing another pre-dates computers. ]Ah no, this cannot pass. Lists and trees are *implementations*, and when ]you draw them you draw specific encodings of such implementations. No, this cannot pass. Lists and trees are mental structures that humans use to visualize things. You can call them relations, you can "implement" them mathematically as relations, but that does not change the fact that they are in fact fundamental forms of visualization. And when we draw them we certainly do not draw specific encodings. In a list, X follows Y because our mental image of the list has X following Y. In a tree, there is an arrow from X to Y because in our mental image X is related to Y by the relationship that the arrow represents. ]The way *I* think about data structures as typed mappings over entities ](entity-category-relationship!), I think you visualize data structures geometrically like everyone else. Then you mentally convert these natural visualizations into unatural mathematical abstractions and pretend that the abstraction is the original. There is some justification for this in mathematics, in the case that mathematicians are trying to prove that the structures they visualize are well-founded. But once a certain class of structures and operations on those structures is known to be well-founded, there is no reason to keep "implementing" them in terms of baroque mathematical abstractions. -- David Gudeman Department of Computer Science The University of Arizona gudeman@cs.arizona.edu Tucson, AZ 85721 noao!arizona!gudeman