I intended not to go into a sentence-by-sentence one-uppance, but, well...
Craze Frog wrote:- C is unreadable
Compare { vs. begin
Matter of taste at best. I'd be interested to hear someone who specializes in this stuff on the matter.
- C is untypable
{ requires AltGr+7, which means stretching or moving the hands a lot
A two-keys combination is hardly "untypable".
- C is illogical
An empty parameter list does not mean no parameters, but any number of parameters.
It's trivial to have your compiler spit out a warning on this.
In "int unsigned* ptr, notptr;" notptr does not become a pointer, but it becomes unsigned.
Yes. So?
- The de facto free C compiler, gcc, is very slow (I'm talking about the compilation time)
As compared to a Pascal compiler? I'd like to see a
fair comparison on this, i.e. code that is functionally equivalent, compiled on compilers of comparable scope.
- C is inconsistent
* in declarations means you want a pointer.
* in normal lvalues means you don't want the pointer, but the value it points to.
As I said, it might have helped to read the rationale. (Declaration and most common use case should be identical. Excuse me if I don't look up the exact wording ATM.)
- C requires makefiles or similar
Lots of typing and thinking for what can easily be done automatically by the compiler
If you take a well-written Makefile, it can next-to-trivially be adapted to any other project you might work on, because dependency handling
can be done automatically by a (C) compiler, too.
- C requires header files
Lots of typing for what can easily be done automatically by the compiler.
I consider header files to be one of the biggest
assets of C/C++. Header-less languages like C# or Java basically depend on special tools (e.g. Javadoc) to provide proper overviews over what a piece of code can do or not.
- C doesn't know basic math
If a has the value 6385921 and you do "a += 1;" then a may well have the value 6385925 if a was declared as int *.
If a is a pointer to an integer value, I would expect a + 1 to be a pointer to the
next integer value, so I don't see the problem here.