Academic Journal

Expressive and Modular Predicate Dispatch for Java.

Λεπτομέρειες βιβλιογραφικής εγγραφής
Τίτλος: Expressive and Modular Predicate Dispatch for Java.
Συγγραφείς: MILLSTEIN, TODD, FROST, CHRISTOPHER, RYDER, JASON, WARTH, ALESSANDRO
Πηγή: ACM Transactions on Programming Languages & Systems; Feb2009, Vol. 31 Issue 2, p7:1-7:54, 54p, 43 Diagrams, 2 Charts
Θεματικοί όροι: Java programming language, Object-oriented programming, Modular programming, Algorithms, Case studies, Equality, Functional programming (Computer science)
Περίληψη: Predicate dispatch is an object-oriented (OO) language mechanism for determining the method implementation to be invoked upon a message send. With predicate dispatch, each method implementation includes a predicate guard specifying the conditions under which the method should be invoked, and logical implication of predicates determines the method overriding relation. Predicate dispatch naturally unifies and generalizes several common forms of dynamic dispatch, including traditional OO dispatch, multimethod dispatch, and functional-style pattern matching. Unfortunately, prior languages supporting predicate dispatch have had several deficiencies that limit the practical utility of this language feature. We describe JPred, a backward-compatible extension to Java supporting predicate dispatch. While prior languages with predicate dispatch have been extensions to toy or nonmainstream languages, we show how predicate dispatch can be naturally added to a traditional OO language. While prior languages with predicate dispatch have required the whole program to be available for typechecking and compilation, JPred retains Java's modular typechecking and compilation strategies. While prior languages with predicate dispatch have included special-purpose algorithms for reasoning about predicates, JPred employs general-purpose, off-the-shelf decision procedures. As a result, JPred's type system is more flexible, allowing several useful programming idioms that are spuriously rejected by those other languages. After describing the JPred language informally, we present an extension to Featherweight Java that formalizes the language and its modular type system, which we have proven sound. Finally, we discuss two case studies that illustrate the practical utility of JPred, including its use in the detection of several errors. [ABSTRACT FROM AUTHOR]
Copyright of ACM Transactions on Programming Languages & Systems is the property of Association for Computing Machinery and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract. (Copyright applies to all Abstracts.)
Βάση Δεδομένων: Complementary Index
FullText Links:
  – Type: other
Text:
  Availability: 0
Header DbId: edb
DbLabel: Complementary Index
An: 37593890
RelevancyScore: 833
AccessLevel: 6
PubType: Academic Journal
PubTypeId: academicJournal
PreciseRelevancyScore: 833.471557617188
IllustrationInfo
Items – Name: Title
  Label: Title
  Group: Ti
  Data: Expressive and Modular Predicate Dispatch for Java.
– Name: Author
  Label: Authors
  Group: Au
  Data: <searchLink fieldCode="AR" term="%22MILLSTEIN%2C+TODD%22">MILLSTEIN, TODD</searchLink><br /><searchLink fieldCode="AR" term="%22FROST%2C+CHRISTOPHER%22">FROST, CHRISTOPHER</searchLink><br /><searchLink fieldCode="AR" term="%22RYDER%2C+JASON%22">RYDER, JASON</searchLink><br /><searchLink fieldCode="AR" term="%22WARTH%2C+ALESSANDRO%22">WARTH, ALESSANDRO</searchLink>
– Name: TitleSource
  Label: Source
  Group: Src
  Data: ACM Transactions on Programming Languages & Systems; Feb2009, Vol. 31 Issue 2, p7:1-7:54, 54p, 43 Diagrams, 2 Charts
– Name: Subject
  Label: Subject Terms
  Group: Su
  Data: <searchLink fieldCode="DE" term="%22Java+programming+language%22">Java programming language</searchLink><br /><searchLink fieldCode="DE" term="%22Object-oriented+programming%22">Object-oriented programming</searchLink><br /><searchLink fieldCode="DE" term="%22Modular+programming%22">Modular programming</searchLink><br /><searchLink fieldCode="DE" term="%22Algorithms%22">Algorithms</searchLink><br /><searchLink fieldCode="DE" term="%22Case+studies%22">Case studies</searchLink><br /><searchLink fieldCode="DE" term="%22Equality%22">Equality</searchLink><br /><searchLink fieldCode="DE" term="%22Functional+programming+%28Computer+science%29%22">Functional programming (Computer science)</searchLink>
– Name: Abstract
  Label: Abstract
  Group: Ab
  Data: Predicate dispatch is an object-oriented (OO) language mechanism for determining the method implementation to be invoked upon a message send. With predicate dispatch, each method implementation includes a predicate guard specifying the conditions under which the method should be invoked, and logical implication of predicates determines the method overriding relation. Predicate dispatch naturally unifies and generalizes several common forms of dynamic dispatch, including traditional OO dispatch, multimethod dispatch, and functional-style pattern matching. Unfortunately, prior languages supporting predicate dispatch have had several deficiencies that limit the practical utility of this language feature. We describe JPred, a backward-compatible extension to Java supporting predicate dispatch. While prior languages with predicate dispatch have been extensions to toy or nonmainstream languages, we show how predicate dispatch can be naturally added to a traditional OO language. While prior languages with predicate dispatch have required the whole program to be available for typechecking and compilation, JPred retains Java's modular typechecking and compilation strategies. While prior languages with predicate dispatch have included special-purpose algorithms for reasoning about predicates, JPred employs general-purpose, off-the-shelf decision procedures. As a result, JPred's type system is more flexible, allowing several useful programming idioms that are spuriously rejected by those other languages. After describing the JPred language informally, we present an extension to Featherweight Java that formalizes the language and its modular type system, which we have proven sound. Finally, we discuss two case studies that illustrate the practical utility of JPred, including its use in the detection of several errors. [ABSTRACT FROM AUTHOR]
– Name: Abstract
  Label:
  Group: Ab
  Data: <i>Copyright of ACM Transactions on Programming Languages & Systems is the property of Association for Computing Machinery and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract.</i> (Copyright applies to all Abstracts.)
PLink https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edb&AN=37593890
RecordInfo BibRecord:
  BibEntity:
    Identifiers:
      – Type: doi
        Value: 10.1145/1462166.1462168
    Languages:
      – Code: eng
        Text: English
    PhysicalDescription:
      Pagination:
        PageCount: 54
        StartPage: 7:1
    Subjects:
      – SubjectFull: Java programming language
        Type: general
      – SubjectFull: Object-oriented programming
        Type: general
      – SubjectFull: Modular programming
        Type: general
      – SubjectFull: Algorithms
        Type: general
      – SubjectFull: Case studies
        Type: general
      – SubjectFull: Equality
        Type: general
      – SubjectFull: Functional programming (Computer science)
        Type: general
    Titles:
      – TitleFull: Expressive and Modular Predicate Dispatch for Java.
        Type: main
  BibRelationships:
    HasContributorRelationships:
      – PersonEntity:
          Name:
            NameFull: MILLSTEIN, TODD
      – PersonEntity:
          Name:
            NameFull: FROST, CHRISTOPHER
      – PersonEntity:
          Name:
            NameFull: RYDER, JASON
      – PersonEntity:
          Name:
            NameFull: WARTH, ALESSANDRO
    IsPartOfRelationships:
      – BibEntity:
          Dates:
            – D: 01
              M: 02
              Text: Feb2009
              Type: published
              Y: 2009
          Identifiers:
            – Type: issn-print
              Value: 01640925
          Numbering:
            – Type: volume
              Value: 31
            – Type: issue
              Value: 2
          Titles:
            – TitleFull: ACM Transactions on Programming Languages & Systems
              Type: main
ResultId 1