Expression problem: Difference between revisions

Content deleted Content added
W7cook (talk | contribs)
Clarified and added detail about the early history of the problem. Yes, I am William Cook, so I was there.
W7cook (talk | contribs)
Made a few more edits. I filled out citations, organized the intro and history clearly. I have a few touchups to do.
Line 21:
| url= https://www.cs.tufts.edu/~nr/cs257/archive/john-reynolds/procedural-data-structures.pdf
}}
</ref> Reynolds discussed two forms of Data Abstraction: User-defined Types, which are now known as Abstract Data Types (ADTS) (not to be confused with *Algebraic* Data Types), and Procedural Data Structures, which are now understood as a primitive form of Objects with only one method. He argued that they are complementary, in that User-defined Types could be extended with new behaviors, and Procedural Data Structures could be extended with new representations. HisHe also discussed work on procedures as data going back to 1967. However, Reynold's conclusions based on this early analysis turned out to be completely wrong:
he wrote that adding a second method to an object "is more a tour de force than a specimen of
clear programming," which completely missed the Object-Oriented paradigm and its
Line 42:
| isbn= 978-3-540-46450-1}}
</ref>
applied Reynold's workseminal idea in the context of Objects and Abstract Data Types, which had both grown extensively. Cook identified the matrix of representations and behaviors that are implicit in a Data Abstraction, and discussed how ADTs are based on the behavioral axis, while Objects are based on representations. He provides extensive discussion of work on ADTs and Objects that are relevant to the problem. He also reviewed implementations in both styles, discussed extensibility in both directions, and also identified the importance of static typing.
Most importantly, he discussed situations in which there was more flexibility than
Reynolds considered, including internalization and optimization of methods.
 
At ECOOP '98, Krishnamurthi et al.<ref name="Synth">