DEV Community

Discussion on: Imperative vs declarative

Collapse
 
stereobooster profile image
stereobooster

I would say yes. The question here is the separation of levels of abstractions. All modern computer-based systems are imperative deep inside, there is always the rock of Silica which takes imperative instructions, like to direct stream of electrons to right or left channel, right?

Relational databases consist of imperative loops and B-Trees inside, it's just implementation is hidden from you good enough so you don't have to think about it.

Or think about "goto considered harmful" paper. Goto is an imperative construct and Dijkstra wanted to remove it from high-level programming languages, but goto still exists in lower levels in form of JMP and it is ok. Loops, when compiled, are turned in JMP instructions.

Collapse
 
somedood profile image
Basti Ortiz

Oooh, I just thought of something pretty interesting. Based on the answers above, is it controversial to classify HTML and CSS as declarative "programming" languages?

Thread Thread
 
stereobooster profile image
stereobooster • Edited
  1. The idea of the post is to show that dichotomy of imperative/declarative is false. It is rather a spectrum.
  2. Different parts of CSS are on different levels of the spectrum. If we would consider position and flow, CSS hardly classifies as declarative, because you can't specify "declaratively" even simple idea of centering something relative to something else. But specifying colors is pretty "declarative".
  3. One more example of implementation detail, which CSS makes me think about is measurement units
  4. See the video from decostructconf (link in the post). There is an explanation, how this task could be solved in a more "declarative" way
Thread Thread
 
somedood profile image
Basti Ortiz

I see now. From the way you put it, I definitely agree that it is indeed a spectrum.