Learning C++ With Linux

Object-Oriented programming is a hot
topic in the computer industry these days, and most experts agree
that C++ is the predominant object-oriented programming language.
Many programmers are familiar with the C programming language and
would like to move to C++, but feel they lack the necessary tools
and resources, particularly if the training has to be done on their
own time.

It should therefore come as welcome news to learn that Linux
makes an ideal platform for learning C++. This article covers some
of the C++ programming tools available under Linux and refers the
reader to additional resources, many of them freely available on
the Internet.

Resources

By resources, I am referring to sources of information that
will help you learn C++ and solve programming problems.

A large number of books on C++ and object-oriented design and
programming are available, some better than others. The three I
suggest here are among the most popular of those that are specific
to C++; you may be able to borrow a copy from your local public,
school, or corporate library. As these concentrate more on the C++
language itself, you may wish to supplement them with books that
cover object-oriented analysis and design.

There are a number of publications related to object-oriented
programming, including the following:

C++ Report

Object Magazine

Journal of Object-Oriented
Programming

For those with access to Usenet, these newsgroups are
relevant and can be very useful, both as a source of answers to
specific questions and for picking up the latest developments in
C++ and object-oriented programming:

comp.lang.c++

comp.std.c++

comp.object

The following Frequently Asked Question (FAQ) lists are
periodically posted to Usenet, and are available by anonymous FTP
from Internet archive sites (listed in brackets):

C++
FAQ(sun.soe.clarkson.edu:/pub/C++/FAQ)

G++ FAQ(rtfm.mit.edu:/pub/usenet/news
.answers/g++-FAQ/plain)

comp.object
FAQ(rtfm.mit.edu:/pub/usenet/news
.answers/object-faq/*)

Tools

Listed here are a number of useful C++ programming tools. If
you use one of the standard Linux distributions you probably have
most of these already, otherwise you can get them from a major
archive site. To save time and disk space, I suggest obtaining the
Linux binaries rather than building them from source.

The standard Linux C++ compiler is GNU g++ from the Free
Software Foundation. It follows the evolving ANSI C++ standard and
supports most features found in AT&T's cfront 3.0 compiler,
including templates. It does not yet support exceptions.

Unlike cfront, which is a preprocessor, g++ generates native
code. As the compiler is evolving quickly, I recommend getting the
latest version. (At the time of writing most Linux distributions
included version 2.5.8; version 2.6.0 had just been
released.)

Gdb is the GNU symbolic debugger; you have probably used it
already for debugging C programs under Linux. It supports most C++
data types and language constructs, and transparently handles C++
“name demangling”. Gdb runs well inside Emacs, or you can use the
xxgdb graphical user interface under X. The documentation for gdb,
in info format, describes the features specific to C++
debugging.

The programmer's editor of choice, Emacs, has a C++ mode that
assists in editing. It works well in conjunction with gdb and g++,
allowing you to compile and debug from within the editor.

Class Libraries

If you want to run any meaningful programs, such as examples
from a textbook or code of your own, you will want some class
libraries. A number of C++ class libraries are available under
Linux.

The GNU libg++ library provides the standard C++ iostream
class. It also includes a number of additional useful classes, from
complex numbers to general-purpose stack, queue, and set objects.
Since the source is freely available, you can read it to understand
how the libraries were implemented. Libg++ is well documented in
the included info pages.

InterViews is an object-oriented toolkit for graphical user
interface programming in C++. It is included as the “iv” series in
the Slackware distribution of Linux. A new version of InterViews is
included in the recently released revision 6 of the X Window System
(X11R6), under the name Fresco. Fresco has been sucessfully
compiled with GNU g++ version 2.6.0.

NIHCL, the National Institutes of Health Class Library, is a
portable C++ translation of the Smalltalk-80 class library, by
Keith Gorlen of NIH. The source is available on the Internet from
FTP site alw.nih.gov in the directory /pub/NIHCL. At time of
writing NIHCL would not compile under g++; this should be corrected
in a future release.

ObjectBuilder is a graphical user interface builder for the
OI C++ toolkit. It is designed to simplify the development of
X11-based user interfaces. The Linux version is freely distributed
in binary format; the same product is sold commercially by
ParcPlace Systems for other computing platforms.

If, as some experts recommend, you want exposure to a “pure”
object-oriented language, you can investigate GNU Smalltalk. The
GNU gcc compiler also supports Objective-C, another object-oriented
language based on C and Smalltalk. Both of these tools are
available as packages under Slackware Linux.

Trending Topics

Webinar: 8 Signs You’re Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
11am CDT, April 29th

Join Linux Journal and Pat Cameron, Director of Automation Technology at HelpSystems, as they discuss the eight primary advantages of moving beyond cron job scheduling. In this webinar, you’ll learn about integrating cron with an enterprise scheduler.