Follow TV Tropes

Following

History MediaNotes / TheCLanguage

Go To

OR

Is there an issue? Send a MessageReason:
None


C, sometimes alongside its close sibling C++, remains the bedrock of the Platform/{{Unix}} (and by extension its descendants, including Platform/MacOS and Linux and all ''their'' descendants) and Platform/MicrosoftWindows {{UsefulNotes/operating system}}s to this day. C and Unix in particular are so intertwined that C compilers on non-Unix systems often include tools to duplicate as much of a Unix environment as possible, including make and even Unix-like shells.

%%As Unix's popularity grew in academia, C displaced Fortran as the language of choice for scientific computing, before being itself displaced by UsefulNotes/{{Python}}, MATLAB, R, Mathematica and C++.

to:

C, sometimes alongside its close sibling C++, remains the bedrock of the Platform/{{Unix}} (and by extension its descendants, including Platform/MacOS and Linux and all ''their'' descendants) and Platform/MicrosoftWindows {{UsefulNotes/operating {{MediaNotes/operating system}}s to this day. C and Unix in particular are so intertwined that C compilers on non-Unix systems often include tools to duplicate as much of a Unix environment as possible, including make and even Unix-like shells.

%%As Unix's popularity grew in academia, C displaced Fortran as the language of choice for scientific computing, before being itself displaced by UsefulNotes/{{Python}}, MediaNotes/{{Python}}, MATLAB, R, Mathematica and C++.



With the advent of higher level and safer languages, however, C started going the way of Latin. It's still considered essential for operating systems, hardware interfacing, and embedded systems (say, a thermostat or a pacemaker), but when it comes to applications, it's something of an elder statesman: it's generally accepted as an important pioneer, but it's often sidelined because of its antiquated methods, bare-bones nature, and propensity for bug-riddled coding. Many commercial programmers and businesses that don't have to work with preexisting C codebases or require the performance boost and direct hardware access of low-level code have graduated to one of its higher levels: its direct descendants like C# or Java; languages like UsefulNotes/{{Rust}} or Go; scripting languages like Perl, UsefulNotes/{{Ruby}}, or UsefulNotes/{{Python}}; or premade frameworks like [[https://en.wikipedia.org/wiki/Qt_(software) Qt]] (for applications) or UsefulNotes/{{Unity}} (for games). These are considered quicker to write code for and offer safer alternatives to raw C coding.

to:

With the advent of higher level and safer languages, however, C started going the way of Latin. It's still considered essential for operating systems, hardware interfacing, and embedded systems (say, a thermostat or a pacemaker), but when it comes to applications, it's something of an elder statesman: it's generally accepted as an important pioneer, but it's often sidelined because of its antiquated methods, bare-bones nature, and propensity for bug-riddled coding. Many commercial programmers and businesses that don't have to work with preexisting C codebases or require the performance boost and direct hardware access of low-level code have graduated to one of its higher levels: its direct descendants like C# or Java; languages like UsefulNotes/{{Rust}} MediaNotes/{{Rust}} or Go; scripting languages like Perl, UsefulNotes/{{Ruby}}, MediaNotes/{{Ruby}}, or UsefulNotes/{{Python}}; MediaNotes/{{Python}}; or premade frameworks like [[https://en.wikipedia.org/wiki/Qt_(software) Qt]] (for applications) or UsefulNotes/{{Unity}} MediaNotes/{{Unity}} (for games). These are considered quicker to write code for and offer safer alternatives to raw C coding.



Higher level programming languages like UsefulNotes/{{Python}} are written and implemented in C precisely ''because'' they can manipulate memory, whereas most other languages can't. The underlying C code is automated so the programmer doesn't have to worry about the minutiae, with extra safety features and easier commands to perform complex tasks.

to:

Higher level programming languages like UsefulNotes/{{Python}} MediaNotes/{{Python}} are written and implemented in C precisely ''because'' they can manipulate memory, whereas most other languages can't. The underlying C code is automated so the programmer doesn't have to worry about the minutiae, with extra safety features and easier commands to perform complex tasks.
Is there an issue? Send a MessageReason:
None


C is an [[https://en.wikipedia.org/wiki/Imperative_programming Imperative]], [[https://en.wikipedia.org/wiki/Type_system#STATIC Statically-Typed]], [[https://en.wikipedia.org/wiki/Procedural_programming Procedural]] UsefulNotes/ProgrammingLanguage. It's often considered the mother of modern programming languages, to the point where most non-specialized new languages are either refinements on its strengths or attempts to avoid breaking keyboards over its shortcomings. Or, more often, both. This language, like the Platform/{{Unix}} system also created at Bell Labs, was developed at a time when computing was done on mainframes by computer black-belts, and it does not hold your hand.

to:

C is an [[https://en.wikipedia.org/wiki/Imperative_programming Imperative]], [[https://en.wikipedia.org/wiki/Type_system#STATIC Statically-Typed]], [[https://en.wikipedia.org/wiki/Procedural_programming Procedural]] UsefulNotes/ProgrammingLanguage.MediaNotes/ProgrammingLanguage. It's often considered the mother of modern programming languages, to the point where most non-specialized new languages are either refinements on its strengths or attempts to avoid breaking keyboards over its shortcomings. Or, more often, both. This language, like the Platform/{{Unix}} system also created at Bell Labs, was developed at a time when computing was done on mainframes by computer black-belts, and it does not hold your hand.
Is there an issue? Send a MessageReason:
Page was movedfrom UsefulNotes.The C Language to MediaNotes.The C Language. Null edit to update page.
Is there an issue? Send a MessageReason:
None


C is an [[https://en.wikipedia.org/wiki/Imperative_programming Imperative]], [[https://en.wikipedia.org/wiki/Type_system#STATIC Statically-Typed]], [[https://en.wikipedia.org/wiki/Procedural_programming Procedural]] UsefulNotes/ProgrammingLanguage. It's often considered the mother of modern programming languages, to the point where most non-specialized new languages are either refinements on its strengths or attempts to avoid breaking keyboards over its shortcomings. Or, more often, both. This language, like the UsefulNotes/{{Unix}} system also created at Bell Labs, was developed at a time when computing was done on mainframes by computer black-belts, and it does not hold your hand.

to:

C is an [[https://en.wikipedia.org/wiki/Imperative_programming Imperative]], [[https://en.wikipedia.org/wiki/Type_system#STATIC Statically-Typed]], [[https://en.wikipedia.org/wiki/Procedural_programming Procedural]] UsefulNotes/ProgrammingLanguage. It's often considered the mother of modern programming languages, to the point where most non-specialized new languages are either refinements on its strengths or attempts to avoid breaking keyboards over its shortcomings. Or, more often, both. This language, like the UsefulNotes/{{Unix}} Platform/{{Unix}} system also created at Bell Labs, was developed at a time when computing was done on mainframes by computer black-belts, and it does not hold your hand.



C was co-created by Dennis Ritchie and Ken Thompson to use to help make a port of UsefulNotes/{{UNIX}}. Thompson originally intended to write UNIX in [[https://en.wikipedia.org/wiki/BCPL BCPL]]; however, since he didn't have the official description or documentation, he accidentally developed a much simpler and less wordy version now known as [[https://en.wikipedia.org/wiki/B_(programming_language) B]]. Ritchie then further improved B, which resulted in creating a new language, C.[[note]]This became the start of a famous {{Snowclone}} in computing, with C's own successor being dubbed "C++" as a pun, after a command in C to increase a number by one. C++'s own successor would ''then'' be named "C#", and then all bets were off, with languages like C[=--=], D, F#, J#, and R.[[/note]]

to:

C was co-created by Dennis Ritchie and Ken Thompson to use to help make a port of UsefulNotes/{{UNIX}}.Platform/{{UNIX}}. Thompson originally intended to write UNIX in [[https://en.wikipedia.org/wiki/BCPL BCPL]]; however, since he didn't have the official description or documentation, he accidentally developed a much simpler and less wordy version now known as [[https://en.wikipedia.org/wiki/B_(programming_language) B]]. Ritchie then further improved B, which resulted in creating a new language, C.[[note]]This became the start of a famous {{Snowclone}} in computing, with C's own successor being dubbed "C++" as a pun, after a command in C to increase a number by one. C++'s own successor would ''then'' be named "C#", and then all bets were off, with languages like C[=--=], D, F#, J#, and R.[[/note]]



C, sometimes alongside its close sibling C++, remains the bedrock of the UsefulNotes/{{Unix}} (and by extension its descendants, including UsefulNotes/MacOS and Linux and all ''their'' descendants) and UsefulNotes/MicrosoftWindows {{UsefulNotes/operating system}}s to this day. C and Unix in particular are so intertwined that C compilers on non-Unix systems often include tools to duplicate as much of a Unix environment as possible, including make and even Unix-like shells.

to:

C, sometimes alongside its close sibling C++, remains the bedrock of the UsefulNotes/{{Unix}} Platform/{{Unix}} (and by extension its descendants, including UsefulNotes/MacOS Platform/MacOS and Linux and all ''their'' descendants) and UsefulNotes/MicrosoftWindows Platform/MicrosoftWindows {{UsefulNotes/operating system}}s to this day. C and Unix in particular are so intertwined that C compilers on non-Unix systems often include tools to duplicate as much of a Unix environment as possible, including make and even Unix-like shells.



%%Hence, chunks of code can be reused many, many times according to the control flow (the logic built into a program), as opposed to older "batch" programs which would be fed input and spit the results back out at you. C's modular nature comes from its role as a systems language designed to program {{UsefulNotes/UNIX}} at [=AT&T's=] Bell Labs, and to this day it remains a popular language for operating systems. Both UsefulNotes/MicrosoftWindows and the UsefulNotes/{{Linux}} kernel are written in C, and [[UsefulNotes/MacOS OSX]] is written in a variant called "Objective-C".

to:

%%Hence, chunks of code can be reused many, many times according to the control flow (the logic built into a program), as opposed to older "batch" programs which would be fed input and spit the results back out at you. C's modular nature comes from its role as a systems language designed to program {{UsefulNotes/UNIX}} {{Platform/UNIX}} at [=AT&T's=] Bell Labs, and to this day it remains a popular language for operating systems. Both UsefulNotes/MicrosoftWindows Platform/MicrosoftWindows and the UsefulNotes/{{Linux}} Platform/{{Linux}} kernel are written in C, and [[UsefulNotes/MacOS [[Platform/MacOS OSX]] is written in a variant called "Objective-C".



* ''Franchise/{{Pokemon}} [[UsefulNotes/GameBoyAdvance Generation III,]] [[UsefulNotes/NintendoDS IV and V]] main series games. ''[[labelnote:List of Games]][[VideoGame/PokemonRubyAndSapphire Ruby, Sapphire & Emerald]], [[VideoGame/PokemonRedAndBlue Fire Red & Leaf Green]], [[VideoGame/PokemonDiamondAndPearl Diamond, Pearl & Platinum]], [[VideoGame/PokemonGoldAndSilver HeartGold & SoulSilver]], [[VideoGame/PokemonBlackAndWhite Black & White]], [[VideoGame/PokemonBlack2AndWhite2 Black 2 & White 2]].[[/labelnote]]

to:

* ''Franchise/{{Pokemon}} [[UsefulNotes/GameBoyAdvance [[Platform/GameBoyAdvance Generation III,]] [[UsefulNotes/NintendoDS [[Platform/NintendoDS IV and V]] main series games. ''[[labelnote:List of Games]][[VideoGame/PokemonRubyAndSapphire Ruby, Sapphire & Emerald]], [[VideoGame/PokemonRedAndBlue Fire Red & Leaf Green]], [[VideoGame/PokemonDiamondAndPearl Diamond, Pearl & Platinum]], [[VideoGame/PokemonGoldAndSilver HeartGold & SoulSilver]], [[VideoGame/PokemonBlackAndWhite Black & White]], [[VideoGame/PokemonBlack2AndWhite2 Black 2 & White 2]].[[/labelnote]]
Is there an issue? Send a MessageReason:
None


This is where C trusting the programmer really comes into play (and possibly back to bite them). C will not throw an error if you try to add a number and a string [[note]](well, technically a char array)[[/note]] together; instead, it will cast it based on the format specifier provided [=(%d, %s, etc)=]. Meaning the string "c" will be converted to its numerical equivalent and then added to b.

to:

This is where C trusting the programmer really comes into play (and possibly back to bite them). C will not throw an error if you try to add a number and a string [[note]](well, string[[note]](well, technically a char array)[[/note]] together; instead, it will cast it based on the format specifier provided [=(%d, %s, etc)=]. Meaning the string "c" will be converted to its numerical equivalent and then added to b.
Is there an issue? Send a MessageReason:
None


%%When discussing C, it's often rolled up with C++ to become "C/C++". Almost all valid C code will run with no problems inside C++, since C++ was designed to wrap around C like a matryoshka doll.[[note]]C++ tends to be more pedantic with its casting, requiring an explicit cast where C would cast implicitly, and reserves more words as keywords which breaks any code which uses them as names. It also maintains less compatibility with older pre-1989 C code. C++ compilers (such as Microsoft Visual C++) tend to include C modes/compilers as standard, though.[[/note]] However, it's something of a BerserkButton for some programmers, who say C++ has its own entirely different coding practices, since C++ is ''object-oriented'' rather than procedural. In C, things such as the player's health, location, and weapon are treated as individual datum by the code, which can be changed by any procedure that is directed to change it. In C++ however, that data is instead (at least supposed to be) part of an object, which is concealed from the rest of the code. In practice, however, due to many codebases starting out as C before being upgraded to C++ at some point in their history, it's common to see projects that mix both languages' conventions and coding styles.

to:

%%When discussing C, it's often rolled up with C++ to become "C/C++". Almost all valid C code will run with no problems inside C++, since C++ was designed to wrap around C like a matryoshka doll. [[note]]C++ tends to be more pedantic with its casting, requiring an explicit cast where C would cast implicitly, and reserves more words as keywords which breaks any code which uses them as names. It also maintains less compatibility with older pre-1989 C code. C++ compilers (such as Microsoft Visual C++) tend to include C modes/compilers as standard, though.[[/note]] However, it's something of a BerserkButton for some programmers, who say C++ has its own entirely different coding practices, since C++ is ''object-oriented'' rather than procedural. In C, things such as the player's health, location, and weapon are treated as individual datum by the code, which can be changed by any procedure that is directed to change it. In C++ however, that data is instead (at least supposed to be) part of an object, which is concealed from the rest of the code. In practice, however, due to many codebases starting out as C before being upgraded to C++ at some point in their history, it's common to see projects that mix both languages' conventions and coding styles.



In the [=DOS=] days, you could only run one program at a time, so it was no sweat for the computer to hand over the hardware's reins so a program could manipulate it. But the rise of multitasking operating systems like Windows, which have to coordinate dozens of different programs contending for system resources, made such low-level hardware access [[note]]aside from specialized tasks like interfacing with custom peripherals[[/note]] unnecessary, which fueled the need for languages with greater abstraction.

to:

In the [=DOS=] days, you could only run one program at a time, so it was no sweat for the computer to hand over the hardware's reins so a program could manipulate it. But the rise of multitasking operating systems like Windows, which have to coordinate dozens of different programs contending for system resources, made such low-level hardware access [[note]]aside access[[note]]aside from specialized tasks like interfacing with custom peripherals[[/note]] unnecessary, which fueled the need for languages with greater abstraction.
Is there an issue? Send a MessageReason:
None



to:

[[caption-width-right:250:printf("hello, world!\n");]]
Is there an issue? Send a MessageReason:
None


* ''VideoGame/TheLegendOfZeldaOcarinaOfTime''[[note]]Like ''Super Mario 64'' before it, a decompilation project is currently underway[[/note]]

to:

* ''VideoGame/TheLegendOfZeldaOcarinaOfTime''[[note]]Like ''Super Mario 64'' before it, a decompilation project is currently underway[[/note]]fans have managed to decompile the game's C source code.[[/note]]

Top