Note to the reader: Following the conference, I had a discussion with Terry, where we agreed that every listener hears a presentation differently-and what is communicated may not be what was intended. In that spirit, what follows is my interpretation of Terry’s words, based on notes which I took. This article should not be confused with what might have resulted from transcribing an audio tape of his address. I will admit my bias here: I consider myself a designer more than a programmer!
{"title":"Object-oriented programming versus object-oriented design (keynote address): what's the connection?","authors":"T. Winograd","doi":"10.1145/319016.319025","DOIUrl":"https://doi.org/10.1145/319016.319025","url":null,"abstract":"Note to the reader: Following the conference, I had a discussion with Terry, where we agreed that every listener hears a presentation differently-and what is communicated may not be what was intended. In that spirit, what follows is my interpretation of Terry’s words, based on notes which I took. This article should not be confused with what might have resulted from transcribing an audio tape of his address. I will admit my bias here: I consider myself a designer more than a programmer!","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131415683","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Due to the unexpectedly large number of participants, it became necessary to organize this workshop a bit more than what the participants (and organizers) might have preferred. Since there were approximately 50 attendees, the chosen format was 4 sessions representing general themes, with 4 attendees presenting their position for each session. The first presentation of a session was longer than the rest and was intended to set the tone for the rest of the session. Each session is summarized below by a brief synopsis of the presentations from the session chairman. Each session ended with a question/answer period. The minutes of these periods are included with each session. The final session of the workshop was a panel discussion attempting to answer the question: “what is an object-oriented operating system?”
{"title":"Object-orientation in operating systems (workshop session)","authors":"V. Russo, M. Shapiro","doi":"10.1145/319016.319052","DOIUrl":"https://doi.org/10.1145/319016.319052","url":null,"abstract":"Due to the unexpectedly large number of participants, it became necessary to organize this workshop a bit more than what the participants (and organizers) might have preferred. Since there were approximately 50 attendees, the chosen format was 4 sessions representing general themes, with 4 attendees presenting their position for each session. The first presentation of a session was longer than the rest and was intended to set the tone for the rest of the session. Each session is summarized below by a brief synopsis of the presentations from the session chairman. Each session ended with a question/answer period. The minutes of these periods are included with each session. The final session of the workshop was a panel discussion attempting to answer the question: “what is an object-oriented operating system?”","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115709651","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Note: I attended this workshop and also acted as scribe Due to his busy schedule, Ed was unable to cast these notes into his own form. Thus, the comments below represent my interpretation of the discussion. In an ironic twist, this report, on a discussion about using graphics, contains no graphics. I am afraid this represents my own tendency to capture words over pictures, rather than any lack of examples during the day. I found the conversation we held that day to be a valuable one, and hope that I have not incorporated too many inaccuracies into this report. . . . K.C.B.Y.
{"title":"Graphics for object oriented software engineering (workshop session)","authors":"Edward V. Barard","doi":"10.1145/319016.319045","DOIUrl":"https://doi.org/10.1145/319016.319045","url":null,"abstract":"Note: I attended this workshop and also acted as scribe Due to his busy schedule, Ed was unable to cast these notes into his own form. Thus, the comments below represent my interpretation of the discussion. In an ironic twist, this report, on a discussion about using graphics, contains no graphics. I am afraid this represents my own tendency to capture words over pictures, rather than any lack of examples during the day. I found the conversation we held that day to be a valuable one, and hope that I have not incorporated too many inaccuracies into this report. . . . K.C.B.Y.","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116283572","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Allen Wirfs-Brock, J. Vlissides, Ward Cunningham, Ralph E. Johnson, Lonnie Bollette
An object-oriented framework is a skeleton implementation of an application or application subsystem in a particular problem domain. It is composed of concrete and abstract classes and provides a model of interaction or collaboration among the instances of classes defined by the framework. A framework is used by configuring or connecting concrete classes and deriving new concrete classes from abstract ones provided in the framework. A framework is a reusable design because all users of a framework share its basic class structure and collaboration model.
{"title":"Designing reusable designs (panel session): experiences designing object-oriented frameworks","authors":"Allen Wirfs-Brock, J. Vlissides, Ward Cunningham, Ralph E. Johnson, Lonnie Bollette","doi":"10.1145/319016.319035","DOIUrl":"https://doi.org/10.1145/319016.319035","url":null,"abstract":"An object-oriented framework is a skeleton implementation of an application or application subsystem in a particular problem domain. It is composed of concrete and abstract classes and provides a model of interaction or collaboration among the instances of classes defined by the framework. A framework is used by configuring or connecting concrete classes and deriving new concrete classes from abstract ones provided in the framework. A framework is a reusable design because all users of a framework share its basic class structure and collaboration model.","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125439683","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This paper reviews and illustrates a direct manipulation approach to visualization of complex objects called painting multiple views. We describe a programming model for direct manipulation in general and for painting in particular, based on simple constraints between entities in an the underlying scientific database and the components of displays used to examine the data. With this model, the original notion of “brushing scatterplots” is easily extended.
{"title":"Painting multiple views of complex objects","authors":"J. McDonald, W. Stuetzle, A. Buja","doi":"10.1145/97945.97975","DOIUrl":"https://doi.org/10.1145/97945.97975","url":null,"abstract":"This paper reviews and illustrates a direct manipulation approach to visualization of complex objects called painting multiple views. We describe a programming model for direct manipulation in general and for painting in particular, based on simple constraints between entities in an the underlying scientific database and the components of displays used to examine the data. With this model, the original notion of “brushing scatterplots” is easily extended.","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"44 4","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114121425","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A new theory of concurrent objects is presented. The theory has the important advantage of being based directly on a logic called rewriting logic in which concurrent object-oriented computation exactly corresponds to logical deduction. This deduction is performed by concurrent rewriting modulo structural axioms of associativity, commutativity and identity that capture abstractly the essential aspects of communication in a distributed object-oriented configuration made up of concurrent objects and messages. Thanks to this axiomatization, it becomes possible to study the behavior of concurrent objects by formal methods in a logic intrinsic to their computation. The relationship with Actors and with other models of concurrent computation is also discussed. A direct fruit of this theory is a new language, called Maude, to program concurrent object-oriented modules in an entirely declarative way using rewriting logic; modules written in this language are used to illustrate the main ideas with examples. Maude contains OBJ3 as a functional sublanguage and provides a simple and semantically rigorous integration of functional programming and concurrent object-oriented programming.
{"title":"A logical theory of concurrent objects","authors":"J. Meseguer","doi":"10.1145/97945.97958","DOIUrl":"https://doi.org/10.1145/97945.97958","url":null,"abstract":"A new theory of concurrent objects is presented. The theory has the important advantage of being based directly on a logic called rewriting logic in which concurrent object-oriented computation exactly corresponds to logical deduction. This deduction is performed by concurrent rewriting modulo structural axioms of associativity, commutativity and identity that capture abstractly the essential aspects of communication in a distributed object-oriented configuration made up of concurrent objects and messages. Thanks to this axiomatization, it becomes possible to study the behavior of concurrent objects by formal methods in a logic intrinsic to their computation. The relationship with Actors and with other models of concurrent computation is also discussed. A direct fruit of this theory is a new language, called Maude, to program concurrent object-oriented modules in an entirely declarative way using rewriting logic; modules written in this language are used to illustrate the main ideas with examples. Maude contains OBJ3 as a functional sublanguage and provides a simple and semantically rigorous integration of functional programming and concurrent object-oriented programming.","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115831749","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
While the Model-View-Controller (MVC) framework has contributed to many aspects of user interface development in Smalltalk, interfaces produced with MVC often have highly coupled model, view, and controller classes. This coupling and the effort required to use MVC make user interface creation a less effective aspect of Smalltalk. The Mode Development Environment (MoDE) is a user interface management system (UIMS) which addresses the above issues. MoDE is composed of two major components: the Mode framework and the Mode Composer. The Mode framework accommodates an orthogonal design which decouples the user interface components and increases their reusability. The Mode Composer reduces the effort of using MoDE by providing a direct-manipulation user interface to its users. This paper discusses the importance of orthogonality and illustrates its incorporation into the design of MoDE. A comparison of the Mode framework and the MVC framework is included.
{"title":"MoDE: a UIMS for Smalltalk","authors":"Y. Shan","doi":"10.1145/97945.97976","DOIUrl":"https://doi.org/10.1145/97945.97976","url":null,"abstract":"While the Model-View-Controller (MVC) framework has contributed to many aspects of user interface development in Smalltalk, interfaces produced with MVC often have highly coupled model, view, and controller classes. This coupling and the effort required to use MVC make user interface creation a less effective aspect of Smalltalk.\u0000The Mode Development Environment (MoDE) is a user interface management system (UIMS) which addresses the above issues. MoDE is composed of two major components: the Mode framework and the Mode Composer. The Mode framework accommodates an orthogonal design which decouples the user interface components and increases their reusability. The Mode Composer reduces the effort of using MoDE by providing a direct-manipulation user interface to its users. This paper discusses the importance of orthogonality and illustrates its incorporation into the design of MoDE. A comparison of the Mode framework and the MVC framework is included.","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128867409","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Presto is an object-oriented threads package for writing parallel programs on a shared-memory multiprocessor. The system adds thread objects and synchronization objects to C++ to allow programmers to create and control parallelism. Presto's object-oriented structure, along with its user-level thread implementation, simplifies customization of thread management primitives to meet application-specific needs. The performance of thread primitives is crucial for parallel programs with fine-grained structure; therefore, the principal objective of this effort was to substantially improve Presto's performance under heavy loads without sacrificing the benefits of its object-oriented interface. We discuss design and implementation issues for shared-memory multiprocessors, and the performance impact of various designs is shown through measurements on a 20-processor Sequent Symmetry multiprocessor.
{"title":"The performance of an object-oriented threads package","authors":"Jon Faust, H. Levy","doi":"10.1145/97945.97979","DOIUrl":"https://doi.org/10.1145/97945.97979","url":null,"abstract":"Presto is an object-oriented threads package for writing parallel programs on a shared-memory multiprocessor. The system adds thread objects and synchronization objects to C++ to allow programmers to create and control parallelism. Presto's object-oriented structure, along with its user-level thread implementation, simplifies customization of thread management primitives to meet application-specific needs.\u0000The performance of thread primitives is crucial for parallel programs with fine-grained structure; therefore, the principal objective of this effort was to substantially improve Presto's performance under heavy loads without sacrificing the benefits of its object-oriented interface. We discuss design and implementation issues for shared-memory multiprocessors, and the performance impact of various designs is shown through measurements on a 20-processor Sequent Symmetry multiprocessor.","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"81 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134350025","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This paper demonstrates that the CLOS metaobject protocol approach to defining and implementing an object model is very powerful. CLOS is an object-oriented language that is based on Common Lisp and is in the process of being standardized. Implementations of CLOS are themselves object-oriented with all major building blocks of the language being instances of system classes. A metaobject protocol provides a framework for CLOS implementations by specifying the hierarchy of these classes and the order and contents of the communication among their instances. This design has made CLOS both flexible and portable, two design goals that traditionally conflict. In support of this suggestion we present a detailed account of how we added object persistence to CLOS without modifying any of the language's implementation code.
{"title":"PCLOS: stress testing CLOS experiencing the metaobject protocol","authors":"A. Paepcke","doi":"10.1145/97945.97969","DOIUrl":"https://doi.org/10.1145/97945.97969","url":null,"abstract":"This paper demonstrates that the CLOS metaobject protocol approach to defining and implementing an object model is very powerful. CLOS is an object-oriented language that is based on Common Lisp and is in the process of being standardized. Implementations of CLOS are themselves object-oriented with all major building blocks of the language being instances of system classes. A metaobject protocol provides a framework for CLOS implementations by specifying the hierarchy of these classes and the order and contents of the communication among their instances. This design has made CLOS both flexible and portable, two design goals that traditionally conflict. In support of this suggestion we present a detailed account of how we added object persistence to CLOS without modifying any of the language's implementation code.","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"31 5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129963148","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
In object-oriented languages like SMALLTALK-80, browsers and irtpeciors are used to provide insight into the static worlc! of objects and their relations, debuggers are used to inspect and modify states of computation. This article presents a detailed description of TRICK, a basic toolkit to build iracers. Tracers can be used to uncover the dynamic properties of SMALLTALK-$0 programs. As an example of how the power of this kit may be used by an experienced programmer, we describe the TUCK system, a visual trace construction kit, by means of which trace specifications may be set up through direct manipulation of graphical objects. 1 Tracers' TRICK In object-oriented languages like SMALLTALK-80, browsers and inpectors are used to provide insight into the static world of objects and their relations, debuggers are used to ins;?ect and modify states of computation (cf. [4]). We suggest to build tracers that can be used to uncover the dynamic properties of programs. Like browsers and inspectors, tracers live in windows, an arbitrary number of which can coexist concurrently and may cooperate with each other as well as with their cousins: the brcwsers, inspectors, and debuggers. Also, they are manipulated in similar ways, may be accessed from the other tools, and in turn provide access to these tools. Permission to copv without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission. This paper describes TRICK (tracers' internal construction kit), the low level program interface for the SMALLTALK-programmer who wants to build textual or graphical tracers. We will show how it has been successfully used to build TRACK (trace construction kit), which is described in more detail in [2]. Browsers and inspectors obviously can be used to look at the code that implements them. Figure 1 depicts an analogous situation in which the TRACK tracer is applied to some of the components it is built of; the trace shows how a message to be traced is passed through the various subfilters of a truce filter which is one of the buildings blocks available within TRICK. 2 Tracing Object-Oriented Programs Standard tracing tools in object-oriented languages (like …
{"title":"What tracers are made of","authors":"Hans-Dieter Böcker, J. Herczeg","doi":"10.1145/97945.286427","DOIUrl":"https://doi.org/10.1145/97945.286427","url":null,"abstract":"In object-oriented languages like SMALLTALK-80, browsers and irtpeciors are used to provide insight into the static worlc! of objects and their relations, debuggers are used to inspect and modify states of computation. This article presents a detailed description of TRICK, a basic toolkit to build iracers. Tracers can be used to uncover the dynamic properties of SMALLTALK-$0 programs. As an example of how the power of this kit may be used by an experienced programmer, we describe the TUCK system, a visual trace construction kit, by means of which trace specifications may be set up through direct manipulation of graphical objects. 1 Tracers' TRICK In object-oriented languages like SMALLTALK-80, browsers and inpectors are used to provide insight into the static world of objects and their relations, debuggers are used to ins;?ect and modify states of computation (cf. [4]). We suggest to build tracers that can be used to uncover the dynamic properties of programs. Like browsers and inspectors, tracers live in windows, an arbitrary number of which can coexist concurrently and may cooperate with each other as well as with their cousins: the brcwsers, inspectors, and debuggers. Also, they are manipulated in similar ways, may be accessed from the other tools, and in turn provide access to these tools. Permission to copv without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission. This paper describes TRICK (tracers' internal construction kit), the low level program interface for the SMALLTALK-programmer who wants to build textual or graphical tracers. We will show how it has been successfully used to build TRACK (trace construction kit), which is described in more detail in [2]. Browsers and inspectors obviously can be used to look at the code that implements them. Figure 1 depicts an analogous situation in which the TRACK tracer is applied to some of the components it is built of; the trace shows how a message to be traced is passed through the various subfilters of a truce filter which is one of the buildings blocks available within TRICK. 2 Tracing Object-Oriented Programs Standard tracing tools in object-oriented languages (like …","PeriodicalId":135062,"journal":{"name":"OOPSLA/ECOOP '90","volume":"62 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121674472","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}