Of all its potential uses, Linux is particularly well suited to software development. Software-development tools, such as the compiler and libraries, are included because you need them when you rebuild the Linux kernel. If you are a UNIX software developer, you already know UNIX, so you will feel right at home in Linux.
As far as the development environment goes, you have the same basic tools (such as an editor, a compiler, and a debugger) that you might use on other UNIX workstations, such as those from IBM, Sun Microsystems, and Hewlett-Packard (HP). Therefore, if you work by day on one of the mainstream UNIX workstations, you can use a Linux PC at home to duplicate that development environment at a fraction of the cost. Then, you can either complete work projects at home or devote your time to software you write for fun and share on the Internet.
Just to give you a sense of Linux’s software-development support, the following is a list of various features that make Linux a productive software-development environment:
GNU’s C compiler, gcc, which can compile ANSI-standard C programs
GNU’s C++ compiler (g++), which supports ANSI-standard C++ features
The GNU compiler for the Java programming language, gcj
The GNU debugger, gdb, which enables you to step through your program to find problems and to determine where and how a program has failed. (The failed program’s memory image is saved in a file named core; gdb can examine this file.)
The GNU profiling utility, gprof, which enables you to determine the degree to which a piece of software uses your computer’s processor time
The GNU make utility, which enables you to compile and link large programs
Concurrent Versions System (CVS) and Revision Control System (RCS), which maintain version information and control access to the source files so that two programmers don’t modify the same source file inadvertently
The GNU Emacs editor, which prepares source files and even launches a compile-link process to build the program
The Perl scripting language, which you can use to write scripts that tie together many smaller programs with UNIX commands to accomplish a specific task
The Tool Command Language and its X toolkit (Tcl/Tk), which enable you to prototype X applications rapidly
The Python language, an interpreted language comparable to Perl and Tcl (the Red Hat Linux installation program, called anaconda, is written in Python)
Dynamically linked shared libraries, which allow the actual program files to be much smaller because all the library code that several programs may use is shared, with only one copy being loaded in the system’s memory
POSIX header files and libraries, which enable you to write portable programs
Chapter 23 covers software development in Linux. Read Chapters 24 and 25 to learn about Perl and Tcl/Tk programming. Chapter 26 covers Java programming in Red Hat Linux.