Difference between revisions of "C programming language"
m (→External links:  +The origins of C)  | 
				 (Steps from CPL to C)  | 
				||
| Line 1: | Line 1: | ||
| − | The '''C programming language''' was derived from an earlier [[programming language]] called [[B programming language|B]], itself derived from [[BCPL]]. There was next a short-lived intermediary language called NB, or New B. C can be crisply, and aptly, described as 'BCPL with [[type]]s and terser [[syntax]]'.  | + | The '''C programming language''' was derived from an earlier [[programming language]] called [[B programming language|B]], itself derived from [[BCPL]]. There was next a short-lived intermediary language called 'NB', or New B. C can be crisply, and aptly, described as 'BCPL with [[type]]s and terser [[syntax]]'. The syntax arrived with B; types were added in the step to NB; and C added such things as [[structure]]s.  | 
A number of [[object-oriented language]]s have been influenced by C, including  | A number of [[object-oriented language]]s have been influenced by C, including  | ||
Revision as of 22:24, 20 January 2025
The C programming language was derived from an earlier programming language called B, itself derived from BCPL. There was next a short-lived intermediary language called 'NB', or New B. C can be crisply, and aptly, described as 'BCPL with types and terser syntax'. The syntax arrived with B; types were added in the step to NB; and C added such things as structures.
A number of object-oriented languages have been influenced by C, including Objective-C, C++, D, Vala.
Dialects
There are two popular dialects, the original was K&R C, which spread with the original C compiler, and pcc, the portable C compiler. Later there was an ANSI standard for the C language, usually referred to as 'ANSI C'.
The C language evolved continuously starting in 1972. Some milestones:
- 1972 - Primeval C - no struct, automatic variables can't be initialized.
 - 1973 - preprocessor added.
 - 1976? - Typesetter C - introduced long, unsigned, typedef, union, and changed =+ etc to +=.
 - 1978 - K&R C
 - 1989 - ANSI C
 
hello world
Ancient
char *hello "hello"; /* No = for initialization. */
main (argc, argv)
int argc;               /* Parameter declarations as in K&R. */
char **argv;
{
        char *world;    /* Auto variables can't be initialized. */
        world = "world";
        cprint ("%s %s\n", hello, world);       /* No stdio yet. */
}
K&R
#include <stdio.h>
main(argc,argv)
int argc;
char **argv;
{
        printf("Hello World\n");
        exit (0);
}
ANSI C
#include <stdio.h>
int main(int argc, char *argv[])
{
        printf("Hello World\n");
        return 0;
}
Compilers
See also
- Programming in C - A Tutorial - wonderfully clear and concise
 - Old C Changes - some history of the development
 - C Changes
 - Typesetter C - one important stage
 - Standard I/O library - I/O is not formally part of the language
 - PDP-11 C stack operation
 
External links
- The C Programming Language - the original BSTJ paper describing C
 - The Evolution of C - Past and Future
 -  Dennis M. Ritchie - see section "C and its immediate ancestors"
- C Reference Manual - the version from V6
 - The Development of the C Language (PDF) - Ritchie paper with details of the early evolution
 - Primeval C - Ritchie notes on some C software archaeology
 - The C Language Calling Sequence - interesting note by DMR and SCJ
 - Recent Changes to C - November 15, 1978 - a few post-K+R changes
 
 - “A damn stupid thing to do” — the origins of C - starts at the beginning, with the CPL story