home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / lang / c / 12857 < prev    next >
Encoding:
Text File  |  1992-08-27  |  2.3 KB  |  53 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!taumet!steve
  3. From: steve@taumet.com (Steve Clamage)
  4. Subject: Re: Why should POINTERS be so damn hard to understand ?
  5. Message-ID: <1992Aug27.161245.10339@taumet.com>
  6. Organization: TauMetric Corporation
  7. References: <9208251159.AA04122@ult4> <1992Aug26.124652.9509@alw.nih.gov> <1992Aug26.183054.14146@newshub.ccs.yorku.ca> <l9nl34INNhln@almaak.usc.edu> <25233@castle.ed.ac.uk>
  8. Date: Thu, 27 Aug 1992 16:12:45 GMT
  9. Lines: 42
  10.  
  11. chas@castle.ed.ac.uk (C Spencer) writes:
  12.  
  13.  
  14. >Why does a pointer need to know what it's pointing to? Surely it's just
  15. >an address - if there was only one kind of pointer, there wouldn't be so
  16. >much to learn, and be confused by.
  17.  
  18. This has to do with mixing levels of abstraction, and how you choose
  19. to look at programming.
  20.  
  21. Case 1: Programming is a method of causing a particular machine
  22.     to behave in a particular way.
  23. You don't care about types, and you probably  want a typeless langauge.
  24. The language is just a convenient shorthand for machine instructions,
  25. maybe with some control abstractions (if, loop, case).  This is quite
  26. suitable for small embedded computers -- device controllers, for example.
  27.  
  28. Case 2: Programming is a method of expressing an algorithm or
  29.     procedure for communication to humans and machines.
  30. You want an abstract description, machine-independent, of the algorithm
  31. or process.  You want types in the language, so that it can be made
  32. plain what the interactions are intended to be.  This improves
  33. communication among humans.  Stronger typing also leads to more help
  34. from the compiler in finding many kinds of simple errors in writing
  35. the code -- errors which would be much harder to find at run-time.
  36.  
  37. To answer the question more directly:
  38.  
  39. 1.  When you read code and see that 's' points to a string, 'q' to a
  40. floating-point number, 'p' to a structured object, isn't that more
  41. help in understanding the program than when you have a bunch of
  42. pointers and you don't know what they are pointing to?
  43.  
  44. 2.  A pointer is not necessarily just an address.  On many machines
  45. the size of and the interpretation of the bits in a pointer depend
  46. on what it points to.  The type of the object pointed to is embedded,
  47. at least in part, in the pointer.  The machine can detect at runtime
  48. misuse of pointers.
  49. -- 
  50.  
  51. Steve Clamage, TauMetric Corp, steve@taumet.com
  52. Vice Chair, ANSI C++ Committee, X3J16
  53.