I don't get that C hate. That terse syntax can be misused to produce
unreadable code in C, does not change that I usually find it more
readable than more verbose syntax.
Probably hate is a bit too strong of a word here, at least to describe what I personally feel about this programming language, or any programming language really. And more importantly, it looks like I failed to put properly the humorous cursor at the level I was intended to express it in this comment. Sorry about that.
I'm not sure what you mean with "terse syntax" here. To my mind what this article cover is more about convoluted constructions permitted by the languages. The C-user community tends to have a more abundant use of terse identifiers, which I personally find detrimental to the readability with no sound benefit; but this has nothing to do with syntax. An other thing that the article point to in that case is how much overloaded are the reserved tokens like parentheses and the asterisk, and syntax here too is marginally involved at best. That is, we could use `schtroumpf` and `schtroumpfly` instead of `(` and `)` and `schtroumpfing` instead of `*` without changing anything to the nub of the ergonomics issues this implies. What you can infer from looking at a line of code regarding how the compiler will interpret it is not a question of terseness, it's a matter of how much context sensitive the language is and how much the community follows idioms with assiduity which allows cognitively cheaper correct inferences most of the time.
All programming languages have their pitfalls, it just happens that C comes with many original surprising ones, with paths of least cognitive resistance easily matching big trouble ahead. In a nutshell, C has terrible ergonomics, which makes no wonder it might be despised by some who have to reluctantly use it. But of course C will receive more harsh/gentle critics proportionally to the attention weight it has in the industry.
My point is that any kind of formal notation using symbols can be used to write incomprehensible gibberish. That this is possible does not tell you much about the quality of the formal notation used. I would even say that it is a sign of a good notation that you can write incomprehensible gibberish, because this means that it is flexible enough and too constrained. A compact formal notation can be used to express complicated thing clearly that one can not easily express clearly otherwise. This is why mathematics also uses a lot of formulas and it also very easy to write mathematical formulas no one can understand anymore. But this is not the point, the point is that you can write mathematical formulas that can express complicated things well. IMHO C has a very good trade-off that lets you write complicated programs in a clear way. It should be judged on how well good C code looks and not how incomprehensible code is that intentionally misuses the notation.