The GCC compiler is a translator for the programming language C. It translates from a human readable ASCII text file to a binary file of machine language instructions. Computers can’t execute ASCII source files. They can only execute binary machine language. The programming language C has the characteristic that it can be used to program low level systems tasks instead of using the machine language of a particular kind of hardware. The original operating system Unix was written in C in the 1970’s. Over the years Unix has been “ported” or migrated from one hardware architecture to another. Other operating systems that were written in the machine language of its hardware platform died when the hardware died because it was too hard to rewrite the operating system in a new machine’s machine language. Machine architectures have evolved very rapidly over the years because of fantastic advances in semi-conductor design and manufacturing. This killed many operating systems except for the ones written in C.
The portability of the C language is the result of a very good design by Dennis Ritchie and also a well written ANSI standard based on Ritchie’s design. Ritchie performed this feat from 1969-1973 while working for Bell Laboratories, a subsidiary of AT&T. He created this portable systems programming language to aid the development of Unix. Linux was reverse engineered from Unix and is also written in C. Since then Linux has been ported to many machines from IBM mainframes to Smartphones. GCC is the open source version of the C compiler and is part of the GNU project run by Richard Stallman. The GCC project has expanded to include many more programming languages and source machine and target machine combinations. It also includes a number of programmer utilities that are loosely called the GCC tool chain.
The GCC compiler underlies many open source projects. The portability of C gave programmers the time to move the state of the art forward in operating systems while their computer environments where evolving rapidly. Many of today’s software successes are due to the efforts of C language designers and developers decades ago.