home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / lang / c / 12921 < prev    next >
Encoding:
Internet Message Format  |  1992-08-29  |  1.9 KB

  1. Path: sparky!uunet!news.claremont.edu!lexcel!mtinews!mti!adrian
  2. From: adrian@mti.mti.com (Adrian McCarthy)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Most difficult part of learning C?
  5. Message-ID: <706@mtinews.mti.com>
  6. Date: 28 Aug 92 17:08:10 GMT
  7. References: <9208251159.AA04122@ult4>
  8. Sender: news@mtinews.mti.com
  9. Organization: Micro Technology, Inc., Anaheim, CA
  10. Lines: 30
  11. Nntp-Posting-Host: mti
  12.  
  13. I think one of the things the successful C programmers often *never* get
  14. is learning the distinction between what is part of the C language and
  15. what is part of their environment.
  16.  
  17. I know several people who have programmed in C in the UNIX (mostly Sun)
  18. environment for many years who *never* realized that:
  19.  
  20.     o creat(), open(), close(), fork(), getopt(), etc., are part of the
  21.       UNIX libraries and not an inherent part of C.
  22.     o expressions like a[i++] = i may evaluate differently on different
  23.       compilers.  Many compilers and lints won't warn you when you use
  24.       something like this.
  25.     o exit codes are interpretted by the host OS (if there is one), so
  26.       exit(1) isn't always the right way to signal an error.
  27.  
  28. Unless your learning experience includes an instructor looking over your
  29. shoulder and reminding you of these things, it's very easy to confuse parts
  30. of the environment with the language.  Some books do a good job of emphasizing
  31. these distinctions, others just mention it in passing.  As a result, a
  32. successful C programmer who has experience with a single environment can
  33. find life very difficult when they are transplanted or must work simultaneously
  34. in two environments.
  35.  
  36. These problems (especially the first) can happen with most languages, of
  37. course, but it seems to happen more with C programmers.  Perhaps that's
  38. because so many C packages offer a library of UNIX library emulation routines,
  39. thus delaying the painful gotcha that happens when you finally realize the
  40. difference between a language run-time library features and a host OS feature.
  41.  
  42. Aid.  (adrian@lexcel.com)
  43.