190075Sobrien@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
2132718Skan@c 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
390075Sobrien@c This is part of the GCC manual.
490075Sobrien@c For copying conditions, see the file gcc.texi.
590075Sobrien
690075Sobrien@node G++ and GCC
7132718Skan@chapter Programming Languages Supported by GCC
890075Sobrien
9132718Skan@cindex GCC
10132718Skan@cindex GNU Compiler Collection
11132718Skan@cindex GNU C Compiler
12132718Skan@cindex Ada
1390075Sobrien@cindex Fortran
1490075Sobrien@cindex Java
15117395Skan@cindex treelang
16132718SkanGCC stands for ``GNU Compiler Collection''.  GCC is an integrated
17132718Skandistribution of compilers for several major programming languages.  These
18220755Sdimlanguages currently include C, C++, Java, Fortran, and Ada.
1990075Sobrien
20132718SkanThe abbreviation @dfn{GCC} has multiple meanings in common use.  The
21132718Skancurrent official meaning is ``GNU Compiler Collection'', which refers
22132718Skangenerically to the complete suite of tools.  The name historically stood
23132718Skanfor ``GNU C Compiler'', and this usage is still common when the emphasis
24132718Skanis on compiling C programs.  Finally, the name is also used when speaking
25132718Skanof the @dfn{language-independent} component of GCC: code shared among the
26132718Skancompilers for all supported languages.
2790075Sobrien
28132718SkanThe language-independent component of GCC includes the majority of the
29132718Skanoptimizers, as well as the ``back ends'' that generate machine code for
30132718Skanvarious processors.
31132718Skan
32132718Skan@cindex COBOL
33132718Skan@cindex Mercury
34132718Skan@cindex Pascal
35132718SkanThe part of a compiler that is specific to a particular language is
36132718Skancalled the ``front end''.  In addition to the front ends that are
37132718Skanintegrated components of GCC, there are several other front ends that
38132718Skanare maintained separately.  These support languages such as Pascal,
39169689SkanMercury, and COBOL@.  To use these, they must be built together with
40132718SkanGCC proper.
41132718Skan
4290075Sobrien@cindex C++
4390075Sobrien@cindex G++
4490075Sobrien@cindex Ada
4590075Sobrien@cindex GNAT
46132718SkanMost of the compilers for languages other than C have their own names.
47132718SkanThe C++ compiler is G++, the Ada compiler is GNAT, and so on.  When we
48132718Skantalk about compiling one of those languages, we might refer to that
49132718Skancompiler by its own name, or as GCC@.  Either is correct.
5090075Sobrien
5190075Sobrien@cindex compiler compared to C++ preprocessor
5290075Sobrien@cindex intermediate C version, nonexistent
5390075Sobrien@cindex C intermediate output, nonexistent
54132718SkanHistorically, compilers for many languages, including C++ and Fortran,
55132718Skanhave been implemented as ``preprocessors'' which emit another high
56132718Skanlevel language such as C@.  None of the compilers included in GCC are
57132718Skanimplemented this way; they all generate machine code directly.  This
58132718Skansort of preprocessor should not be confused with the @dfn{C
59220755Sdimpreprocessor}, which is an integral feature of the C and C++ languages.
60