James E. Donahue

dblp:77/1215 · DBLP profile ↗
← Back
10ranked-venue papers
4as first author
0since 2021 · last 1989
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 1 first-authorTheory of computation · 2 · 2 first-authorDatabases, data management, data science and information retrieval · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
8 papers
Programming languages and type systems · 100%
Human-computer interaction and pervasive computing
1 paper
User interface design and tools · 77% Ubiquitous computing and smart environments · 23%

Topics — the 16 heaviest of 19, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
type systems
0.031989
The Modula-3 Type System · POPL 1989
Data Types Are Values · ACM Trans. Program. Lang. Syst. 1985
Data Types, Parameters, and Type Checking · POPL 1980
Programming languages and type systems
language design
0.041989
The Modula-3 Type System · POPL 1989
"Type-Completeness" as a Language Design Principle · POPL 1980
A Hierarchial Approach to Formal Semantics With Application to the Definition of PL/CS · ACM Trans. Program. Lang. Syst. 1979
Programming languages and type systems
type checking
0.021980
Data Types, Parameters, and Type Checking · POPL 1980
Data Types as Values: Polymorphism, Type-Checking, Encapsulation · POPL 1978
Programming languages and type systems
abstract data types
0.011983
Making Variables Abstract: An Equational Theory for Russell · POPL 1983
Programming languages and type systems
equational logic
0.011983
Making Variables Abstract: An Equational Theory for Russell · POPL 1983
Programming languages and type systems › type systems
polymorphism
0.021985
Data Types as Values: Polymorphism, Type-Checking, Encapsulation · POPL 1978
Data Types Are Values · ACM Trans. Program. Lang. Syst. 1985
Programming languages and type systems › type systems › polymorphism
parameterized types
0.011980
Data Types, Parameters, and Type Checking · POPL 1980
Programming languages and type systems › language semantics › formal semantics
denotational semantics
0.011979
A Hierarchial Approach to Formal Semantics With Application to the Definition of PL/CS · ACM Trans. Program. Lang. Syst. 1979
Programming languages and type systems › language semantics
formal semantics
0.011979
A Hierarchial Approach to Formal Semantics With Application to the Definition of PL/CS · ACM Trans. Program. Lang. Syst. 1979
Programming languages and type systems
lambda calculus
0.011979
On the Semantics of "Data Type" · SIAM J. Comput. 1979
Programming languages and type systems › lambda calculus
typed lambda calculus
0.011979
On the Semantics of "Data Type" · SIAM J. Comput. 1979
Programming languages and type systems
type theory
0.011979
On the Semantics of "Data Type" · SIAM J. Comput. 1979
Programming languages and type systems › object-oriented programming
encapsulation
0.011978
Data Types as Values: Polymorphism, Type-Checking, Encapsulation · POPL 1978
Programming languages and type systems
data types
0.011980
Data Types, Parameters, and Type Checking · POPL 1980
Logic in computer science › semantics
denotational semantics
0.011979
On the Semantics of "Data Type" · SIAM J. Comput. 1979
Logic in computer science
semantics
0.011979
On the Semantics of "Data Type" · SIAM J. Comput. 1979

Methods — techniques the papers use, named apart from their topics

type theory · 0.0formal semantics · 0.0hierarchical definition · 0.0
YearPublicationVenuePosition
1989 The Modula-3 Type System
abstract
This paper presents an overview of the programming language Modula-3, and a more detailed description of its type system.
Luca Cardelli, James E. Donahue, Mick J. Jordan, Bill Kalsow, Greg Nelson
POPL2
1986 Whiteboards: A Graphical Database Tool
abstract
The “Whiteboards” system is intended to be an electronic equivalent of the whiteboards and corkboards that we have in our offices. A Whiteboard database has similar qualities of storing disparate collections of data and saving their spatial location in a window to help with organization. A Whiteboard database can contain references to arbitrary entities: text files, notes, programs, tools, pictures, etc. Whiteboards runs as an application in the Cedar programming environment developed at the Xerox Palo Alto Research Center.
James E. Donahue, Jennifer Widom
ACM Trans. Inf. Syst.1
1985 Data Types Are Values
abstract
An important goal of programming language research is to isolate the fundamenal concepts of languages, those basic ideas that allow us to understand the relationships among various language features. This paper examines one of these underlying notions, that of data type , with particular attention to the treatment of generic or polymorphic procedures and static type-checking.
James E. Donahue, Alan J. Demers
ACM Trans. Program. Lang. Syst.1
1983 Making Variables Abstract: An Equational Theory for Russell
abstract
One of the fundamental notions of programming, and thus of programming languages, is the variable. Recently, the variable has come under attack. The proponents of "functional programming" have argued that variables are at the root of all our problems in programming. They claim that we must rid our languages of all manifestations of the "vonNeumann bottleneck" and learn to live in the changeless world of functional combinators.While we may not, believe all the claims of the functional programming advocates, there is evidence that the treatment of variables in most programming languages leaves much to be desired. In this paper we discuss how to make variables "abstract", i.e., how to introduce the notion of variable in to a language so that variables have reasonable mathematical properties. This paper includes:--- a discussion of language design principles that allow a more mathematical treatment of variables in programming language, and--- a description of an equational logic for the programming language Russell [Boehm80]. Although this logic follows much of the development of abstract data types (cf. [Guttag78]), it is novel in its treatment of a language in which expressions not only produce values but also can have effects. We discuss the over all structure of the logic and present in detail the rules particularly relevant to the semantics of variables. A complete presentation of the logic appears in [Demers82], and the rule numbers in this paper agree with the numbers used there.In the next section, we discuss the underlying language principles needed to make an equational specification of variables possible. In the sections that follow, we present a logic that does so for Russell.
Alan J. Demers, James E. Donahue
POPL2
1980 Data Types, Parameters, and Type Checking
abstract
In statically typed programming languages, each variable and expression in a program is assigned a unique "type" and the program is checked to ensure that the arguments in each application are "type-compatible" with the corresponding parameters. The rules by which this "type-checking" is performed must be carefully considered for modern languages that allow the programmer to define his own data types and allow parameterized types or types as parameters. (Such languages include Alphard [Wulf78], CLU [Liskov77], Euclid [Lampson77] and Russell [Demers79].) These features increase the expressive power of the languages, but also increase the difficulty of type-checking them.In this paper, we describe a treatment of type-checking that makes it possible to do completely static checking with a general parameterization mechanism allowing parameterized types, types as parameters, and even a disciplined form of self-application. Our method defines a calculus of "signatures," where signatures are similar to the "program types" of [Reynolds78]. Each identifier and expression is given a signature, and applications are type-correct when argument and parameter signatures are equivalent under a simple set of signature transformation rules. Below we present the signature calculus of Russell; we also present a semantic justification of this calculus and specify the language constraints necessary for us to justify our purely static approach to type-checking.
Alan J. Demers, James E. Donahue
POPL2
1980 "Type-Completeness" as a Language Design Principle
abstract
In his recent Turing Lecture, John Backus delivered a trenchant argument for the proposition that "programming languages are in trouble." Backus claims this to be inevitable: the development of Algol-like languages must lead to this sorry state because it begins from faulty assumptions.A less radical interpretation of the difficulties of language design is that we still do not understand the fundamental principles that should guide our design efforts; the machines we use may limit our results, but our ignorance has far greater effect. As evidence to support this position, we can cite the difficulties of building successors to Algol 60 and Pascal. Both languages have been acclaimed as well-designed, but it has proved extremely difficult to capture just what they "got right." Thus, Hoare has claimed that "Algol 60 was not only a great improvement on its predecessors, but also on nearly all of its successors." [73a] The recent Ada design suggests that the same fate may befall Pascal.In this paper, we expand on an idea of Landin [66] to develop an important principle of programming languages: type-completeness. We argue that application of this principle is an effective tool in understanding problems of programming language design. In particular, type-completeness1. allows us to point out many of the flaws and inconsistencies in existing languages (so we can know what mistakes not to repeat) and2. provides a framework for the design of languages (or language families) that have wide variation in their changeable parts.Below, we present the principle of type-completeness and its ramifications for language design. We then discuss some common examples of incompleteness found in existing Algol-like languages. And we end by presenting the type structure of the type-complete programming language Russell, which has been designed by the authors. As we show, the flexibility provided in Russell by the combination of a small, rich type structure and type-completeness belie Backus's assertion of inherent weakness of vonNeumann languages.
Alan J. Demers, James E. Donahue
POPL2
1979 On the Semantics of "Data Type"
abstract
This paper considers the general problem of specifying the meaning of programming languages that include “data type definition facilities.” The fundamental question posed in attempting to define such languages is: “what meaning should be given to a data type definition,” or more simply, “what does data type mean?” In this paper we describe a new approach to defining the meaning of data types, treating data types as values, and give its application to the definition of a typed lambda calculus extension. We also prove a theorem stating that our lambda calculus definition is “strongly typed.”
James E. Donahue
SIAM J. Comput.1
1979 A Hierarchial Approach to Formal Semantics With Application to the Definition of PL/CS
abstract
We describe a means of presenting hierarchically organized formal definitions of programming languages using the denotational approach of D. Scott and C. Strachey. As an example of our approach, we give the semantics of PL/CS, an instructional variant of PL/I. We also discuss the implications of this approach to language design, pointing out some cases where the wrong choices may cause the hierarchy to collapse into chaotic rubble.
Robert L. Constable, James E. Donahue
ACM Trans. Program. Lang. Syst.2
1978 Data Types as Values: Polymorphism, Type-Checking, Encapsulation
abstract
This paper describes a novel approach to the treatment of data types in programming languages, which allows a simple interpretation of "polymorphic" or "generic" procedures, makes a simple set of type-checking rules semantically justifiable and provides a straightforward treatment of encapsulation.
Alan J. Demers, James E. Donahue, Glenn Skinner
POPL2
1977 Locations Considered Unnecessary
James E. Donahue
Acta Informatica1