Chris Sealy in Better Semantics with CSS Combinators & Selectors:

I’m going to begin with a provocative claim: I believe CSS is one of the most difficult-​​to-​​master computer languages we have. It doesn’t have a complex syntax and you certainly don’t need a doctorate in IT to understand it. However, it’s one of the only popular languages that isn’t “logical” — and I mean that in the most literal sense.
bq. Unlike other familiar web development languages such as JavaScript, PHP or even SQL, problems aren’t worked out via common logic. Spoken algorithms like “if X then do Y, otherwise do Z” or “select all of Y then do X with them” don’t translate to a language like CSS. Simply put; it’s a styling language. A language for designers, not developers. Some of the most experienced programmers I’ve worked with struggle to comprehend CSS for this very reason.

http://designfestival.com/better-semantics-with-css-combinators-and-selectors/