<just-a-meaning>
Not main advantages of C:
I think you mean "Note" here.
A. C has small and clear syntax;
B. everything can be written in C;
You use this statement somewhat inconsistently by trying to bash Haskell
with it: Doing everything in C isn't programmer-efficient, but everything
/can/ be done in C in theory. However, /all/ programming languages are
equivalent to C in this respect. (That is, it might not be easy, but it is
possible.)
So to say C can do things Haskell cannot is absurd.
C. programs in C have excellent performance;
D. programs in C can be written rather fast;
E. programs in C can be debugged rather fast.
The MAIN advantage:
Z. any attempt to improve any characteristic above causes great fail in
some other!
I don't think so. For example, most Perl programs I write have excellent
performance, in that I don't notice any delays when I run them.
Examples:
Assembler - improves C, fails D, E.
ADA - improves E, fails A.
Ada's syntax is 'larger', but it isn't so ugly its size becomes bothersome.
Java, Python - try to improve D and E, fails A and C.
On most systems doing most tasks, the performance of interpreted languages
isn't an issue. A Python program will seem as snappy as a C program.
And Python has, in my view, a very clean syntax.
Common LISP - improves D, fails A and C.
Lisp has the simplest syntax that's actually usable by human beings.
Calling Lisp's syntax large is absurd, but calling it absurd is somewhat
defensible. I, however, rather like it.
Note also that people have been making rather good Lisp interpreters since
the mid-1950s. Making a Lisp system as fast as you want isn't a big deal.
(Common Lisp has been called bloated, but that's neither here nor there.)
Haskell - improves D and E, fails B.
Everything /can/ be written in Haskell. (Or, prove that there is a
Turing-computable algorithm that cannot be expressed in Haskell and claim
a very, /very/ large prize. ;-))
etc.
</just-a-meaning>
I don't know why C is prefered to Wirth's languages, such as Modula-2 or
Oberon.
I think Wirth tries to enforce his own ideas too strongly in all of his
languages, from Pascal on out. This is more an issue of semantics than
syntax, but I think the generic Wirth-syntax is rather ugly and verbose,
too.