Under this heading we will include all the tools necessary to get programs running on a users system with the exception of the editor used to write the text files which constitute the programs. So this includes the compilers, assemblers, debuggers and other utilities.
The GNU project provides what are arguably the best coompilers across platforms for ANSI C, C++ and Objective C. A great deal of control of the type of object files produced is provided thorugh options. Cross-compilation for every pair of supported platforms is provided--so it is possible to compile programs for a great range of machines on one work-station. Optimisation of a very high order is also provided thus giving extremely efficient running times. The GNU C compiler is probably the only one that supports optimisation along with debugging so that efficiently running parts can be combined with developmental parts while testing. The GNU project also provides Fortran77-to-C and Pascal-to-C conversion programs that allow one to compile programs written in these languages. Currently there is also a project to write an independent Fortran77 compiler which should complete by the end of the year.
The GNU Assembler is also available for a number of different processor/assembly language combinations. Thus assembly files for these processors can also be included in ones programs. The GNU binutils provide tools for linking together and manipulating object files for a number of different popular formats like COFF, ELF etc. Finally, the GNU debugger and profiling programs can be used to test and improve the programs.
A number of additional utilities for programming like the Revision Control System (for keeping up with changes in files), the GNU make, GNU awk, GNU Bison and Flex are standard replacements for equivalent packages being sold by vendors. Many of the latter are steadily being improved and are in general superior to the commercially available utility programs.