Also known as
"Why Pascal isn't my favorite Programming Language".
No wait, what the hell? That can't be right. I think we meant
"Why C isn't my favorite programming language".
If you are sensitive to the words "F", or "shi'", then this article is not for you! Viewer discretion is advised. Also, if you are in any way related to Ritchie or Brian K. you will have to leave this page right now. We wouldn't want to hurt their feelings. C is pretty simple and cool for its time, I actually like some things about it. Now let's get critical and serious.
The C language is an atrocious piece of sh't. Here, we will describe what the F this C sh't really is, and how atrocious Barney thinks it is. The C language, although an ugly and hot steaming piece of sh't language, can be powerful for programming almost anything, nonetheless.
First off, what the hell is this?
void hello();
We have some void? What the hell? A void cheque? What the F is a void hello? A non-existant hello?
If it's void, then what the flipping french toast is the point of putting it there? Aren't void things useless? Last time I cashed a void check, it didn't make me rich.
Answer: the designers of the C language were so naive they decided to make the language ugly as poo from a Gnu and declare things as "voids"?
Not quite. Void is the result of a function. A non existant result.. that doesn't actually become a result, hence why it is a result that is there. Huh?
Gee, couldn't we have just set this straight in the first place, so we wouldn't have been asking "what the fuck is this C shit?" ....
function hello: void;
Or alternatively:
procedure hello();
Or alternatively:
fun hello();
Or alternatively:
fun hello(): void;
Or alternatively:
procedure hello;
Or alternatively:
fnc hello: void;
Or alternatively:
prc hello();
Or alternatively:
prc hello;
Or alternatively:
proc hello;
But, no, instead of designing a reasonable language with syntax that makes sense, we had to design C in a way that made programmers say aloud "what the fuck is this atrocious piece of sh't you call code?"
[Update 2016: GoLang solves a lot of these problems]
Now how about integers? Surely this is an integer declaration:
int main(int argc, char *argv[])
Nope.. that's not an integer declaration. The C language is so whored up that it's missing pieces of its ass. The above looks like an integer declaration, when in fact it is a function! The C language is so rude and unmannerly that it must abruptly BLURT OUT INTEGER ! INTEGER! I'm an INTEGER! when in fact it's not an integer. He's trying to be a function, that little bugger.
Instead of calling your functions functions, maybe we now call them Cee Fucktions.
What do functions and and integers have in common? Nothing. Why declare a function as an integer, if it is a function? Because it's a fucktion. That is your answer.
Barney actually tells me that "int" does not stand for integer. He says it stands for "international". I started screaming and yelling at Barney because I knew that int didn't stand for international - it stood for "internal".
Now that we've figured out what the this void crack pipe is, and we've also figured out what the role of a C fucktion is in the C language, surely we can discuss the English word ELSE.
C is an effed up language - they use verbose words like ELSE and TYPEDEF, but not words like PROCEDURE and FUNCTION. You'd think, since C is such an atrocious piece of poo, that they'd choose something at least REASONABLE like the symbols "*$#" in place of the word else! Why use the word ELSE when you could use the symbols *$#
ELSE is so verbose - we just CAN'T have that english word in our C language!
But they included it anyway - maybe just to have a good f'ck with our mind. Clever guys! And TYPEDEF? The word "TYPE" is too terse for Cee. Rather, we must use more verbose keywords like THISONEHEREISATYPEDEFINITION. Makes plenty of sense. I'm surprised they didn't shorten it to THETYPEDEF instead of the longer "TYPEDEF".
Pointers? What the *f, you say?
First of all, please explain to me what a snowflake has to do with a pointer?
Hey Barney, does a pointer look like a pointer to you, or a snowflake?
The asterisk, "looks like a snow flake to me", says Barney...
Let's examine another piece of atrocious shit and see what we can F off with.
*s
Looks like a little snow flake and an S to me, Barney. What the fuck? Why clutter up my code with a snowflake, you f-wit? Because, Barney, we are using the C language! Didn't you know? Who the F is barney, you ask? I don't know, I just made him up.
s^
Gee, what's that above? looks like a POINTER to me. Yeah, it's obvious. No fricking snow flakes in front of our S. Whatever the F a snowflake has to do with a pointer, is beyond me. Sometimes POINTERS should look like POINTERS ^^^^ don't you think, instead of f'ing snowflakes, you panzy? ****
Well students and children, let's have a look at our next example:
int num;
int n;
Int num? The F is this? Int num what? Int num who? Where? for what purpose?
var
num: integer;
n: integer;
Ohhhh! I see, it's an integer declaration! Those are variables! It says right there in the contract. But what the F? The above isn't C! That's some verbose peice of crap language. Some language that makes everything clear. The hell with that! That's not what we want. We want to confuse and f'ck with the programmer! Let it be this:
int num;
int n;
int bumbum;
.. whatever the hell that is.
Hey, I bet it's a function! it's a function that returns an integer! No, suprise us Barney, do it. Do it Barney, Suprise us! Barney says it's an integer. It's not a function! Mom is proud.
Let's throw some annoying TABS into the code too, just to make it harder to read and add useless whitespace into our declaration.. because that HELPS people.
int num;
int n;
int bumbum;
Much, much, much better. Makes the program much more readable. Now I get to take one of those rulers from the drawer, and draw lines with a pencil right on the screen. I can line up the "C table" I made with my TABS that I'm addicted to. Then I'll have mom read me one of Torvalds TAB articles to me before bed time, if I'm good and do all my chores.
Although I completely destroy my LCD monitor while penciling in the lines in the "virtual C spreadsheet" so I can read the code, it is so much more readable and the cost of LCD monitors is nothing compared to the time C saves me in coding. Time is money. C saves the day.
Strings? In C, we make you work so hard that it's not even worth using strings.
- It's easier to do advanced graphics rendering in C than it is to use strings.
- Appending and concatenating strings (i.e. working with text) is a complete
waste of your time and no one uses this every day in programming.
- String types (and heck even boolean types) are useless. No one uses true or
false or text in programs. Come on, be realistic - when was the last time you
had to combine two strings together! Never! Never in my entire programming
career.
Want to concatenate some strings in C language, Barney says? I politely respond "yes, Barney.".
First you have to include stdio.h
Then you have to include string.h
Then you have to include stdlib.h
Finally, now that we've included all those atrocious include files, let's concatenate
some strings. Or maybe we should just forget about it, because real programmers
don't use strings or deal with text daily, according to the C language.
int main() {
char *str1 = "Hello ";
char *str2 = "World";
char *str3;
str3 = (char *)malloc((strlen(str1) + strlen(str2) + 1)
*sizeof(char));
/* str3 = (char *)calloc(strlen(str1) + strlen(str2) + 1,
sizeof(char)); */
strcpy(str3, str1);
strcat(str3, str2);
printf("str3: %s\n", str3);
free(str3);
return 0;
}
Couldn't we have just done something like this, Barney?
S = 'something1' + 'something2';
Barney says to stop blaming all the F'ing things on him. He says it's not his fault. It's C's fault! It's nice to have something to blame things on isn't it, Barney.
Now that you've had this lesson about the C language, surely you now understand where the C came from, and what drugs were taken during the creation of the language. Yes, it was created out of rebellion, with aim to F the programmer. Instead of improving an existing similar language, the C language was created from scratch, and was so f'ed up that thousands of f'ed up people felt at home with it. The world, after all, is 90% F'd up. Quite like this article. Point proven. Frick!
Quotes from the inventor?
"I'm still uncertain about the language declaration syntax, where in declarations, syntax is used that mimics the use of the variables being declared. It is one of the things that draws strong criticism" --Dennis Ritchie
Well good boy, he deserves a cookie (chocolate chip).
[Update 2016: This article was written long ago in the early 2000's. GoLang solves most of the problems addressed]
See also:
Documented History Of C Language
And...
Why-C-Is-Not-My-Favorite-Programming-Language
and..
They-C-Programmers-Finally-Got-A-Clue
|