Penguin

One of the most widely recognised ProgrammingLanguages in the world.

It was designed by DennisRitchie at BellLabs/AT&T (along with other famous people such as KenThompson and BrianKernighan) as the systems ProgrammingLanguage to write their portable Unix OperatingSystem in. It was originally derived from BCPL but evolved radically. C is a great systems ProgrammingLanguage, but blamed for many problems with applications which many complain it is unsuited for.

The original version of C made many assumptions and led to Lint being written to check whether these assumptions were likely to be unsafe. Many of these assumptions were removed by the ANSI C standard and the remainder of Lint's job merged into that of the Compilers.

From fortune(6):

  • C, n.:

    A ProgrammingLanguage that is sort of like Pascal except more like AssemblyLanguage except that it isn't very much like either one, or anything else. It is either the best language available to the art today, or it isn't.

    -- Ray Simard

  • "The C Programming Language -- A language which combines the flexibility of AssemblyLanguage with the power of AssemblyLanguage."

C has inspired an entire class of languages, including C++ which some say fixes many problems with C, while others debate is just a horrible mess. Java has decended from C++ as a portable language with clean ObjectOrientation, itself in turn the inspiration for MicrosoftCorporation's new language called CSharp.

See the C History.

I recommend you learn C, and use it for writing OperatingSystems, and understanding how things actually are implemented, but then code in some other ProgrammingLanguage if you are going to write applications, especially networking programs.


The following example is a program to approximate the value of pi. Compile it with gcc -traditional-cpp -o pi pi.c. If you want a better approximation, increase the program's source code area. :)

/*
 * Program to compute an approximation of pi
 * by Brian Westley, 1988
 */

#define _ -F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
            _-_-_-_
       _-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
        _-_-_-_-_-_-_-_
            _-_-_-_
}

(As seen in JargonFile:Obfuscated-C-Contest)


Various snippets of information about C in the wiki:


Standardization

The first official standard for the language was “ANSI X3.159-1989” or ANSI C, also known as “C89” because it was completed in 1989.

This standard was picked up by ISO the following year as ISO/IEC 9899:1990, also known as “C90”.

In 1999, a revised standard, ISO/IEC 9899:1999, a.k.a. C99, was ratified. A decade later, I don’t think any widely-available compiler yet fully supports all its features, though GCC comes close.


CategoryProgrammingLanguages, CategoryImperativeProgrammingLanguages, CategoryMachineOrientedProgrammingLanguages, CategorySystemsProgrammingLanguages