|
|
|
|
|
by rramadass
908 days ago
|
|
> so the program we write is a meta program that constructs the OO system procedurally. The system is not visible in the program text, it is created as a side effect of running the procedures and remains invisible, Great way of stating it! Most people who cargo-cult "OO is bad" don't get this. > a good OO system will, by necessity, be highly indirect compared to the program text. A good OO system will also have sufficient benefits that this trade-off is very much worthwhile, Very true. This is the reason OOD/OOP has been a great success that has led to the explosion of software that we take for granted today. > My approach to the tradeoff is to remove the indirection in the program text by making it possible to directly express components, connectors and systems in the program text, rather than having to build them all procedurally. At language source level (eg. DSL) or binary component level (needs runtime support a la COM) ? |
|
Alas, many people who advocate OO don't get this either, and in particular they don't see this as a problem to be solved.
Having to do things indirectly is not a good state of affairs. See "goto statement considered harmful". [1]
It is similar to the way we had to work with text editors made for printing terminals: "...requires a mental skill like that of blindfold chess; the user must keep a mental image of the text he is editing, which he cannot easily see, and calculate how each of his editing command `moves' changes it." [2]
> OOD/OOP has been a great success that has led to the explosion of software that we take for granted today.
Yes, people forget that the problems we are now having are the ones that are due to OO success.
> At language source level (eg. DSL) or binary component level (needs runtime support a la COM)
Language level. At the systems level we know how to build these types of system (COM, Smalltalk, Objective-C, Unix pipes and filter, REST, notification systems, ...), what we lack is the ability to express them in the program text: https://objective.st/
[1] https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.p...
[2] https://www.gnu.org/software/emacs/emacs-paper.html