Topzle Topzle

C (programming language)

Updated: Wikipedia source

C (programming language)

C is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains widely used and influential. By design, C gives the programmer relatively direct access to the features of the typical CPU architecture, customized for the target instruction set. It has been and continues to be used to implement operating systems (especially kernels), device drivers, and protocol stacks, but its use in application software has been decreasing. C is used on computers that range from the largest supercomputers to the smallest microcontrollers and embedded systems. A successor to the programming language B, C was originally developed at Bell Labs by Ritchie between 1972 and 1973 to construct utilities running on Unix. It was applied to re-implementing the kernel of the Unix operating system. During the 1980s, C gradually gained popularity. It has become one of the most widely used programming languages, with C compilers available for practically all modern computer architectures and operating systems. The book The C Programming Language, co-authored by the original language designer, served for many years as the de facto standard for the language. C has been standardized since 1989 by the American National Standards Institute (ANSI) and, subsequently, jointly by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC). C is an imperative procedural language, supporting structured programming, lexical variable scope, and recursion, with a static type system. It was designed to be compiled to provide low-level access to memory and language constructs that map efficiently to machine instructions, all with minimal runtime support. Despite its low-level capabilities, the language was designed to encourage cross-platform programming. A standards-compliant C program written with portability in mind can be compiled for a wide variety of computer platforms and operating systems with few changes to its source code. Although neither C nor its standard library provide some popular features found in other languages, it is flexible enough to support them. For example, object orientation and garbage collection are provided by external libraries GLib Object System and Boehm garbage collector, respectively. Since 2000, C has consistently ranked among the top four languages in the TIOBE index, a measure of the popularity of programming languages.

Infobox

Paradigm
Multi-paradigm: imperative (procedural), structured
Designed by
Dennis Ritchie
Developer
ANSI X3J11 (ANSI C); ISO/IEC JTC 1 (Joint Technical Committee 1) / SC 22 (Subcommittee 22) / WG 14 (Working Group 14) (ISO C)
First appeared
1972; 53 years ago (1972)[a]
Stable release
C23 / October 31, 2024; 13 months ago (2024-10-31)
Preview release
C2Y (N3220) / February 21, 2024; 21 months ago (2024-02-21)
Typing discipline
Static, weak, manifest, nominal
OS
Cross-platform
Filename extensions
c,
Website
mw- c-language.orgiso.orgopen-std.org

Tables

Timeline of C language · History › Early developments
first release
first release
Year
1972
Informalname
first release
Officialstandard
K&R C
K&R C
Year
1978
Informalname
K&R C
Officialstandard
ANSI C, C89,ISO C, C90
ANSI C, C89,ISO C, C90
Year
1989,1990
Informalname
ANSI C, C89,ISO C, C90
Officialstandard
ANSI X3.159-1989ISO/IEC 9899:1990
C99, C9X
C99, C9X
Year
1999
Informalname
C99, C9X
Officialstandard
ISO/IEC 9899:1999
C11, C1X
C11, C1X
Year
2011
Informalname
C11, C1X
Officialstandard
ISO/IEC 9899:2011
C17, C18
C17, C18
Year
2018
Informalname
C17, C18
Officialstandard
ISO/IEC 9899:2018
C23, C2X
C23, C2X
Year
2024
Informalname
C23, C2X
Officialstandard
ISO/IEC 9899:2024
C2Y
C2Y
Year
TBA
Informalname
C2Y
Year
Informalname
Officialstandard
1972
first release
1978
K&R C
1989,1990
ANSI C, C89,ISO C, C90
ANSI X3.159-1989ISO/IEC 9899:1990
1999
C99, C9X
ISO/IEC 9899:1999
2011
C11, C1X
ISO/IEC 9899:2011
2018
C17, C18
ISO/IEC 9899:2018
2024
C23, C2X
ISO/IEC 9899:2024
TBA
C2Y

References

  1. "Thompson had made a brief attempt to produce a system coded in an early version of C—before structures—in 1972, but gav
  2. "The scheme of type composition adopted by C owes considerable debt to Algol 68, although it did not, perhaps, emerge in
  3. Pronounced /ˈsiː/, like the letter 'c'.
  4. The original example code will compile on most modern compilers that are not in strict standard compliance mode, but it
  5. Return value 0 is typically used in this context to indicate success.
  6. Code of print_array (not shown) slightly differs also, because of the type of p, being a pointer to the 2D array in the
  7. C in a Nutshell
    https://books.google.com/books?id=4Mfe4sAMFUYC
  8. Ritchie (1993a), p. 9.
  9. Ritchie (1993b), p. 9.
  10. Ritchie (2003).
  11. ISO/IEC JTC1/SC22/WG14
    https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3221.htm
  12. Ritchie (1993a), p. 8.
  13. Ritchie (1993b), p. 8.
  14. "Verilog HDL (and C)"
    https://web.archive.org/web/20131106064022/http://cs.anu.edu.au/courses/ENGN3213/lectures/lecture6_VERILOG_2010.pdf
  15. the c programming language sound
    https://web.archive.org/web/20221117151137/https://eng.ichacha.net/pronounce/the%20c%20programming%20language.html
  16. Toptal Engineering Blog
    https://www.toptal.com/c/after-all-these-years-the-world-is-still-powered-by-c-programming
  17. Developer.com
    https://web.archive.org/web/20220822225609/https://www.developer.com/news/c-language-drops-to-lowest-popularity-rating/
  18. Ritchie (1993a).
  19. "Programming Language Popularity"
    https://web.archive.org/web/20090116080326/http://www.langpop.com/
  20. "TIOBE Programming Community Index"
    https://web.archive.org/web/20090504181627/http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  21. Byte
    https://archive.org/stream/byte-magazine-1983-08/1983_08_BYTE_08-08_The_C_Language#page/n267/mode/2up
  22. "TIOBE Index for September 2024"
    https://web.archive.org/web/20240918165843/https://www.tiobe.com/tiobe-index/
  23. Kernighan & Ritchie (1978), p. 6.
  24. 21st Century C
  25. lysator.liu.se
    https://web.archive.org/web/20191212221532/http://www.lysator.liu.se/c/dmr-on-histories.html
  26. Ars Technica
    https://web.archive.org/web/20220328143845/https://arstechnica.com/features/2020/12/a-damn-stupid-thing-to-do-the-origins-of-c/
  27. Bell System Tech. J
    https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.138.35
  28. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986
    https://web.archive.org/web/20171111151817/http://www.cs.dartmouth.edu/~doug/reader.pdf
  29. Kernighan & Ritchie (1978).
  30. FreeBSD Miscellaneous Information Manual
    https://web.archive.org/web/20210121024455/https://nxmnpg.lemoda.net/7/c78
  31. Kernighan & Ritchie (1988).
  32. Stroustrup, Bjarne
    https://web.archive.org/web/20140824072719/http://www.stroustrup.com/sibling_rivalry.pdf
  33. "Rationale for American National Standard for Information Systems – Programming Language – C"
    https://web.archive.org/web/20240717164722/https://www.cs.man.ac.uk/~pjj/cs211/c_rationale/node2.html
  34. C Integrity
    https://web.archive.org/web/20180725033429/https://www.iso.org/standard/23909.html
  35. Home page
    https://web.archive.org/web/20180212100115/http://www.open-std.org/JTC1/SC22/WG14/
  36. Dr. Dobbs
    https://web.archive.org/web/20130802070446/http://www.drdobbs.com/cpp/interview-with-herb-sutter/231900562
  37. "ISO/IEC 9899:2024 (en) — N3220 working draft"
    https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf
  38. open-std.org
    https://web.archive.org/web/20230609204739/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3132.pdf
  39. open-std.org
    https://web.archive.org/web/20240226053735/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf
  40. open-std.org
    https://web.archive.org/web/20210225224616/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1169.pdf
  41. C: A Reference Manual
  42. Kernighan & Ritchie (1988), p. 192.
  43. Kernighan & Ritchie (1978), p. 3.
  44. "Committee Draft ISO/IEC 9899:TC3: 5.2.1 Character sets". 2007.
    https://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
  45. open-std.org
    https://web.archive.org/web/20171222215122/http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf
  46. Kernighan & Ritchie (1988), pp. 192, 259.
  47. Cs.ucr.edu
    https://web.archive.org/web/20081021080953/http://www.cs.ucr.edu/~nxiao/cs10/errors.htm
  48. C and the 8051
    https://books.google.com/books?id=rI0c8kWbxooC&pg=PT47
  49. ACM Computing Surveys
    https://doi.org/10.1145%2F356869.356872
  50. Kernighan & Ritchie (1988), p. 122.
  51. "Security Features: Compile Time Buffer Checks (FORTIFY_SOURCE)"
    https://web.archive.org/web/20070107153447/http://fedoraproject.org/wiki/Security/Features
  52. Programming with C
  53. The New Hacker's Dictionary
    https://books.google.com/books?id=g80P_4v4QbIC&pg=PA432
  54. unix.com
    http://www.unix.com/man-page/FreeBSD/1/lint
  55. web.stanford.edu
    https://web.stanford.edu/class/archive/cs/cs107/cs107.1236/resources/valgrind.html
  56. Pure Software Inc.
    https://web.stanford.edu/class/cs343/resources/purify.pdf
  57. Toptal Engineering Blog
    https://www.toptal.com/c/after-all-these-years-the-world-is-still-powered-by-c-programming
  58. Programming and problem solving with C++
    https://search.worldcat.org/oclc/894992484
  59. DoomWiki.org
    https://doomwiki.org/wiki/Development_of_Doom
  60. Dr. Dobb's Sourcebook
  61. "Using C for CGI Programming"
    https://web.archive.org/web/20100213075858/http://www.linuxjournal.com/article/6863
  62. Medium
    https://web.archive.org/web/20141004135317/https://medium.com/@lucperkins/web-development-in-c-crazy-or-crazy-like-a-fox-ff723209f8f5
  63. "What programming language does NGINX use?"
    https://mull-overthing.com/what-programming-language-does-nginx-use/
  64. "What is Apache and What Does it Do for Website Development?"
    https://www.greengeeks.com/blog/what-is-apache/
  65. ICT Academy at IITK
    https://web.archive.org/web/20210531161841/https://ict.iitk.ac.in/c-the-mother-of-all-languages/
  66. Python 3.10.7 documentation
    https://web.archive.org/web/20121105232707/https://docs.python.org/3/extending/extending.html
  67. Opensource.com
    https://web.archive.org/web/20220526105419/https://opensource.com/article/18/1/perl-5-engine
  68. Ruby Programming Language
    https://web.archive.org/web/20130812003928/https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/
  69. freeCodeCamp
    https://web.archive.org/web/20220804050401/https://www.freecodecamp.org/news/what-is-php-write-your-first-php-program/
  70. Wired
    https://web.archive.org/web/20220412005125/http://www.wired.com/2011/10/thedennisritchieeffect/
  71. Prossimo
    https://www.memorysafety.org/docs/memory-safety/
  72. Microsoft Learn
    https://web.archive.org/web/20220924075131/https://learn.microsoft.com/en-us/cpp/preprocessor/pragma-directives-and-the-pragma-keyword
  73. GCC, the GNU Compiler Collection
    https://web.archive.org/web/20020617041757/https://gcc.gnu.org/onlinedocs/cpp/Pragmas.html
  74. Intel C++ Compiler Classic Developer Guide and Reference
    https://web.archive.org/web/20220410113529/https://www.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/pragmas.html
  75. apenwarr
    https://apenwarr.ca/log/20070813
  76. "Implementing Exceptions in C"
    https://web.archive.org/web/20170115152453/http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/tech_reports/SRC-RR-40.pdf
  77. Pillars of computing : a compendium of select, pivotal technology firms
    https://search.worldcat.org/oclc/922324121
  78. Languages and compilers for parallel computing : 16th international workshop, LCPC 2003, College Station, TX, USA, October 2–4, 2003 : revised papers
    https://search.worldcat.org/oclc/57965544
  79. Stroustrup, Bjarne
    https://web.archive.org/web/20190202050609/http://www.stroustrup.com/hopl2.pdf
Image
Source:
Tip: Wheel or +/− to zoom, drag to pan, Esc to close.