(Based on a discussion that began in ProgrammingLanguageNeutralGui)
However, I will agree that the distinction can be blurry and that hard boundaries are either hard to find, or have too many exceptions. But we often have to create fuzzy abstractions in order to communicate. If one can change "attributes" of "things", then generally it is declarative, or at least "declarative-oriented". I vaguely remember a topic that debated the diff between "declarative" and "imperative". Maybe if we find it we can prevent a duplicate LaynesLaw battle. ;-)
Why attempt to overload the already overburdened 'declarative'? Why do you insist on communicating with others using definitions that exist only "in TopMind's book"? Why not use the "fuzzy abstractions" that already exist for the concepts you're discussing?
Sigh. Perhaps you should come up with a features list. Focus on language-features that are measurable objectively if your disgust for formality keeps you from making them boolean-qualified. Order the list of features by what TopMind's book says is the order of relevance for ProgrammingLanguageNeutralGui. Call that something other than "declarative" - actually, try to avoid using any words already usurped by the technical jargon - and we can avoid a LaynesLaw battle. (page anchor: a more productive path)
It's not "ursurping". It is not defined clearly enough as is and I don't think it is possible to define it clearly enough because each language can invent its own little world with new rules. DataAndCodeAreTheSameThing. It's fairly easy to preject one as the other. For example, adding accessors like set/get can turn a declarative interface into an imperative one, at least in name.
Is it your goal to take a word you believe is not defined clearly enough and toss an entirely new interpretation into the mix and thus confuse things even further?
What exactly makes it "new"?
The fact that you can't point to anyplace but TopMind's "book" that has a definition of 'declarative' that would put "addressable and has attributes that can be changed" into the declarative category. Or am I mistaken? Can you find me a "not new" definition of declarative that supports your claim?
Where is this official definition that lacks any room for subjective interpretation? Your response assumes one exists. Otherwise, DontComplainWithoutAlternatives just so that you can argue about arguing. And please, none of that "intent" crap of yours.
Huh? I do not assume an 'official definition' of declarative exists. What I said is that, of all the programming definitions of 'declarative' out there - except the one you made up - I know of none of them that put "addressable and has attributes that can be changed" into the declarative category. Can you point to one that clearly gives you that much room for "subjective interpretation"? Actually, and more relevantly, can you honestly say you're using any established definition of 'declarative'? I think not. Cut it out with this HumptyDumpty crap of yours.
Re: "I know of none of them that put...". That is because such is a *specific* manifestation of declarative. Pure functional programming, for example, is often described as "declarative". However, the def itself does not explicitly list functional.
Then find me the definition for which this is a *specific* manifestation. Sigh. Whatever. It seems you reaaaaally want a LaynesLaw battle, because you're still fighting to use words in ways I'm not willing to read them. It doesn't even matter whether one of us is 'right'. And it could all be miscommunication (I really don't see how your 'pure' approach of drawing to one z-buffer then issuing a "showpage" is somehow 'less' declarative than drawing on many z-buffers then issuing a "showpage" that collapses them one atop the other, but perhaps you're imagining something else). Please consider (page anchor: a more productive path).
I'm not sure what you mean here. The imperative version I used had no explicit level buffering. The order drawn determined what is "on top" of each other, similar to a physical drawing/painting where one has to put bottom layers on first (barring some nasty scrubbing or erasing tool).
So? And? You already have 'screen' buffering, which by any measure is simply a single z-buffer. It seems like your logic is: "okay, if we instead have a stack of z-buffers that we procedurally manipulate and another 'pen' variable indicating to which one we're drawing, definition and logic magic happens here, and because of this the relevant aspect of the language is declarative not procedural anymore". Now it's time to point me to the definition and expose the logic that makes this magic happen. URI. Book title and Page number. It should be easy, at least if you were being honest when you said this "is a *specific* manifestation of declarative." My guess is: you were lying through your teeth. But I'm willing to be proven wrong.
The existing definitions are subject to interpretation. I cannot provide any objective Boolean-answer test because none exist. That's just the nature of the beast. We cannot pretend like clinical precision exists when it doesn't. You are displaying artificial anal-ness.
Which existing, established definition is subject to this particular interpretation? Nevermind. You have now confirmed that you were, in fact, lying through your teeth and now you're HandWaving to cover it up.
They ALL are subject to interpretation (of some kind). I challenge you to find one that is not. And if you do, please move it to DeclarativeDefinition or the like. Further, you haven't shown that the "noun with attribute" model has obvious imperative features. You only have to find one to attach some doubt to my determination.
I don't care about subject to interpretation "of some kind". It isn't even relevant if they are, because being subject to interpretation of some kind does not imply being subject to interpretation of a particular kind. Find me an established definition subject to the particular interpretation to which you're subjecting it. Your HumptyDumpty games with language and logic are unacceptable. And if you want a similar example: "Pen up". Noun, modified attribute, directly from your 'pure' imperative example. "Pen to buffer 3" "swapBuffer 3 4", etc.
Exactly! One can *interpret* nouns as verbs and vise versa as described in DataAndCodeAreTheSameThing. EverythingIsRelative. It's all "in the head". I'm just the messenger. If that bothers you, I'm fricken sorry, dude.
When you're done dancing around like a punch-drunk fool who scored a touch-down victory in the wrong end-zone and hasn't realized it yet, feel free to point me to an established definition of 'declarative' that is subject to the interpretation that "nouns and verbs make it declarative". And, perhaps, tell me which point you think you won.
I have not found any definition that is objective enough to perform Vulcan-passable logic on. Now if your argument is that "one cannot talk about country music until they first objectively define country music", then please say so. Your position is wishy-washy. Take the common "what versus how" definition. That can be bent any which way. There is no objective and consensusly accepted algorithm that can take a lang def and spit out an either/or answer.
My argument is more similar to: "You haven't convinced me this Pop music is actually Country music simply, and your declarations that it's true in your book, your pointing out that the two musics probably blend somewhere, and so on seem like sophistry and HandWaving to me." Even if I agree there are no hard lines between Pop and Country, or between White and Yellow, or between two seasons, and so on, I consider it your fallacy every time you say that the two can't be distinguished. Declarative and Procedural actually have a stronger distinction than Country vs. Pop: what vs. how can be layered, but cannot be blended.
Why should I or a reader just take your word for it? The existence of clarity of a definition is considered "unknown" until shown otherwise. Clear is not the default. You yourself have shown that verbs can be interpreted as nouns if one wants to interpret it that way. -t