Skip to content

Instantly share code, notes, and snippets.

@raiph
Last active August 7, 2020 20:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raiph/4f13547ad3585307f20addcc8b98db26 to your computer and use it in GitHub Desktop.
Save raiph/4f13547ad3585307f20addcc8b98db26 to your computer and use it in GitHub Desktop.
2009/2013 papers: The Power of Interoperability: Why Objects Are Inevitable

https://www.cs.utexas.edu/~wcook/Drafts/2009/essay.pdf

https://www.cs.cmu.edu/~aldrich/papers/objects-essay.pdf

Let us first consider the theory of how modular extension facilitates software evolution. The need for a software system to support new, unanticipated implementations of an abstraction was discussed in Parnas’s seminal paper on the criteria to be used in decomposing systems into modules. Parnas’s argument has become a pillar of software design: nearly all software must change over time, so a software system should be decomposed in a way that hides (i.e. isolates) decisions that are likely to change. The implication is that when change comes, it can be accommodated by providin a new implementation of the abstraction captured by the module’s interface. So extension is important for facilitating software evolution. However, is the interoperability of extensions necessary in practice, beyond examples such as widgets?

What if that notion is applied to a PL -- or, more to the point, a metalanguage?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment