Update
This commit is contained in:
parent
8bbd48afb6
commit
2bd0010bb2
14 changed files with 44 additions and 28 deletions
19
c.md
19
c.md
|
@ -2,7 +2,7 @@
|
|||
|
||||
{ We have a [C tutorial](c_tutorial.md)! ~drummyfish }
|
||||
|
||||
C is a [low level](low_level.md), [statically typed](static_typing.md) [imperative](imperative.md) compiled [programming language](programming_language.md), the go-to language of most [less retarded software](lrs.md). It is the absolutely preferred language of the [suckless](suckless.md) community as well as of most true experts, for example the [Linux](linux.md) and [OpenBSD](openbsd.md) developers, because of its good minimal design, level of control, uncontested performance and a greatly established and tested status.
|
||||
C is a [low level](low_level.md), [statically typed](static_typing.md) [imperative](imperative.md) compiled [programming language](programming_language.md), the go-to language of most [less retarded](lrs.md). It is the absolutely preferred language of the [suckless](suckless.md) community as well as of most true experts, for example the [Linux](linux.md) and [OpenBSD](openbsd.md) developers, because of its good minimal design, level of control, uncontested performance and a greatly established and tested status.
|
||||
|
||||
C is usually not considered an easy language to learn because of its low level nature: it requires good understanding of how a computer actually works and doesn't prevent the programmer from shooting himself in the foot. Programmer is given full control (and therefore responsibility). There are things considered "tricky" which one must be aware of, such as undefined behavior of certain operators and raw pointers. This is what can discourage a lot of modern "coding monkeys" from choosing C, but it's also what inevitably allows such great performance -- undefined behavior allows the compiler to choose the most efficient implementation.
|
||||
|
||||
|
@ -19,11 +19,12 @@ TODO
|
|||
C is not a single language, there have been a few standards over the years since its inception in 1970s. The notable standards and versions are:
|
||||
|
||||
- **K&R C**: C as described by its inventors in the book *The C Programming Language*, before official standardization. This is kind of too ancient nowadays.
|
||||
- **C89/C90 (ANSI/ISO C)**: First fully standardized version, usable even today.
|
||||
- **C89/C90 (ANSI/ISO C)**: First fully standardized version, usable even today, many hardcore C programmers stick to this version so as to enjoy maximum compiler support.
|
||||
- **C95**: A minor update of the previous standard, adds wide character support.
|
||||
- **C99**: Updated standard from the year 1999 striking a great balance between "modern" and "good old". This is a good version to use in LRS programs, but will be a little less supported than C89.
|
||||
- **C99**: Updated standard from the year 1999 striking a great balance between "[modern](modern.md)" and "good old". This is a good version to use in [LRS](lrs.md) programs, but will be a little less supported than C89, even though still very well supported.
|
||||
- **C11**: Updated standard from the year 2011. This one is too [bloated](bloat.md) and isn't worth using.
|
||||
- **C17/C18**: Yet another update, yet more bloated and not worth using.
|
||||
- **C17/C18**: Yet another update, yet more bloated and not worth using anymore.
|
||||
- ...
|
||||
|
||||
LRS should use C99 or C89 as the newer versions are considered [bloat](bloat.md) and don't have such great support in compilers, making them less portable and therefore less free.
|
||||
|
||||
|
@ -31,10 +32,12 @@ The standards of C99 and older are considered pretty [future-proof](future_proof
|
|||
|
||||
## Compilers
|
||||
|
||||
- [gcc](gcc.md)
|
||||
- [clang](clang.md)
|
||||
- [tcc](tcc.md)
|
||||
- scc
|
||||
- [gcc](gcc.md): the main "big name" that can compile all kinds of languages including C, used by default in many places, very [bloated](bloat.md)
|
||||
- [clang](clang.md): another big bloated compiler, kind of competes with gcc
|
||||
- [tcc](tcc.md): tiny C compiler, [suckless](suckless.md), cannot optimize as well as the big compilers but is pretty elegant
|
||||
- [scc](scc.md): another small/suckless C compiler
|
||||
- [8c](8c.md), [8cc](8cc.md)
|
||||
- ...
|
||||
|
||||
## Standard Library
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue