From: tim@microware.com (Tim Wilson)
Subject: Re: HELP ON C BOOK
Organization: Microware Systems Corp., Des Moines, Iowa
Date: Wed, 11 Nov 1992 18:36:16 GMT

In article <BxBusy.Ept@nic.umass.edu> jeff@titan.ucc.umass.edu (DarkShadow) writes:
>In article <1992Nov7.020947.6467@usl.edu> cs460129@ucs.usl.edu (Martinez Velez Jose Carlos) writes:
>>I'm trying to learn c and I wonder if anyone out there knows a good to 
>>learn c. I already know pascal and modula-2, so if anyone knows of a book
>>relating any of this language to c, please sent me e-mail...
>>
>>
>>       E-mail: cs460129@ucs.usl.edu
>>                      or
>>                  fjl0014@usl.edu
>>
>>
>I would be interested in this info as well.  If anyone would like to
>include my name on their mailing list, that would be great.  Thanks a
>lot.
>
>  -Jeff
>
>-- 
>Jeff Zabek				email:  jeff@titan.ucc.umass.edu
>Computer Science Department			gencon07@titan.ucc.umass.edu
>University of Massachusetts


Well, since I have already mailed this to about 5 other people, I
decided to post it.  This is a compilation of replies from when people
asked for good books on this news group.  Unfortunately, I do not have
much knowledge with most of them, so I can't really recommend one over
another (Except K&R of course :-)).  I can't claim any sort of
completeness, this was just as people suggested books, I added it(them)
to the list.  In case of duplicate entries, I merged the two together. 
There were several that had several recomendations (sorry, didn't keep
the number of recomendations per book).  By the way, each post is
seperated by a '--'.  Any way, here is the list:

Binary Trees:
    Data Structures and Program Design in C
    Kruse, Leung, Tondo
    Prentice Hall
    It's a rewrite of Kruse's "Data Structures and Program Design",
    originally in Pascal. 

    Data Structures Using C
    Tenenbaum, Langsam, Augenstein
    Prentice Hall

Pascal to C experience:
    Algorithms+Data Structures = Programs
    Wirth
    Prentice Hall

--
"Using ANSI C under UNIX" & "C the Complete Reference"  both from McGraw Hill

"Programming with C" by Byron Gottfried

"Practical C Programming" by Steve Oualline
--

David Spuler, James Cook University of North Queensland, Australia
Author of "Comprehensive C", Prentice-Hall, 1992, pp416, ISBN  0-13-156514-1
INTRO TOPICS: types, operators, structures, strings, fns, ptrs, files etc etc
ADVANCED TOPICS: efficiency, debugging, style, portability, large programs
  A book which is intended for experienced programmers and covers both
  introductory issues and advanced issues - therefore it should wear
  well with C experience. 

It's contents are:

	PART I: The C Language
  1 "Introduction to C"
  2 "Variable declarations and types"
  3 "Operators"
  4 "Control statements"
  5 "Structured types"
  6 "Strings"
  7 "Functions"
  8 "Pointers"
  9 "Input and output"
  10 "File operations"
  11 "The preprocessor"
  12 "Standard library functions"

	PART II: Advanced Issues
  13 "Large programs"
  14 "Functions and pointers revisited"
  15 "Efficiency"
  16 "Debugging techniques"
  17 "Program style"
  18 "Portability"
  19 "UNIX systems programming"

--
Victory at "C"

--
C: Step-by-Step

--
_Compilers: Principles, Techniques, and Tools_ by Aho, Sethi & Ullman (aka
  "The Red Dragon Book").  Chapter 3 is all about regular expressions, and
  how to construct their associated DFAs. (ISBN 0-201-10088-6)

_Introduction to Automata Theory, Languages, and Computation_ by Hopcroft
  and Ullman.  This is probably one of the canonical theoretical works
  in the field of membership recognition and computability.  This covers
  such important results as the pumping lemma, and the Rabin-Scott theorem.
  (ISBN 0-201-02988-X)

--
Waite Group's 'C Primer Plus.'
  It is pretty much geared toward the beginning C programmer, but
  doesn't just skim the surface like most beginner books do.  It is the
  book I used to learn C programming. 

--
'Teach Yourself C'

--
"C by Dissection" By Al Kelley and Ira Pohl

--
"Theory and Problems of Programming With C" by Byron S.  Gottfried.  It
is published by Mc-Graw Hill under Schaum's OutLine Series.

--
Title: C Style, Standards and Guidelines
Author: David Straker
Publisher: Prentice-Hall
Date of publication: 1992
Pages: 231
ISBN: 0-13-116898-3
Contents: Part 1 : Basics
            1.  Standards
            2.  Psychological factors
            3.  General principles
          Part 2 : Commenting and Naming
            4.  Commenting
            5.  Naming
          Part 3 : Layout
            6.  Code layout
            7.  File layout
          Part 4 : Usage
            8.  Language usage
            9.  Date usage
            10. Programming Usage
          Part 5 : Implementation
            11. Implementing standards
          Appendix A : Example standard

--
                            INSTRUCTIONAL BOOKS
                                    ---


The following three texts are written for experienced  programmers,  or  at
least for people who already "think" like programmers.
                                    ---


[ ] "The C Programming Language" (1st ed.)
    Brian W. Kernighan & Dennis Ritchie
    1978, Prentice Hall ISBN: 0-13-110163-3

    This was the first, and for many years the only, text on C.  Written by
    the  authors  of  the  language,  it  was  the  cornerstone  of early C
    development and is still humorously referred to as "The Old Testament."
    Although  it is available in many bookstores, it is now drastically out
    of date.  The  only  reasons  for  purchasing  it  at  this  point  are
    historical  interest, or a job which requires maintaining some very old
    software.


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

    This ("The New Testament") is the updated version of the  original  K&R
    (Kernighan  &  Ritchie)  text,  and  can  be distinguished by the words
    "Second Edition" and "ANSI C" on the cover in  red.   It  includes  the
    modifications  incorporated  by  the ANSI standard, while retaining the
    nature of the 1st edition.  If you are building a library of  C  books,
    this is the first one you should get.


[ ] "C A Reference Manual" (3rd ed.)
    Samual P. Harbison & Guy L. Steele Jr.
    1991, Prentice Hall.  ISBN: 0-13-110933-2

    This text is widely used in industry as both a  text  and  a  reference
    manual  for  C  programmers.   It is somewhat more verbose than the K&R
    book, and also makes an effort to cover both ANSI and "traditional"  C.
    A  particularly  good  point  of  this book, in my opinion, is that the
    authors point out concerns relating to C implementations for  different
    computers  or  operating  systems.   It  also has a section on the ANSI
    standard library functions.  If you are new to programming,  this  text
    might be a bit overwhelming.

The remainder of the books  in  this  section  are  oriented  more  towards
instruction, and less experienced programmers, than the above three titles.
                                    ---


[ ] "C A Software Engineering Approach" (2nd ed.)
    Peter A. Darnel & Phillip E. Margolis
    1991, Springer Verlag  ISBN: 0-387-97389-3

    Despite a few misprints, this is an excellent textbook  for  C.   Major
    differences  between ANSI and Pre-ANSI C are highlighted in large, hard
    to miss boxes.  Also highlighted in boxes are common bugs which afflict
    both  experienced  and  inexperienced  C programmers.  These boxes then
    have  their  own  index.    Particularly  nice   features   include   a
    diagrammatic  syntax  for  the  C language, a section on implementation
    limits, a listing of ANSI/K&R differences, a good, easy to read section
    on  the  standard  library,  and  finally  a  section  on good software
    engineering (which many C students could use).  The last is accompanied
    by the source for a C interpreter, which is great example software.


[ ] "A Book On C" (2nd ed.)
    Al Kelly & Ira Pohl
    1990, Benjamin Cummings  ISBN:0-8053-0060-0

    A more chatty book than many others, this book includes  more  examples
    and more detailed explanations than the texts above.  The basics of the
    language are covered, as well as techniques such as  linked  lists  and
    trees.  Some specifics for MSDOS and UNIX are covered.

[In another post someone said this about it:]
- An excellent introduction to C with lots and lots of examples.  Best of 
  all, the authors took pain to 'dissect' those examples, ie go through
  them line by line of code explaining the various features of the language
  and expound on their usage.  Each chapter has a good summary and the text
  is very clear and well written.  It is concise and to the point. Readers
  can learn C in a self pace  way.  There is also enough advance topics for
  the more advance users.


[ ] "The Waite Group's New C Primer Plus"
    Mitchell Waite and Steven Prata
    Howard W. Sams & Co.  ISBN: 0-672-22687-1

    This has been highly recommended  as  a  readable  introduction  to  C,
    especially  for  those  without  a  programming  background.   It steps
    through the basics with clear discussions and many examples.


[ ] "Programming in ANSI C"
    Kochan
    Hayden Books  ISBN: 0-672-48408-0

    Another book  with  multiple  recommendations  as  being  an  excellent
    introductory text with frequent examples and good text.



                                REFERENCE BOOKS
                                      ---


[ ] "American National Standard for Information Systems -
    Programming Language - C"
    ANSI X3.159-1989
    1990, American National Standards Institute

    This is the official standard for the C language, completed by ANSI  in
    1989.   For  language  lawyers,  this  is  THE  source.   Of particular
    interest  is  the  rationale,  published  with  the  standard  but  not
    officially  part  of  it.   The rationale explains the reasoning behind
    many of the decisions taken by the committee, giving  an  insight  into
    the standards making process.


[ ] "Standard C"
    P.J. Plauger & Jim Brodie
    1989, Microsoft Press  ISBN: 1-55615-158-6

    This is a complete and inexpensive pocket reference  to  the  language.
    It  includes  all standard features, the standard libraries, and a good
    section on portability.  It could use a better index, but at $7.95 is a
    bargain as a reference.

[ ] Turbo C/C++ the Complete Reference
    Herbert Schildt
    1990, McGraw Hill  ISBN: 0-07-881535-5

    If you MUST buy a manual specific to  a  particular  C  implementation,
    they are available.  This book, for example, covers in great detail the
    implementation and extensions to standard C included in Borland's Turbo
    C  package.   Also included are explanations of the Turbo C development
    environment.  Beware:  This is neither a good  textbook  (there  is  no
    discussion  of  strings, for instance), nor is it a good description of
    standard C.  Borland specific functions are intermingled with  standard
    library functions, and you must really dig to determine the difference.
    Given these caveats, it is a reasonable reference to have on your desk.
    Similar books exist, I'm sure, for most C environments.



                              MISCELLANEOUS BOOKS
                                      ---


[ ] "The Standard C Library"
    PJ Plauger
    1992 Prentice Hall  ISBN: 0-13-131509-9

    Presents, justifies, and explains a complete implementation of the ANSI
    libraries.   If  you understand the language, but want more information
    on the standard libraries, this is the place to look.


[ ] "C Traps & Pitfalls"
    Andrew Koenig
    Addison-Wesley  ISBN: 0-201-17928-8

    An excellent book, describing many of the programming errors common  in
    the C community.  If you want your programs to work because the code is
    correct, rather than just through luck or trial and error, this is  the
    book to read.


[ ] C Programming Guidelines (2nd ed.)
    Thomas Plum
    1989, Plum Hall Inc.  ISBN: 0-911537-07-4

    This is a description of programming standards for C.  It is formulated
    as a series of manual pages, each dealing with a separate issue.  While
    it makes for rather dry reading, it is a good starting point for either
    someone  new  to  C style, or someone developing a C standard for a new
    project.  For corporate accounts, the manual  pages  are  available  in
    electronic  form from the publisher, should you wish to include them in
    your own company standard.


[ ] "The C Puzzle Book" (2nd ed.)
    Alan R. Feuer
    1989, Prentice Hall  ISBN: 0-13-115502-4

    Discusses C from  the  viewpoint  of  "what  does  the  following  code
    produce?"   Lots  of  interesting and testing puzzles, with answers.  I
    have not yet read the second edition, but assume it is similar  to  the
    first, updated for ANSI C.


[ ] "Numerical Recipes in C"
    Press, Flannery, Teukolsky, & Vetterling
    1988, Cambridge University Press  ISBN: 0-521-35465-X

    This is a real tome!  Most  C  projects  do  not  center  around  heavy
    numerical  calculations,  but if you need to do that type of work, this
    book can be invaluable.  Be warned, though, this is not light  reading!
    A  companion volume of the example code is available, as are disks with
    the software.


[ ] "Indian Hill C Style and Coding Standards"
    Cannon, Elliott, Kirchoff, Miller, Milner, Mitze, Schan, Whittington
    1990, Bell Labs
--
That's all I have right now.  Gee, since this seems to be an FAQ, maybe
it could be added to it?  (Of course, it should either be trimmed down
to the truly good books, or expanded when someone else suggests one). 
Until it is added, I will try to keep a list of suggested books.  If you
or someone you know wants the updated list, please feel free to email a
request to me.  My email address is in my .sig file.  Happy reading!!!

.sig
------------------------------------------------------------------------------
= Please note that the babbling found within is just me babbling and not
= Microware's.  Of course, you already new that. (Or, am I babbling again?)
=
= Tim Wilson.
= (UUCP:     ...!uunet!mcrware!timwil)
= (Internet: timwil@microware.com)
------------------------------------------------------------------------------

Newsgroups: comp.lang.c