Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news.moneng.mei.com!daily-planet.execpc.com!spool.mu.edu!vinny.csd.mu.edu!root
From: [email protected] (V. S. Carpenter)
Newsgroups: comp.lang.c,comp.lang.c.moderated,comp.lang.c++,news.answers,comp.answers
Subject: LEARN C/C++ TODAY (A list of resources/tutorials)
Followup-To: comp.lang.c,comp.lang.c++
Date: 1 Aug 1995 04:18:52 GMT
Organization: Vinny's Linux PC
Lines: 1248
Approved: [email protected],[email protected]
Expires: 1 Sep 1995 00:00:00 GMT
Message-ID: <[email protected]>
NNTP-Posting-Host: vinny.csd.mu.edu
Keywords: learn c c++ programming tutorials WWW
X-Submissions-to: [email protected]
X-Questions-to: [email protected]
Originator: [email protected]
Xref: senator-bedfellow.mit.edu comp.lang.c:148742 comp.lang.c.moderated:1198 comp.lang.c++:140854 news.answers:49700 comp.answers:13413


Archive-name:   C-faq/learn-c-cpp-today
Last-modified:  Tuesday - August 01, 1995

                                       Copyright (c) 1995  Vinit Carpenter
                                                       All rights reserved


Introduction:
-------------

   This is a list of a  few  C  and  C++ language tutorials available to a
   user.   This  list includes interactive tutorials,  public-domain  code
   collections, books etc.  I've developed this FAQ purely as a  volunteer
   effort  as  a service to the Internet community.  Although every effort
   has been made to insure that all the information here is as accurate as
   possible, no guarantee is implied or intended.

   I welcome comments, suggestions  or  criticism  for  all the people out
   there  on the net that read this.  If you can help me make this list  a
   little better, you will be helping a lot of people  out  there  on  the
   net.   I  am  a horrible writer and an even worse speller.  If you find
   any errors or would like to  suggest  any additions please feel free to
   email me at the address below:

               [email protected]


What's new in this issue:
-------------------------

   This section of the  document  will  point  out  all the new additions,
   corrections,  updates  etc.  If there is enough interest, I will  start
   producing a 'diff' version.

   1. Added a second web server that has the HTML and PS version of this
      document.
   2. Updated the information on the 'C++ on the WWW'.  The address has
      of the web server has changes.  The author also converted Dordill's
      C++ course to HTML which is online.
   3. Updated the information in the MSDOS/Windows compiler section.
   4. Added a new item called `Programming in C' that contains a great
      collection of C and programming items.
   5. Updated the information on the C++ FAQ.
   6. Added a lot of information on OS/2. (Joe Dougherty)
   7. Added more information about Scott Meyers new book titled "More
      Effective C++".
   8. Updated the oak.oakland.edu info and the directory structure has
      been changed.
   9. Update the information on the C Snippets packages.  The author
      released a new package that includes 400+ files.


   I am switching to URL in place of the standard ftp and filename format.
   URL stands for "Uniform Resource Locator".   Think of it as a networked
   extension of the standard filename concept: not only can you point to a
   file  in a directory, but that file and that directory can exist on any
   machine on the network, can be served  via  any  of  several  different
   methods,  and might not even be something as simple as a file: URLs can
   also point to  queries,  documents  stored  deep  within databases, the
   results of a finger or archie command, or whatever.

   File URL:
   ---------
       file://oak.oakland.edu/simtel/msdos/c/00_index.txt

   Gopher URL:
   -----------
   To connect to a particular gopher server, use this URL:

       gopher://gopher.tc.umn.edu/

   News URL:
   ---------
   To point to a Usenet Newsgroups, the URL is simply:

       news:comp.lang.c

   HTTP URL:
   ---------
   HTTP  stands  for  HyperText  Transport  Protocol.   HTTP  servers  are
   commonly used for serving hypertext documents

       http://vinny.csd.mu.edu

   This file is posted on the 1st and the 15th of each month to the Usenet
   Newsgroups    COMP.LANG.C,     COMP.LANG.C.MODERATED,    COMP.LANG.C++,
   NEWS.ANSWERS  & COMP.ANSWERS.  The HTML and postscript version of  this
   documents are available.  Here's the URL:

       http://vinny.csd.mu.edu

   NOTE: This is my Linux PC  that  does  get inundated with request.  The
   last  time  I checked the stats, there were about 27 connections  every
   minute.  If you get timed out, please try  again.   The  most  recently
   posted  version of this document is kept on the news.answers archive on
   rtfm.mit.edu.  You can receive it via anonymous ftp.  The URL is listed
   below.

       ftp://rtfm.mit.edu/pub/usenet/news.answers/C-faq/learn-c-cpp-today

   If you don't have access to ftp, you can also receive this file via
   e-mail by sending mail to [email protected] with:

       send /pub/usenet/news.answers/C-faq/learn-c-cpp-today

   in the body (not subject line) of your message. You can also receive
   the latest version via electronic mail by e-mailing me.

       To: [email protected]
       Subject: send learn-c-cpp-today
       Body: ignored. Can be blank.

   A lot of tutorials discussed here  are available via anonymous ftp.  If
   you  don't have ftp, you can also retrieve these files via a  ftp-email
   gateway.    To   retrieve   files   via   e-mail,    send    mail    to
   [email protected] with the command HELP in the body of the message
   to  receive  a  complete list of all commands.  A typical message would
   look something like this:

               connect oak.oakland.edu
               chdir /simtel/msdos/c
               binary
               uuencode
               get xxx.zip
               quit

   Some of the items discussed  here  are  platform-dependent, but most of
   the  items are applicable across all platforms (portable).  If you have
   any comments, suggestions, complaints, additions, etc, please feel free
   to e-mail me at the following address:

           [email protected]

   If you are working on a tutorial or would like something added to this
   list, please e-mail me at the address given above.

The Origins of C and C++:
-------------------------

   The  'C'  programming  language   was   originally  developed  for  and
   implemented  on  the UNIX operating system, on a DEC PDP-11  by  Dennis
   Ritchie.  One of the best features of C is that it is not tied  to  any
   particular  hardware or system.  This makes it easy for a user to write
   programs that will run without any changes on practically all machines.
   C is often called a  middle-level  computer language as it combines the
   elements  of  high-level languages with the functionalism  of  assembly
   language.

   C allows the  manipulation  of  bits,  bytes  and  addresses- the basic
   elements with which the computer functions.  Another good point about C
   is  its  portability which makes it possible to adapt software  written
   for one type of computer to another.  C was  created,  influenced,  and
   field  tested  by  working programmers.  The end result is that C gives
   the programmer what  the  programmer  wants.   C  offers  the  speed of
   assembly  language  and  the  extensibility of FORTH, but  few  of  the
   restrictions of Pascal and Modula-2.

   C++ is an enhanced version of  the C language.  C++ includes everything
   that  is  part  of C and adds support for  object-oriented  programming
   (OOP).  In addition, C++ also contains many improvements  and  features
   that  make it a "better C", independent of object oriented programming.
   C++ is actually an extendible language since we can define new types in
   such a way that they act just  like the predefined types which are part
   of the standard language.

   If you just use C++ as a  better  C,  you  will not be using all of its
   power.  Like any quality tool, C++ must be used the way it was designed
   to  be used to exploit its richness.  Some of the new features  include
   encapsulation,   inline   function   calls,   overloading    operators,
   inheritance and polymorphism.  I am not going to explain what they mean
   here  as  that  would simply take me away from my purpose here, but you
   can refer to any  good  C++  book  or  the  C++  FAQ  (Item 7) for more
   information.


What do you need to get started?
--------------------------------

   The first thing you need is  a  compiler.   A compiler reads the entire
   program and converts it into object code, which is a translation of the
   program source code into a form that the computer can execute directly.


UNIX SYSTEM:

   Type cc at the %  prompt.   If  you  don't  get any error messages, you
   probably have a C compiler .  If you get an error message, try acc, gcc
   or  g++.   If  any  of  these don't work,  contact  your  local  system
   administrator and ask him/her to get you a C/C++ compiler.   GNU  C/C++
   compiler is available from a lot of anonymous ftp sites free of charge.
   Look  into  it.   (I've  got  g++  running  on my Linux box without any
   problems)

MSDOS/Windows/OS2/Linux (IBM COMPATIBLES):

   There are a lot of good compilers  available to you.  Microsoft Quick C
   and  Borland Turbo C/C++ are both good products for beginners.  You can
   buy both of them for  under  $50.00.   I  use  Microsoft  Quick  C  and
   MS-Visual  C/C++, and I prefer Quick-C for all my DOS programs as it is
   small, and yet very powerful.   Most  of  my  programming  is now on my
   Linux  PC with gcc/g++.  (If you want a great 32 bit operating  system,
   you should look into Linux.  E-mail me for details).  You can also  get
   the   DOS   port   of  GNU  C/C++  called  DJGPP  from  oak.oakland.edu
   /simtel/vendors/djgpp.

   The increased popularity of OS/2 and  it's latest incarnation Warp, has
   provided   programmers   with  a  wider  selection  of  compilers   and
   programming tools.  Still available for free is  the  GNU  gcc  package
   under  the  name  emx.   Emx integrates nicely with the Extended Editor
   included with OS/2.  It's  available on ftp.cdrom.com, hobbes.nmsu.edu,
   and  other  sites.  IBM provides the CSet++ 2.x, as well as a  smaller,
   less-expensive package on  CD-ROM  called  CSet++  First  Step.   Other
   popular  compilers  include  Borland C++ 1.0 for OS/2, and Watcom C/C++
   for OS/2 10.0, and CA-C++ for OS/2 from Computer Associates.


OpenVMS (VAX & AXP)

   If you're on a VAX, type  in  CC  to  check  and  see if you have a C
   compiler.  VAX C is not the best compiler around, but it certainly does
   the  job.   If  you don't have a C compiler, look into  the  GNU  C/C++
   compiler GCC.  You can get the VAX version of GCC from ftp.spc.edu  via
   anonymous  ftp.   If  on  a  AXP  system, you should have access to DEC
   C/C++.  Please contact  your  local  system  administrator  or computer
   consultant for more site specific questions.

Macintosh (Apple/PowerMac)

   There are three main  players  in  the  Mac  compiler market: MPW (from
   Apple),  THINK  C / Symantec C++ (both from Symantec),  or  CodeWarrior
   (from Metrowerks): THINK C is $225 (only a C compiler), while  Symantec
   C++  is  $375 (includes C and C++ compilers).  CodeWarrior comes in two
   versions: bronze and gold, at $199/299/399, respectively.  The Symantec
   C++ compiler (ver  8.0)  is  PowerMac  native.  Symantec and Metrowerks
   offer  academic pricing on their products which are substantially  less
   than the commercial prices.

   There have been  two  attempts  at  freeware/shareware Mac C compilers:
   Sesame  C  and  Harvest.   Harvest  C was an  ambitious  attempt  at  a
   production-quality  freeware compiler which was later abandoned by  the
   author.


Tutorials:
----------

1) Title:       A C tutorial.
  Filename:    C-LESSON.ZIP
  Author:      Christopher Sawtell.
  E-mail:      [email protected]
  URL:         ftp://garbo.uwasa.fi/pc/c-lang/c-lesson.zip

   This tutorial contains  a  complete  course  for  you  to learn the 'C'
   computer  language itself.  Some knowledge, of computers and the jargon
   is  assumed,  but  complicated  concepts  are  fully  explained.   This
   tutorial  is  geared  towards the UNIX operating system, but everything
   discussed here applies across all  platforms.   Most of the source code
   included  here compiles under all the platforms.  This is a good effort
   and is worth your time.  Updates to this tutorials are  posted  to  the
   USENET group comp.lang.c.

2) Title:       Coronado;s Generic C tutor v2.0
  Filename:    GENCSRC.ZIP
               GENCTXT.ZIP
  Author:      Gordon Dodrill
  E-mail:      --
  URL:         ftp://oak.oakland.edu/simtel/msdos/c/gencsrc.zip
               ftp://oak.oakland.edu/simtel/msdos/c/genctxt.zip


   This is one of the most complete tutorials out there.  Once again, most
   of the items covered here  are  apply  across all platforms.  There are
   some  items  discussed  here  that are  DOS  dependent.   The  tutorial
   includes a manual that covers all the aspects of the C  language.   The
   archive  also includes a huge collection of C code that is discussed in
   this tutorial.   The  best  way  to  learn  anything  is  by  practical
   application  and this tutorial does just that.  A payment of $10.00  is
   requested by the author if you  find  the  tutorial  helpful,  but  the
   payment  is  not  required.  I think you should send in the $10.00 as a
   lot of time and effort went into this project.

3) Title:       Thread An On-Line C Help File V 1.01
  Filename:    THREAD.ZIP
  Author:      Fran Horvath
  E-mail:      --
  URL:         ftp://oak.oakland.edu/simtel/msdos/c/thread.zip


   Thread is a C language help utility.  It was written by a member of the
   U.S.D.A.  Grad School faculty to help students learning the C language.
   Thread is a variable  record-length  database,  together with an index,
   that  enables  the  fast lookup and  display of  C  keywords,  standard
   library  functions,  and  other  items.   There  are  a  few  important
   functions missing from this help utility, but it is still a pretty good
   resource.  Give it a shot.

4) Title:       Collection of C-Snippets
  Filename:    SNIP9503.ZIP
  Author:      Bob Stout
  E-mail:      [email protected]
  URL:         ftp://oak.oakland.edu/simtel/msdos/c/snip9503.zip

   This  is  the  March  95   release   of  SNIPPETS  which  is  a  public
   domain/freeware portable C source code & instructional text.  According
   to  the  author,  the  1.6  MB archive  contains  over  400  files  and
   approximately 35% of it is PC-specific.  The rest of it  is  completely
   portable.  The PC-specific functions are system-level utility code with
   no multimedia or GUI code.  This archive has been tested on all popular
   PC  compilers  and  gcc,  SCO,  and HP/UX compilers where possible.  An
   eclectic  collection  containing  everything  from  macros  to complete
   cut-and-paste  C  code  solutions  &  utilities,  along  with  FAQ  and
   instructional files.

   There is a piece of code for  every single task starting with macros to
   complete  cut-and-paste C code solution and utilities, along with  some
   frequently asked questions and instructional files.  This archive is  a
   must for every programmer.  If you already have a copy of snip9404.zip,
   see   snpd9503.zip  which  includes  the  diff  needed  to  upgrade  to
   snip9503.zip.  Numerous bug fixes  and  enhancements  were made in this
   archive and 60 New files added.

   This is Public  Domain/freeware  created  by  the archivist, ex Fidonet
   C_Echo moderator and author, Bob Stout


5) Title:       COMP.LANG.C FAQ
  Filename:    FAQ
  Author:      Steve Summit
  E-mail:      [email protected]
  URL:         ftp://rtfm.mit.edu/pub/usenet/news.answers/C-faq/faq


   The FAQ (Frequently Asked  Questions)  is  a compilation of frequently-
   asked  questions  of  the  usenet group,  COMP.LANG.C  along  with  the
   answers.  Steve's put in a lot of work and this compilation  shows  it.
   I  found that the FAQ answered a lot of my questions.  I even learned a
   lot of new things  browsing  through  the  document.   I think this FAQ
   should  should  be  on  your  computer desk right  next  to  a  good  C
   programming book.  The FAQ is posted to  COMP.LANG.c  and  news.answers
   every month along with the diff version.


6) Title:       TUTOR v3.10
  Filename:    CTUTORDE.ZIP
  Author:      Gordon Dodrill
  E-mail:      [email protected]
  URL:         ftp://oak.oakland.edu/simtel/msdos/c/ctutorde.zip


   This is an educational learning tool which helps expedite the difficult
   process  of  learning  the  C  Programming  Language.   It  includes  a
   tutorial,  style  guide,  and interactive quiz program  all  integrated
   together in one program.  The tutorial covers both K&R version of C and
   ANSI C.  One of the biggest limitation of this tutorial is that  it  is
   only available for DOS computers.


7) Title:       Programming in C
  Filename:    CE.html
  Author:      Dave Marshall
  E-mail:      [email protected]
  URL:         http://www.cm.cf.ac.uk/Dave/C/CE.html

   This is one of the best C  programming tutorials out there on the World
   Wide  Web (WWW).  See tutorial #11 for more information on the web  and
   tools to access the web.  This tutorial  starts  out  with  some  basic
   ideas  and  then extends to some more advanced features of C.  With the
   popularity of the World Wide Web, items on the web servers are going to
   be very popular.  This is  really  a  great tutorial and worth checking
   out.   Some  of  the  items discussed here are  loops,  arrays,  string
   manipulation,  pointers,  dynamic  memory  allocation,  I/O,  UNIX,   C
   preprocessor  and  some  exercises.   While you're out there, check out
   Ceilidh, the online C tutoring system.



8) Title:       ANSI C for Programmers on UNIX systems.
  Filename:    love_C.ps.z, love_C.shar
  Author:      Tim Love
  E-mail:      [email protected]
  URL:         ftp://svr-ftp.eng.cam.ac.uk/pub/misc/love_C.ps.Z


   This is a really nice C  tutorial  geared towards people on UNIX system
   as  the  title would suggest.  This document introduces C by  providing
   sample programming tasks.  One of the good things about  this  tutorial
   is  that all the source code included is ANSI compliant.  This tutorial
   also includes programming exercises to  aid  or  gauge your progress as
   you  go through the material (answers included in back).  The  tutorial
   covers some of the  basics  such  as  functions,  pointers  and  string
   manipulation  followed  by some programming examples to apply the items
   you've just learned.

   There is also a section  on  memory allocation that illustrates the use
   and dangers of malloc.  The section on the Make utility helped me a lot
   as I really don't like make and makefiles.  The section of debugging is
   also  extensive and has some great tips.  The appendix of this tutorial
   also has a section of converting from K&R to ANSI C.  Really great  job
   and well worth the checking into.


9) Title:       Coronado Enterprises C++ Tutorial (v2.20)
  Filename:    CPTUTS22.ZIP
               CPTUTT22.ZIP
  Author:      Gordon Dodrill
  E-mail:      --
  Phone:       (505) 293-5464
  URL:         ftp://oak.oakland.edu/simtel/msdos/cpluspls/cptuts22.zip
               ftp://oak.oakland.edu/simtel/msdos/cpluspls/cptutt22.zip


   Just like its C counterpart, this  is  really  one of the best and most
   complete  C++ tutorial out there.  This tutorial is not for the  person
   just starting out in programming as C++ is not an ideal first language.
   But if you are familiar with C or any other programming language,  this
   tutorial  will  get  you started with C++.  All the source discussed in
   this tutorial is included and learning is really accelerated as you can
   compile the code while you  are  reading  about it.  This tutorial will
   assume  a  thorough knowledge of the C programming language and  little
   time will be spent on the fundamental aspects of the language.  Special
   attention has be devoted to explaining the newer additions as  provided
   by  the  ANSI-C  standard, as  many programmers are used to the old K&R
   school of thought.

10) Title:      COMP.LANG.C++ FAQ
  Filename:    FAQ
  Author:      Marshall P. Cline, Ph.D.
  E-mail:      [email protected]
  URL:         ftp://sun.soe.clarkson.edu/pub/C++/FAQ

   Wow!!!  That's really all I can  say about this collection of questions
   and answers for C++ and Object Oriented Programming (OOP).  This is the
   complete FAQ for the Newsgroups COMP.LANG.C++ compiled by Dr.  Marshall
   Cline.  I have been programming in C++ for a few months and am far away
   from  being  an  'expert', and this compilation helped  me  enormously.
   Once again, this is not for the person that is starting to  learn  C++,
   but  if  you've  already taken the first step, this FAQ is for you.  If
   you don't have ftp, you  can  also  receive  it via e-mail by sending a
   message  to [email protected] with the subject  `send
   C++/FAQ'.

   The C++ FAQ has been released as  a book called `C++ FAQS -- Frequently
   Asked  Questions'  by Addison-Wesley.  The book is a complete  re-write
   and contains about 5 times the  material  that  is  indexed  and  cross
   referenced.   Check out the book section for a review of the book.  The
   FAQ will still be  posted  in  the  Newsgroup comp.lang.c++, but if you
   find the FAQ helpful, you should really buy the book.


11) Title:      C++ on the World Wide Web
  Filename:    C++.html
  Author:      Marcus Speh
  E-mail:      [email protected]
  URL:         http://uu-gna.mit.edu:8001/uu-gna/text/cc/index.html

   This is one of  the  award  wining  courses  at  the 1st WWW conference
   (congratulations  Marcus.  great job).  One of the newest addition here
   is the Dorill C++ course converted to  HTML.   There  is  a  wealth  of
   information  on  C++  available on the World Wide Web (WWW).  The World
   Wide Web (WWW) is a  wide  area hypermedia information retrieval system
   that  gives the user universal access to a large universe of documents.
   One of the most popular to the Web is called Mosaic developed by  NCSA.
   Mosaic  is  an Internet based global hypermedia browser that allows you
   to discover, retrieve and display documents  and data from all over the
   world.   Global  hypermedia means that information located  around  the
   world is interconnected in an environment that  allows  you  to  travel
   through  the  information  by  clicking on hyperlinks-- terms, icons or
   images in documents that point to  other related documents.  Here's the
   URL (Uniform Resource Locator) for the C++ Virtual Course.

               http://uu-gna.mit.edu:8001/uu-gna/text/cc/index.html

   You might also want to connect  to  info.desy.de and browse.  I found a
   lot  of  great  items such as documents and sources on C++  and  Object
   oriented programming, Internet groups for discussions and questions  on
   C++,  discussion of Object-Oriented Literate Programming and many other
   postscript papers.

               http://info.desy.de/general/users.html


12) Title:      Programming in C
  Filename:    index.html
  Author:      Jutta Degener
  E-mail:      [email protected]
  URL:         http://www.lysator.liu.se/c/index.html


   This is really one of the best  collection of C related items out there
   on  the  World Wide Web maintained by the Lysator computer society,  an
   association of  computer  science  students  at  Linkoping  University,
   Sweden.   Here's a list of some of the items.  There is a great section
   on ANSI C, reviews of 3 books and a list of errata from 2 books.  There
   is a very interesting paper called `A development of the C language' by
   Dennis Ritchie that traces the origin of  the language we know and love
   today.

   There is a HTML version of  Kernighan's historical "Programming in C: A
   Tutorial"  from 1974 (that describes an early version of C, four  years
   before K&R.  WARNING: DO NOT USE THIS DOCUMENT  AS  A  TUTORIAL);  also
   included  are  the  "Ten  Commandments  for  C  Programmers  (Annotated
   Version)" and a HTML version of Steve Summit's comp.lang.c FAQ.

13) Title:      C++ Annotations (ver 3.3.3)
  Filename:    cplusplus.html
  Author:      Frank Brokken & Karel Kubat
  E-mail:      [email protected], [email protected]
  URL:         http://www.icce.rug.nl/docs/cplusplus/cplusplus.html

   This web based tutorial is  intended  for  knowledgeable users of C who
   would  like  to make the transition to C++.  This document presents  an
   introduction to programming in C++.  It  is  a  guide  for  programming
   courses  taught at State University of Groningen This document is not a
   complete C/C++ handbook, but  rather  serves  as  an  great addition to
   other  documentation sources.  The reader should take note of the  fact
   that an extensive knowledge of the C programming  language  is  assumed
   and required.

   This document continues where topics of the C programming language end,
   such as pointers, memory allocation and compound types which makes it a
   very good programming guide.  I  highly  recommend this tutorial to any
   individual who is really interested in becoming extremely knowledgeable
   on C++ and a proficient programmer.  Here is a listing of the chapters.

               1. Introduction to C++
               2. A first impression of C++
               3. Classes
               4. Classes and memory allocation
               5. Static data and functions
               6. Inheritance
               7. Polymorphism, late binding and virtuality
               8. Concrete examples of C++
               9. Templates

14) Title:      C programming reference 1.1
  Filename:    cref.html
  Author:      Martin Leslie
  E-mail:      [email protected]
  URL:         http://vinny.csd.mu.edu/martin/DOC/C/cref.html

   This is not an ordinary  C  language  tutorial,  rather  it is a great
   reference  guide for the C programming language.  As the author states,
   "I have found several C  tutorials  and  lessons  on  the  net  but  no
   reference  documents.   This is not an attempt to replace the many high
   quality books available, but does  try  to provide an on-line reference
   that can give answers to questions quickly and without hassle".

   Martin has put a lot  of  work  in  this  and the archive is definitely
   worth  checking  out.   One of the nicest item is the  `Function  Quick
   Reference'.  It is a summary of a lot  of  useful  functions  including
   ANSI  standard  functions,  Non  Standard  functions  from CONIO.H, non
   Standard UNIX functions,  user  written  functions  and variable length
   argument  lists  including the library, prototype, syntax  and  example
   programs.  Here's a sample.

                        FGETC/GETC FUNCTION 08-MAY-94

   fgetc and getc both read  a  character  from  a file (input stream) and
   have the same syntax.  They are for all intents and purposes the same!

       Library:   stdio.h

       Prototype: int fgetc(FILE *stream);

       Syntax:    ch = fgetc(file_pointer);
                  ch = getc(file_pointer);

          [IMAGE] example program.
          See also:

          getchar, fgets, gets
          getch, getche (non standard)


   And if you're really nice to him, he will give a really cool program to
   randomly change the root window  color  on  X Displays.  :) The program
   randomly selects a target color and then performs a basic interpolation
   to  move  from the current color to the target color.  When the  target
   has been reached, a new target is selected and the process is repeated.



Books currently being reviewed:
------------------------------

   If you have any thoughts or comments, please feel free to e-mail me at
   [email protected]

1.  C++ A Pratical Introduction by Brian Hahn (ISBN 1-85554-325-7)

2.  C++ For Dummies by Stephen R.  Davis (ISBN 1-56884-163-9)

3.  The Craft of  C:  Take  Charge  Programming  by  Herbert  Schildt (ISBN
   0-07-881882-6)

4.  C By Discovery by L.S.Foster (ISBN 1-881991-29-6)

5.  Teach yourself C++  programming  in  21  days  by  Jesse  Liberty (ISBN
   0-672-39541-0)


Books:
------


[1] "The C Programming Language" (2nd ed.)
   Brian W. Kernighan & Dennis Ritchie
   Prentice Hall ISBN: 0-13-110362-8

   This is the second edition  of  the  original Kernighan & Ritchie (K&R)
   text.   This  book is  commonly referred to as the New Testament as  it
   includes the modifications incorporated by  the  ANSI  standard,  while
   retaining  the  nature  of the 1st edition.  This book assumes that the
   reader  has  some  basic  programming  knowledge.   So  if  you're just
   starting  to program and C is the first language, this might not be the
   ideal book.  This is one of THE  BEST books  on  C  and  a  must  have,
   especially if you're starting your own little programming library.

   A good book to go along with K&R's "The C Programming Language" is "The
   C Answer Book" by Clovis L.  Tondo and Scott E.  Gimpel, Prentice Hall,
   subtitled 'Solutions to the  Exercises  in  The C Programming Language,
   second  edition  by  Brian W.  Kernighan & Dennis  M.   Ritchie',  ISBN
   0-13-109653-2


[2] "Programming in ANSI C" (Revised edition: 1994)
   Kochan, Steven
   SAMS Publishing ISBN 0-672-30339-6

   This book by  Steve  Kochan  is  absolutely  the  best  book for anyone
   starting  out programming in C.  This is an excellent introductory text
   with frequent examples and good text.  This book makes  no  assumptions
   about the particular computer system or operating system on which the C
   language  is  implemented.   This  books  is  written  for  novices and
   experienced programmers alike.  I  love  this book as the comprehensive
   'teach by examples' book can help you master the unique features of the
   C  language.   There is complete coverage of program looping,  decision
   making, arrays,  strings,  pointers  and  bit  operations  and  helpful
   end-of-chapter  exercises.   This  is the book I used to learn C and it
   really is a great book.  The  K&R  book is really great as a reference,
   but not as the first book.


[3] "Expert C Programming: Deep C Secrets"
   Peter Van Der Linden
   SunSoft Press. (ISBN 0-13-177429-8)


   Peter has written one of the  greatest  books  to hit the computer book
   stands  in a long time!  This is not your typical C book, but is rather
   a fun book to read.  As I told Peter,  most  C  programming  texts  are
   really boring as all they do is describe the functions, give a abstract
   example  and  then  move  onto something different.  This book is chock
   full of real world C stories and  folklore, including a story about the
   C  bug that brought down the AT&T network.  I found the tongue-in-cheek
   attitude and real world examples/stories very, very interesting.   Run,
   don't  walk,  down  to  your  local  store and buy this book.  I really
   really loved this book, and I read most of it in one sitting.  There is
   also a great introduction to C++  for  C  programmers that will get you
   started with C++ and Object-Oriented programming.  This book is not for
   beginners, but is a great second book on C.

   Expert C Programming is also ideal for  those C programmers who want to
   move  to C++.  According to the author, the book puts the "fun" back in
   "functions" :)



[4] "C: The Complete Reference" (2nd ed.)
   Schildt, Herbert.
   Osbourne/McGraw-Hill.  (ISBN 0-07-881538-X).

   This is a pretty good C language  reference book.  I am more partial to
   the Microsoft C Bible as a reference but this is not a bad book at all.
   If  you're  a beginning C programmer or a seasoned pro, the answers  to
   most of C questions can be found in this one-step resource.  This  book
   presents  an  extensive  summary of C library functions defined by ANSI
   and many common extensions  including  UNIX.

[5] Absolute Beginner's Guide to C
   Perry, Greg
   SAMS Publishing. ISBN 0-672-30341-8

   This is a absolutely  beginner's  book.   If  you have never programmed
   before,  this book is for you.  No knowledge of any programming concept
   is assumed.  I like the fact that this book talks to you at your  level
   without  ever talking down to you.  This book does not try to overwhelm
   the  beginners  with  a  lot  of  technical  details  while emphasizing
   introductory  principles.  If you've never programmed, this is the book
   for you.  If you are familiar with programming, I would suggest  either
   'The  C programming language' by Kernighan & Ritchie or 'Programming in
   ANSI C' by Kochan.

[6] Microsoft C Bible. 1990 (2nd ed.)
   Waite Group Staff.
   Howard W. Sams & Company. ISBN 0-672-22620-0

   This book is a must for  every programmer, especially those who program
   in  the  DOS  environment.   The Bible  organizes  and  simplifies  the
   information contained in Microsoft's C  library.   Each  function  page
   gives the purpose, syntax, example call, includes, common uses, returns
   and  examples.  The book also has compatibility check boxes, so you can
   be sure your program compiles with  the Microsoft C v5.0-7.0, Microsoft
   Quick C, Borland Turbo C and UNIX system V compilers.

[7] Programming C in 12 Easy Lessons
   Greg Perry  ISBN:0-672-30522-4
   Sams (1st edition, 4/94)
   Reviewed by: Don Lockhart ([email protected])

   In a nutshell: This book is  very  well  thought out.  It is very clear
   and  easy to follow for the new user.  It categorizes information  into
   Notes, Tips, Warnings, and starts each lesson with an overview  of  the
   concepts to be presented as well as a review of them at the end of each
   lesson.   Sidebars are also presented with useful relevant information.
   When new terms appear a definition  of  them appears in the page margin
   to  further  explain their usage.  Each lesson ends with some  practice
   "homework" and "extra credit" work to further enhance what you've  just
   learned.   In  the front of the book, there's a tear-out reference card
   with C functions, operators etc on one side, and Turbo C++ editing keys
   and functions on the other side.   In  the  back of the book there's an
   offer for Borland C++ 4.0 or full blown Turbo C++ at "discount rates".

   All lesson coding is also pre-typed  on the included diskette.  Also on
   the  disk  you'll  find the answers to all the homework as  well  as  a
   "lite" version of Borland's Turbo C++ compiler.  Differences from  ANSI
   C to C++ are always noted.

   I have been "threatening" to learn C  for a couple of years.  This book
   has  quickly  taken me from the sidelines to diving in head first,  and
   actually gotten me excited about it.  The info is well presented, and I
   haven't come up with any questions yet that I have  not  been  able  to
   find  the  answer in the book.  I'm not 100% sure, but I believe when I
   was at the book store there  is  also  a  sequel to this book that even
   gets into more of actually developing applications using C.

[8] Teach Yourself C++ 1992
   Herbert Schildt
   Osborne McGraw-Hill. ISBN 0-07-881760-9

   Teach Yourself C++ is another  great  book  from Herbert Schildt who is
   more  popular for his great C books.  This book is especially  designed
   for programmers who already know how to  program  in  C.   Based  on  a
   15-minute lesson format, this book includes a lot of exercise and skill
   checks  to  make  sure your programming abilities grow by each chapter.
   This book is  really  the  perfect  introductory  guide  for anyone who
   already knows how to program in C.

   According to my sources, this book  is currently under revision.  There
   are  several items missing from this book as it was written before  C++
   was finalized.  I still think it is a pretty nice book.


[9] The C++ Programming Language (2nd edition)
   Bjarne Stroustrup
   Addison Wesley (ISBN 0-201-53992-6)

   Bjarne Stroustrup is the designer of C++  and has written 2 great books
   on C++.  This book is divided into three parts: The first part provides
   a  tutorial introduction to C++.  The second part presents a discussion
   of design and software development issues arising  in  connection  with
   the use of C++ and the third part is a complete reference manual.  With
   the  popularity  of  C++, several independent distributions of C++ have
   come  forward,  but  the  book  discusses   'pure  C++;'  that  is,  no
   implementation  dependent extensions are used.  I have been programming
   in C++ for a while and yet found this book very helpful.   One  of  the
   best  way  to learn a programming language is by writing small programs
   relevant to the item you study.  There are exercises at the end of each
   chapter to test/apply  what  you  learned  in  that particular chapter.
   This  wasn't  the book I used to learn C++ and I only recently  got  it
   from DEC [DEC ships this book with their C++ compiler in lieu  of  real
   documentation :)], but I wish I had gotten it sooner.  This is really a
   great  book and worth every penny.

   There is also a book called  "The  C++ answer book" by Tony L.  Hansen.
   (Addison-Wesley  ISBN # is 0-201-11497-6) and it contains the solutions
   to the problems in "The C++ Programming Language" by Bjarne Stroustrup.



[10]Using Visual C++
   Shammas, Namir
   Que Corporation  ISBN: 1-56529-626-5

   A lot of people have e-mailed me asking for recommendation for a Visual
   C++/MS-Windows programming book and  the  one I use/recommend is 'Using
   Visual  C++'.   This book is aimed at readers who are already  familiar
   with C++ and Windows.  This book covers many  programming  topics  that
   use  C++  and the Microsoft Foundation Classes (MFC).  This book starts
   with an overview of  the  Visual  C++  workbench and the MFC hierarchy.
   The  book  also  discusses the AppWizard, ClassWizard  and  App  Studio
   utility.  This book really lets you take  full  advantage  of  the  C++
   compiler and all the utilities that come with it.  Microsoft provides a
   lot of great information with the compiler package, but I found it hard
   to  look  through  20 different manuals to find some basic information.
   By the time you finish this book, you  will be ready to create your own
   MS-Windows  applications.   Windows programming is pretty complex,  but
   this comprehensive guide shows you efficient and proven  techniques  to
   build powerful applications.

   Another great  book  is  'Visual  C++:  A  Developer's  Guide'  by Alex
   Leavens.  (ISBN 1-55851-339-6) This book explores the comprehensive set
   of  programming  tools that come with Visual C++.  This book shows  you
   how to take advantage of MFC, OLE 2.0, add sounds  to  various  Windows
   systems events and creating icons, cursors and bitmaps images.



[11]C++ Primer  (2nd edition)
   Lippman, Stanley B
   Addison Wesley  ISBN 0-201-54848-8

   The C++ Primer is a great book and  will make learning C++ a joy.  This
   really  is  one of the best books C++ book out there, but it assumes  a
   lot of familiarity with programming concepts and a  proficiency  in  C.
   Everyone  I know who uses C++ recommends this book very highly.  If you
   are interested in  learning  more  about  Object  Oriented Program, you
   might consider buying "Object Oriented Design" by Peter Coad and Edward
   Yourdon" (ISBN 0-13-630070-7)


[12]"C++ FAQs: Frequently Asked Questions"
   Marshall P. Cline and Greg A. Lomow
   Addison-Wesley ISBN 0-201-58958-3

   When I first heard  about  the  book,  it  thought  it  would just be a
   reprint  of  the  electronic version of the FAQ, but I  was  pleasantly
   surprised when I got my hands on the book (Thanks Deborah) This  is  no
   mere  reprint.   This  is a *great great* book that contains answers to
   about 500 questions on programming, design, analysis and testing.  This
   book is not for beginners, but for programmers who have figured out the
   syntax of the language, and are looking to implement them.  If you have
   questions like  "What  is  a  class  invariant?",  "How  should  I  use
   exceptions?",  "What happens when a destructor is executed?", then this
   is the book for you.

   This is a very practical book  that contains answers to some real-world
   programming  questions  that  will  really help  anyone  involved  with
   software development.  I just wish I had this book around  when  I  was
   taking  my  C++  classes.  Unlike other books, this book contains about
   200 complete program rather than code  snippets that leave you guessing
   about the implementation.  This book is a definite gem and should be in
   every  single  programmers  library.  Go out and buy 2 copies  of  this
   book: One for the office and one for the nightstand at home.


[13]Learn C++ on the Macintosh
   Dave Mark
   Addison-Wesley ISBN 0-201-62204-1

   This book comes  with  a  customized  version  of  Symantec C++ for the
   Macintosh.   In addition, there is a coupon for obtaining the  complete
   version of Symantec C++ at a much reduced  price.   I  would  recommend
   this  book for those who are just beginning to program in C++; however,
   it does assume at least  a  working  knowledge  of C.  There is a quick
   review  of  C at the beginning.  Dave Mark also has a book 'Learn C  on
   the  Macintosh'.   It  has  the  same  great  style  and  comes  highly
   recommended.  Thanks Lizann Bolinger.


[14]Effective C++
   Scott Meyers
   Addison-Wesley ISBN 0-201-56364-9

   This is just a  great  great  book  on  C++  and  is  a  must for every
   programming  library.   The book is a listing of things which you  must
   get right if your program is to be  safe  and  reliable,  and  a  clear
   description  of what it means to get them `right.' The book raises some
   very interesting issues that every  programmer faces.  C++ provides the
   structure  and  the means to talk about them in a concrete way  and  to
   program them explicitly.

   The author is working on another C++  book, and the title will be "More
   Effective  C++.   " Here's more information that the author  posted  in
   comp.lang.c++.  If all goes according to  plan,  "More  Effective  C++"
   should be available around the end of September.

   As for  the  book  itself,  "More  Effective  C++"  will  use  the same
   Item-based  organization  that I used in "Effective C++," but  it  will
   cover all new material, and it will not assume that readers  have  read
   "Effective  C++."  (If  they  have,  so much the better, but it's not a
   prerequisite.) As such, "More  Effective  C++"  isn't really "Effective
   C++, Volume 2," though it can be read that way, if you like.

   Like "Effective C++," "More  Effective  C++"  will  cover  a variety of
   topics.   One  of those topics will be efficiency.  The  current  draft
   contains at  least  12  Items  on  that  topic  alone,  and  efficiency
   considerations  comprise a thread that winds through many of the book's
   other Items, too.

[15]Scientific and Engineering C++: An introduction with advanced techniques
   and examples
   John J. Barton and Lee R. Nackman
   Addison Wesley ISBN 0-201-53393-6
   Reviewed-by: [email protected] (Ajay Shah)

   A plethora of books on C++ exists;  the  above promises to be a book on
   numerical computation in C++.  The authors are both from T.  J.  Watson
   Research Center and they do numerical computation for a living.

   Before we get to what the book offers, we should clarify what it is not
   : It is not a Numerical Recipes.   It does not discuss the mathematical
   ideas underlying numerical algorithms, and it presents no library which
   you can start off using from day 1.

   Instead the authors are attacking a different problem, that of applying
   OOP in its C++ incarnation  to  do  numerical computation.  The typical
   reader is expected to be someone who is currently getting his work done
   in  C  or  Fortran  and  would like to migrate  to  C++.   The  authors
   literally start from scratch in this enterprise; they have two versions
   of chapter 1, one aimed  at  migrants  from  C  and  another  aimed  at
   migrants from Fortran.

   Does the book succeed  in  these  objectives?   For  the major part, my
   answer would be Yes.  I will address two issues here:

o  Teaching C++ and OOP

   This is done reasonably well.   However,  I  expect anyone who actually
   plunges  into C++ seriously will want the primary two books on C++  too
   (i.e.  Stroustrup and Lippman).  They do a  good  job  of  the  overall
   question  of applying OOP to scientific computation, but I have a guess
   that you would come up with a lot of this yourself, and that your sense
   of taste may differ from theirs to some extent.

o  Practical advice aimed at numerical computing applications

   I felt the book does really well on  this score.  They take up a series
   of  problems  and give us the benefit of their good taste in coming  up
   with designs.  The last chapter does maximum likelihood using automatic
   differentiation to obtain derivatives -- this is a  lovely  theme  that
   has not been much explored in the literature.

   One of the big questions on the  minds of anyone thinking about using C
   or  C++  for numerical computation is the existence of  libraries  like
   linpack; they are incredibly ugly on the score of software engineering,
   but they are incredibly well done on debugging and efficiency.  Between
   f2c and C++, it appears quite possible to hide these ugly (but working)
   beasts under nice modern interfaces.

   This issue is really important at  a  practical  level, and so far I've
   only  seen  net.wisdom  on the subject.  The authors deal  with  it  in
   detail.  It would have been awfully nice if they had just  given  us  a
   full  C++ view to lapack :-) but their focus is on ideas, not on giving
   blackboxes of code.

   All the source code of the book is on the net.

   I'm personally at the stage of  having  browsed  in C++ for a while now
   but  not  having  taken the plunge of fully leaving C yet.   This  book
   feels very useful to me at this point in my transition.


[16]C, A Software Engineering Approach
   Peter A. Darnell & Philip E. Margolis  ISBN:0-387-97389-3 & 3-540-97389-3
   Springer-Verlag
   Reviewed by: Klaas Teschauer ([email protected])

   This is the book which  was  used  in  my C course.  When I started the
   course  I  went to my local book shop and digged through the  available
   books about C.  This book was recommended by our teacher,  but  it  was
   rather  expensive  and, if possible, I wanted to avoid the expense, But
   alas, I finally settled for  it,  because it was the most comprehensive
   and  complete  book on offer and it obviously contained many  tips  and
   hints not available elsewhere.

   The book is totally  platform-independant,  and  covers all features of
   the  language  in detail.  It is written for someone who already  knows
   another programming language;  as  it  is  an  arduous  task  to  learn
   programming  with  C.   It  covers ANSI C as well; but the examples are
   written in K&R C.  (BTW, here  in  Germany  we sometimes expand this to
   "Knall  und  Rauch C", which means "Bang and Smoke C"  when  translated
   literally :).  )

   Apart from the explanation of the syntax and semantics of C and how the
   constructs are actually used,  the  book offers numerous so-called "Bug
   Alert"  or "ANSI Feature" boxes, which point to common coding errors or
   explain relevant features of the ANSI Standard, respectively.   At  the
   end  of each chapter a number of excercises are provided.  Furthermore,
   the Appendix contains a complete reference  manual for the ANSI runtime
   library  and  a number of concise discussions like differences  between
   ANSI and K&R or reserved names and the like.  The last regular  chapter
   is  an  excellent introduction into software engineering issues.  As an
   example serves a  project  for  developing  a  C  interpreter (well, it
   implements only a subset) and the complete source code of which is also
   provided  in the appendix.  It is in my opinion an outstanding book and
   worth every dollar.


[18]Windows++
   Paul Dilascia  ISBN:0-201-60891-X
   Addison-Wesley
   Reviewed by: Klaas Teschauer ([email protected])

   This book is not  an  introduction  to  C++,  but  it provides a breeze
   through  the  most  important  features for C  programmers.   The  book
   describes the actual process of the development of a C++ class  library
   for  Microsoft  Windows 3.1.  It is a book about programming Windows in
   the first place, but I  learned  a  lot  from it how to design reusable
   classes  and  code.   You still need another  Windows  introduction  or
   reference manual like the Petzold(*).  Although it is stuffed with code
   snippets, it is fun to read it, because the author  writes  in  a  more
   colloquial  style.   The  language  is like what he would have actually
   said to the reader if he and  the  reader were sitting in front of a PC
   and the author would explain it.  Examples:

   ...  It's been a long chapter (I warned you), ...

   ...  Do I really have to mess with  blocks and locks and heaps and free
   chains and all that low-level stuff?!  Yecch!!  The operating system is
   supposed to do that; OO programmers don't DO memory management!  ...

   ...  Since you have your OOP cap  on  (if not put it on now!), a little
   light bulb should go on in your head that says application object!  ...

   The book is divided into chapters  roughly along the different parts of
   the  Windows API (GDI, etc.) that are encapsulated.  Usually the author
   starts out with describing the implementation of  a  small  application
   and  then  tries  to  extract all reusable code from the application in
   order to put it into the  library.   He not necessarily follows the one
   true  path  recommended by Microsoft, but tries to make the library  as
   useful as possible  for  the  applications  that  base  on  it.   Where
   necessary,  the  book  goes into reasonable details about Windows.  The
   full source code of the library and of the applications developed along
   the way is supplied in  the  appendix, plus makefiles for Microsoft and
   Borland  C/C++.   The sources are also available on diskette  from  the
   author.  During the course of the book,  he  also  provides  hints  for
   die-hard  C  programmers  that  don't  want  to  migrate to C++, how to
   implement the discribed features in pure C.

   I had a lot of fun just  reading  it  like a normal book and enjoyed it
   very  much.  The Windows++ library would in my opinion be very  useful,
   if it had not a serious deficiency.  The part that covers the GDI  just
   encapsulates   and  repackages  its  functionality,  which  is  clearly
   insuffcient for larger apps.   IMO,  for  the  development  of a modern
   Windows  app a good graphics library is essential.  But the book is not
   to blame  because  its  stated  goal  is  to  describe  and  teach  the
   development  of  reusable class libraries and does so at the example of
   Windows class library.   Windows  has  the  advantage  of being popular
   enough and of allowing it to define the task sufficiently precise.

   I doubt that the author will  provide  an update for Windows 95, but as
   long  as  the  most  recent  Windows version at any  time  is  not  too
   different from Windows 3.1, it will still be useful.

   (*) Charles Petzold, Programming Microsoft Windows 3.1, 1992
       published by Microsoft Press


[19]C++ How to Program
   H.M. Deitel & P.J. Deitel
   Prentice Hall ISBN ??
   Reviewed-by: David M. Botters ([email protected])

   This is basically a college text  book,  but  is available in most book
   stores  with  a  decent  section for computer  programming.   The  book
   assumes no previous knowledge of C or programming, and is designed with
   a beginner in mind.

   It makes the claim at  the  outset  that  C++ is difficult and makes no
   pretense  that  you can learn Windows C++ in 20 minutes, like  so  many
   other books on the market today.  It provides a very  basic  intro  and
   moves along at a good clip covering most everything you need to know.

   After buying so many of the Programming in 20 Minutes type books, I was
   happy to see this book.  It is definately  a good choice for one who is
   seriously about learning C++ from the ground up.

[20]Safer C, Developing Software for High-integrity & Safty-critical Systems
   Les Hatton
   Publisher  ISBN
   Reviewed-by: Clive King ([email protected])

   Software is now an integral part of most spheres of life and the future
   can only see this trend increase.   The complexity of software required
   to  enable  the  technologies now exceeds that of any  other  man  made
   construction.

   How many times have  you  found  that  some unexplained behavior in the
   program  you were writing was a result of a simple error, maybe using a
   == instead of a = in an assignment statement!  The  programmer  writing
   the code that controls the landing gear of the next plane you fly on is
   also  human  and  is  therefore  capable  of  making  the same sorts of
   mistakes as you.  Agree?  If not  there  is a very bright career in the
   safety  critical  software  development business or you are  not  being
   totally honest with yourself.

   Safer C attempts to  shed  light  on  improving the quality of software
   constructed  for high-integrity and safety critical systems.  The  book
   concentrates on the process of developing  software  and  the  language
   issues  which  effect software quality.  It rightly does not attempt to
   address the issues of specification and design.

   The use of C, which is well known  for its many traps and pitfalls, may
   seem  a  curious choice to some.  The choice is founded on the  authors
   observation that C has been in used for a number of years,  C  programs
   including  UNIX  have  been ported between a multitude of platforms.  C
   has been misused in a multitude of ways  and the problems of C are very
   well documented.  C is a small, standardized language and a subset of C
   which  eliminates the language feature which may bring problems can  be
   described.  The most important feature of using C in the development of
   high-integrity and safety critical systems and a recurring theme of the
   book is that better tool support for finding potential coding  problems
   and language misuse is currently available for C than other languages.

   The case presented for C is  strong,  but by the same argument the case
   for  Ada  is  worth  considering if using  best  current  practice  and
   appropriate tool support are too much effort to  overcome  for  reasons
   associated  with the management of a project and programmer psychology.
   A better alternative  I  am  sure  is  to  prevent  by  law such people
   participating in projects whose product may be used in a situation when
   human life may be threatened.  That day is getting closer.

   The underlying  theme  throughout  the  book  is  to identify dangerous
   practice and ruthlessly eliminate it via the use of appropriate methods
   and  tool  support.   Much  useful material is  presented  on  software
   complexity and metrics, testing strategies, quality procedures such  as
   ISO9001, Capability Maturity model and Total Quality Management.  Where
   this  book really excels is in describing the potential problems areas,
   there severity, how they can be  detected  and manage there use in code
   by either forbidding use or a strategy for safe use is given.

   The book justifies its self in  a chapter devoted to population studies
   of  C programs where software from a wide range of application  domains
   is analyzed for faults and transgressions from  programming  standards.
   Also  presented  are  the  results  of a study into the complexity of a
   range software.

   Formal methods were one of the great  white hope in the 1980's, but the
   many software developers view formal methods as a smoke screen which is
   loaded  with  hype.  Rightly Hatton points out that formal methods  are
   another way of thinking about program design and  construction  through
   the  medium  of  mathematics.   14  pages  are  spent discussing formal
   methods.  What exists is very  illuminating  to those with no knowledge
   of  formal methods and there application to producing C programs.  Some
   consideration of how to develop substantial systems in C from a  formal
   specification,  rather  than just considering small examples would have
   been useful.

   Hatton's humor makes the book  enjoyable  to  read, though at times you
   wonder  how  such  a  serious subject can generate  such  a  stream  of
   antidotes.  The author sometimes gives the impression  of  writing  the
   book  out  of  a  passion  for  self  preservation, instead of the more
   mundane reasons.  Hatton  digresses  to  talk  about  the importance of
   structure in music and architecture and manages to make coherent use of
   diverse  examples such as Mozarts's 40th Symphony, Jimi Hendrix and the
   UNIX diff program to illustrate the importance of refinement.

   After reading the book, I concluded that  given a choice of flying in a
   plane  with software written using best current practice in C, C++,  or
   Ada, I would choose the plane that used C software.  If the emphasis is
   not placed here on best current practice, I might just stay at home.

   Safer C should be required reading for  anyone who intends to write a C
   program  outside  a classroom, anyone who intends to write code  for  a
   high-integrity or safety-critical system  and  anyone  who  intends  to
   manage  a project that has high-integrity or safety-critical element or
   uses C.  I would also recommend  it  to  anyone who is trying to decide
   which language to use on a project.

   I could go into far more  detail  about the good sense the book extols,
   but  if developing software is your business, can you really afford not
   to read it?


Conclusion:

   C and C++ are great  programming  languages that can make programming a
   lot  of fun.  One of the best ways to learn is by taking a  programming
   class.  See if you can take a class at your school, or take a class  at
   night school.  Programming in C/C++ is a skill that could end up saving
   you your job or help you get a better job.  I hope these tutorials help
   you in your quest to learn the C and C++ programming language.


Acknowledgment:
---------------

       Steve Summit            [email protected]
       Lizann Bolinger         [email protected]
       Blake Sobiloff          [email protected]
       Alex Wu                 [email protected]
       Ian Jackson             [email protected]
       Peter Vanderlinden      [email protected]
       Robin Schogol           [email protected]
       Marcus Speh             [email protected]
       Jutta Degener           [email protected]
       Joe Dougherty           [email protected]
       Ajay Shah               [email protected]
       Sonia Hamilton          [email protected]
       Klaas Teschauer         [email protected]
       Clive King              [email protected]
       Richard Grubb           [email protected]
       Lincoln Abbey           [email protected]
       Scott Hankin            [email protected]

---------
              * List of C tutorials   Last Update: 08/01/95 *
      * Compiled By:  Vinit Carpenter -  [email protected] *


   Note that this document is provided  as  is.   The information in it is
   *not* warranted to be correct; you use it at your own risk.

o   The LEARN C/C++ TODAY  List  is  Copyright  1994 by Vinit S.  Carpenter
   ([email protected]).   It may be reproduced and distributed  in
   whole or in part, subject to the following conditions:

o   This  copyright  and  permission  notice   and  the  paragraph  in  the
   introduction  about  the frequency of updates must be retained  on  all
   complete or partial copies.

o   Any translation or  derivative  work  must  be  approved  by  me before
   distribution.  Email me - I'll will be happy to oblige !

o   If you wish  to  charge  for  non-machine-readable  copies  you need my
   approval  before  distribution.   Note  that this  restriction  is  not
   intended to prohibit charging for the service of printing or copying  a
   document supplied by your customer.

o   If  you  distribute  partial  copies  of  this  list,  instructions for
   obtaining  the  complete  version  must be included, and  a  means  for
   obtaining a complete version free or at cost price provided.

o   Exceptions to these rules  may  be  granted,  and  I  shall be happy to
   answer  any questions about this copyright --- Simply e-mail me.  These
   restrictions are here to protect the contributors, not to restrict  you
   as educators and learners.

o   Vinit Carpenter asserts the  right  to  be  identified as the author of
   this  work, and claims the moral rights of paternity and integrity,  in
   accordance with the Copyright, Designs and Patents Act, 1988.

-----------------------------------------------------------------------------
Vinit S. Carpenter        Marquette University      [email protected]
-----------------------------------------------------------------------------
    Author of the INTERNET-MENU for OpenVMS and LEARN C/C++ TODAY List
                      Moderator: COMP.BINARIES.IBM.PC
                         * Email me for details *
    <a href="http://vinny.csd.mu.edu"> My Personal Linux Web Server</a>
-----------------------------------------------------------------------------
                 * Ayrton Senna daSilva - Rest In Peace *
-----------------------------------------------------------------------------
Geek Code:      GE d? H S+:+ g+ p? au+ a26 w++ v C++++ UL++++ P++ L+++ 3-
     E--- N+++ K--- W--- M-- V$ -po+ Y+ t+++ 5- j tv+++ b+++ D++ B---
                         e- U--- h++ f? r n--- y*