nfoTools

toolNote t060101
 C/C++ Programming Resources

Preliminary Catalog

nfoWare>toolcraft>
2006>01>

t060101c>
0.30 2023-11-26 -13:41 -0800


These resources are suitable for anyone who has access to a recent Microsoft Windows desktop system (such as one with Windows XP SP2 Pro) and that wants to engage in self-study development of familiarity with C/C++ Programming.  This is also an useful foundation for anyone who wants to become more involved with nfoWare projects and others targeted to Microsoft Windows environments.

1. C/C++ Compilers
2. Editors and Development Environments
3. Introductions to C/C++ Programming
4. C/C++ Specifications

1. C/C++ Compilers

For basic development of C and C++ Language programs, there are freely-available professional-level compilers that operate on current Microsoft Windows platforms (i.e., Windows 2000, Windows XP SP2, Windows Vista, and beyond):

1.1 Microsoft® Visual C++® Toolkit 2003, version 1.01.0000, June 29, 2004.
Previously available for download at <http://msdn.microsoft.com/visualc/vctoolkit2003/> (accessed 2005 March 3), this compiler is no longer available.  It has been replaced by the Visual C++ 2005 Express Edition.
     This is the optimizing compiler that was shipped as part of Visual Studio .NET 2003 Professional.  It is a command-line compiler that is also fully usable for study and experimentation in standard C and C++ command-line application development.  The compiler can also be used to build complete Microsoft Windows applications once additional libraries and development utilities are obtained.
     Although no longer available, some of the early nfoWare projects are verified with this compiler as well as more-recent VC++ editions.

1.2 [obsolete]
 

1.3 Other Versions of Microsoft Visual C++
are found packaged in older training and education packages under names such as Learning Edition and Standard Edition.  Some books also include versions of Visual C++ on an included CD-ROM. 
     The advantage of all of these versions is the inclusion of an integrated development environment and additional tools required for development of Microsoft Windows applications.
     The license conditions on some of these editions may limit usage to educational and personal use.  If you intend to develop software for sale or distribution to others, please verify that the license is suitable for what you want to do.
     As part of the launch promotion of Visual Studio 2005, Microsoft is making the Visual C++ 2005 Express Edition (and other Express editions) available for free download through November 7, 2006.  This version can be employed indefinitely and for any purpose in much the same way as the Visual C++ Toolkit 2003.  A key feature is inclusion of a version of the Visual Studio Integrated Development Environment for editing and building programs.  The tutorial and reference materials available with this version may make it appealing for usage in command-line compiling as well.

1.4 Borland C++ Version 5.5 Free Compiler, August 24, 2000.
Available for free download via <http://community.borland.com/article/0,1410,20633,00.html>.
     This respected compiler is fully capable for use in command-line development.  It is recommended in some texts on C++ programming.  There are special editions of Borland C++ Builder provided on CD-ROMs with some books.  The advantage of book versions is the additional provision of an integrated development environment and additional support for development of Microsoft Windows graphical user-interface applications.

1.5 GCC: GNU Compiler Collection.
Windows versions available via <http://gcc.gnu.org/install/binaries.html>.  These compilers are designed for operation on GNU/Linux.   Versions for Windows require installation of additional software for creation of a Unix-like environment.   Using these compilers on Windows is useful for someone interested in learning about and developing for the GNU/Linux environment.  If the target for application is the Microsoft Windows platform, the preceding ones may provide a simpler learning curve as well as smoother integration.
     Although the GCC is open-source software, building the compiler from source code is not recommended for beginners.  Those interested in compiler technology and digging farther into programming-language theory and compiling techniques may find greater interest in GCC after becoming more adept at programming.

2. Editors and Development Environments

2.1 For all programming projects, a text editor is required for creation of modification of program files, creation of batch files, and other utility operations involving text.  Initially, the Windows Notepad application is sufficient.  There is also a console-mode text editor, edit.com, included in the Microsoft Windows operating system.

2.2 For substantial programming work, a programming editor is recommended.  These editors have special features that make it easier to write and modify programs.  Some support rapid switching between editing, compiling, and matching compiler error-messages to the source-program text.  Integrated Development Environments provide even greater integration for an overall software-development process.

3. Introductions to C/C++ Programming

3.1 This is not a comprehensive selection. It was created after a bookstore search.  The choices are based on suitability of the material for someone not familiar with programming and wanting to work their way into a reasonable working knowledge of C/C++.   This progression should be enough to become confident using C/C++ compilers and performing standard compilation procedures.  I will add items from time to time as the come to my attention.  If I have extended information to provide on how to use the material with a current compiler and other tips, I'll provide suitable links along with the references.

3.2 For more exotic topics, such as working with the Microsoft Component Object Model (COM) and building applications for the Microsoft Windows Graphical User Interface (GUI), different specialized material is required. 

Allison, Chuck (2000).
Thinking in C: Foundations for C++ & Java.  CD-ROM.  MindView (La Mesa, CA).  A course including lectures, slides, exercises and solutions, which teaches the foundations of the C Language to prepare you to learn Java or C++.  Also available at <http://www.mindview.net/CDs/ThinkingInC-CD/ThinkingInC-CD.html>.
    As explained on the web site, it is more-economical to purchase the print edition of (Eckel 2000) with CD-ROM included.  That CD-ROM also includes electronic versions of Thinking in C++, Thinking in Java, and the code samples from Thinking in C++.
    
Cogswell, Jeff (2003).
C++ All-in-One Desk Reference for Dummies.  7 books in 1.  Wiley, New York.  ISBN 0-7645-1795-3 pbk + CD-ROM.  Book description and errata at <http://www.samspublishing.com/title/0672324253>.
     This is a consolidation of seven titles, beginning with a basic introduction and continuing through the main topics for C++ Language development on the Microsoft Windows platform, including .NET topics.  There's a variety of software packages on the CD-ROM, including a personal version of the Borland Builder compiler and IDE.  Although the book is also densely printed, it contains wide coverage and some useful software for those who want a more-completely-integrated development setup.
    
DePasquale, Peter J. (2006)
Addison-Wesley's C++ Backpack Reference Guide.  Pearson Education, Boston.  80pp. ISBN 0-321-35013-8 pbk.
     This reference does not attempt to summarize the language.  Instead, it is organized around the use of symbols and the reserved words of the language.  This may provide a different access to something that is being sought in comparison with (Loudon 2003).  I find that I am distrustful of this approach, although it makes some material very easy to locate.
    
Eckel, Bruce (2000).
Thinking in C++ Second Edition, Volume One: Introduction to Standard C++.  Prentice Hall (Upper Saddle River, NJ).  ISBN 0-13-979809-9 pbk + CD-ROM.
     Although this content is available on-line  (Eckel 2004), I obtained the print edition in order to acquire the CD-ROM with its lectures and slides on "Thinking in C."  There is a dense review of enough C Language to serve as a foundation for C++ in Chapter 3 of the book, but I wanted to make sure of the availability of a careful introduction to C Language fundamentals.  The CD-ROM does the job.
    
Eckel, Bruce (2004).
Free Electronic Book Volume 1 & Volume 2, Thinking in C++ 2nd Edition by Bruce Eckel.  Web page at <http://mindview.net/Books/TICPP/ThinkingInCPP2e.html> accessed on 2005-10-06.
     I love the approach taken here, with books available for on-line reading, downloading (as Adobe PDF), and purchase.   On this page the author describes the motivation and the value.  There are other tips and leads to further material here.  Newcomers might consider purchasing the hard copy of Volume 1 (second edition) with its bound-in CD-ROM with the Thinking in C CD-ROM designed for training and as preparation for moving on to C++ and for Java.  Reviewers recommend that you have some programming experience  and Volume 1 starts out assuming familiarity with C Language (and the McGrath books might get you started).  You can also download the free edition and see how the material works for you.  The author's comments about the CD-ROM on this web page are also instructive for setting your level of expectations and calibrating your experience and readiness for C++  --dh:2005-10-06
 
Liberty, Jesse (2002).
Teach Yourself C++ in 10 Minutes, ed. 2.  Quick steps for fast results.  Sams Publishing, Indianapolis, IN.  ISBN 0-672-32425-3 pbk.  Book description and source-code downloads available at <http://www.samspublishing.com/title/0672324253>.
     This is an useful introduction once the basics have been managed using a better starter text such as (McGrath 2004).  The book is "tighter" and the examples are more demanding.   The illustrations of error messages and debugging are based on the Borland C++ Builder 5 compiler.  It is assumed that you already have a compiler and know the basic procedures for editing, compiling, and executing programs.
    
Loudon, Kyle (2003).
C++ Pocket Reference.  O'Reilly Media, Sebastopol, CA.  130pp. ISBN 0-596-00496-6 pbk.
     Although not advisable as a tutorial source, a pocket reference of this kind can provide an easy way to review and check on features of the language once the basic concepts have taken root.  Personally, I find the organization a little difficult and prefer to check in (Prinz & Kirch-Prinz 2003) first, and only using C++-specific material if I must.
   
 
McGrath, Mike (2004).
C Programming in Easy Steps.  Learn the ANSI C standard in full color.  Computer Step, Southam, Warwickshire, UK.  ISBN 1-84078-203-X pbk.  Barnes & Noble edition for sale in the USA only, ISBN 0-7607-5504-3.  Book description and source-code downloads available at <http://www.ineasysteps.com/books/?184078203x>.
     This is a perfect book for getting started in C/C++ Programming.  There are examples to work every step of the way, focusing on the simpler C Language for learning the basic concepts.  With the experience gained here, the student can move on to the special features of C++ with greater confidence.
    The examples are illustrated using the GCC compiler.  Adjustment for the Microsoft Visual C++ Toolkit 2003 compiler is easily made by following the recommended setup.
    
McGrath, Mike (2005).
C++ Programming in Easy Steps.  Conforms to ANSI & ISO Standards, in full color.  Computer Step, Southam, Warwickshire, UK.  ISBN 1-84078-295-1 pbk.  Barnes & Noble edition for sale in the USA only, ISBN 0-7607-7138-3.  Book description and source-code downloads available at <http://www.ineasysteps.com/books/?1840782951>.
     The advantage of this version, focusing only on C++, in addition to the "in Easy Steps" format, is use of the MinGW build of the GNU C++ compiler with its closer match to the Microsoft Windows environment.   If you use this compiler, I recommend that you employ batch files to set environment variables, including the Path variable, applying the technique described and used for the VC++ Toolkit 2003 and employed throughout this site for C and C++ projects.  And, if you want to grow into development of programs for the Windows graphical user-interface, I think the Microsoft Visual C++ Toolkit 2003 or the new Visual C++ 2005 Express edition will provide an easier start.  -- dh:2005-11-18
    
Prinz, Peter., Kirch-Prinz, Ulla (2003).
C Pocket Reference.  Translated by Tony Crawford.  O'Reilly Media, Sebastopol, CA.  134pp. SBN 0-596-00436-2 pbk.
     Originally published in German as C kurz & gut (short and good), I find this thumbnail convenient, with an organization that is easy for me to find material in.  Others may find different organizations to be more appealing.
   

4. C/C++ Specifications

At some point, especially for honoring the ANSI and ISO Standards for these languages, it is important to acquire the actual specifications or books that are built completely around them.  This is important for professional use and for assuring that software-portability provisions have been given full consideration.

Harbison, Samuel P. III., Steele, Guy L. Jr.  (1995)
C, A Reference Manual.  ed.4.  Prentice-Hall (Englewood Cliffs, NJ: 1995).  ISBN 0-13-326224-3 pbk.
     I find this the most comprehensive and understandable reference available on the C Language.  Not a programming text, it is a reference manual on the language, with indications of what is to be expected in adhering to the standard definitions.   This edition is current with ANSI X3.159-1989, ISO/IEC 9899:1990, the 1994 ISO/IEC Amendment 1 to the C Standard, and the 1994 Technical Corrigendum 1 corrections.  The amendments introduced 3 new header files and many functions for supporting international use of C, including expanded character-set capabilities.
     There is an author's page on the 5th (2002) edition at <http://www.careferencemanual.com/>.  I looked this one over in a bookstore and I had to put it back.  The book is thinner and something happened with the typography and page density between the 4th and 5th editions that makes the book unappealing to me.  I recommend that you look it over for yourself, because I find the writing and content from the earlier editions to be first-rate -- dh:2005-10-06.
    
Stroustrop, Bjarne (2000).
The C++ Programming Language, Special Edition.  Addison-Wesley, Reading, MA.  ISBN 0-201-70073-5.
     This is not exactly a specification, although it is preferred by many as a reference.  It also provides some insight into the thinking around the invention of C++ by its inventor, including worked examples where Stroustrop walks the reader through the design principles that are being applied.
    

Revision History:
0.30 2007-08-13-16:09 Repave under the nfoWare Toolcraft section
The material has been transferred from the ODMA site and adjusted for support of nfoWare.  Other projects will redirect to this site as a common location of broadly-used information on freely-available development tools.
0.25 2005-10-06-16:03 Incorporate further material
Tie in to other resources here and elsewhere
0.16 2005-10-03-16:31 Move to canonical /faq/2005/09 location
0.15 2005-09-10-16:50 Make consistent with other materials
Use section numbering throughout and link to current material on the VC++ Toolkit 2003.
0.11 2005-09-08-22:55 Make Corrections Found in Proof-Reading
0.10 2005-09-08-19:25 Provide Initial Content
Initial content is provided for recommending basic materials for those wanting to use a free compiler and introductory books that provide for self-study and development of some familiarity with C/C++ language and how programs are developed and compiled.
0.00 2005-09-08-12:02 Create Initial Placeholder
Introduce an initial placeholder that serve as a target of links and include-page components until more content is developed.  This page is a customization of the FAQtip Bootstrap Material [placeholder] Template 0.10.  A version from FAQtip Bootstrap 0.10 Material was used.

Construction Structure (Hard Hat Area)
 You are navigating nfoTools.

created 2005-09-07-22:14 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 17-06-03 15:07 $
$$Revision: 173 $