That's why I call them "descriptive languages" rather than "executable languages." If you are more comfortable with the word "protocol" (or pick it) than "language" then cool, whatever - I am
not asserting that CSS is a
programming language. At the end of the day, all language is a structured mechanism to impart intentions from one entity to the other. So whether it's as page-turningly exciting as for(i=0; i<10; i++) or as boring as #myElem { position: relative; z-index: -10; } or as deceptively simple as "I'll have the swordfish, please" well, we're just telling systems what to do. I don't see that large of a distinction and actually, the notion that one is better or worse than the other or that they are really not part of the same family may really be a larger problem.
And you're right: HTML is no more a webpage than source code is the application. A webpage is an instance of an instruction set, which may have several different component languages - just as an application is the running instance of what may be several component languages. I dunno. I will absolutely grant that language purists will argue all day that CSS (for example) is not even an descriptive language and again, whatever. I find that sort of debate kind of boring - I think it's more centered around why what (I) know is more important than what (you) know and that type of intellectual ladder climbing is utterly uninteresting to me. [PLEASE NOTE: I'm not pointing this at you, Kurdt or ITTO, but rather many language purists and elitists I've either known or had work for me]. The real purists will argue that a language must have verbs - where HTML and CSS pretty much are adjectives and adverbs (although again, HTML5 contains what SOME would call verbs).
I dropped out of Philosophy 185, the beards and Berkinstock debates just fatigued me. Surprised?

Personally I prefer the name "descriptive syntax" instead of language. To me it's not really a language if you can't even do simple variables. My perspective to programming languages is not based on anything else than functionality. If you can't do anything else than static statements, it's a settings file, not a program. This is why I find webapp scene today completely bizarre. People are trying to make programs out of pages and then wonder why it's a bit hard and disorganized. Making webapp with HTML & CSS is like making software with Word document.
You are right about languages being all about communication between entities. However I would argue that what separates true programming language from descriptive syntax is the ability of evolving. Descriptive syntax can't evolve into anything because it doesn't have memory and you can't modify the elements except add more static content. Real programming language has the capability of evolve something different. Of course you can still argue that it's still descriptive syntax created on-the-fly but I think you get the essential point.
As long as we can't truly clone information in the universe, we will be just trading places and converting information around. Essentially it's all about materia and anti-materia which coincidently translate to 0s and 1s. Irony lies in the realization that this might be modern day's "earth is flat you know" illusion.