Love this sentence from Dijkstra (as part of his ACM Turing Lecture on 1972: the Humble Programmer)
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise
I couldn’t agree more with him. When modeling we can omit details that are irrelevant from a given point of view but this does not mean that we lose precision! And you, what’s your take?
ICREA Research Professor at Internet Interdisciplinary Institute (UOC). Leader of the SOM Research Lab focusing on the broad area of systems and software engineering. Home page.
thanks for the sentence, very nice!
Related to this sentence I also like very much another by Edward A. Lee (http://ptolemy.berkeley.edu/~eal/) about the need to make choices:
“More general does not mean Better. Heterogeneity may be better than generality… Useful semantics imply constraints on designers.”
He refers to the fact that no general purpose language can express all different semantics without becoming a monster, and to the impossibility of covering antagonist semantics (Discrete & continuous; synchronous & asynchronous; …). So choices must be made, which means constraining the possibilities and being more focused (in contrast to being more general and broad).
In my humble opinion this has a strong impact on expressiveness and semantic precision, which are, together with abstraction, key benefits of the use of DSLs.
At least, this is my view (but of course, I may be wrong 🙂
Another great sentence about Abstraction, this time by Grady Booch (in hist talk “The Promise, the limits, the beauty of software”):
“The entire history of software engineering is that of the rise in levels of abstraction”
(thanks to Elena Planas for sending it to me)