Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.

Gary Lindstrom

dblp:l/GaryLindstrom · DBLP profile ↗
← Back
19ranked-venue papers
9as first author
0since 2021 · last 2010
—ORCID · none

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

Software engineering, systems software and programming languages · 12 · 6 first-authorTheory of computation · 4 · 3 first-authorSystems, architecture and hardware · 3Databases, data management, data science and information retrieval · 2 · 1 first-authorComputer networks · 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
6 papers
Compilers and program optimization · 75% Programming languages and type systems · 17% Runtime systems and virtual machines · 8%
Databases, data mining, and information retrieval
2 papers
Database system architecture and tuning · 89% Transaction processing and concurrency control · 11%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Distributed systems · 84% Parallel and multicore computing · 16%
Interdisciplinary, comprehensive, and emerging computing
1 paper
Bioinformatics and computational biology · 100%

Topics — the 17 heaviest of 22, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Database system architecture and tuning › database administration
database migration
0.011997
Migrating Relational Data to an OODB: Strategies and Lessons from a Molecular Biology Experience · OOPSLA 1997
Compilers and program optimization
code generation
0.011997
Flick: A Flexible, Optimizing IDL Compiler · PLDI 1997
Compilers and program optimization › code generation
stub generation
0.011997
Flick: A Flexible, Optimizing IDL Compiler · PLDI 1997
Distributed systems
remote procedure call
0.011997
Flick: A Flexible, Optimizing IDL Compiler · PLDI 1997
Programming languages and type systems
control structures
0.021981
Referencing and Retention in Block-Structured Coroutines · ACM Trans. Program. Lang. Syst. 1981
Backtracking in a Generalized Control Setting · ACM Trans. Program. Lang. Syst. 1979
Programming languages and type systems
functional programming
0.011985
Functional Programming and the Logical Variable · POPL 1985
Transaction processing and concurrency control
consistency
0.011983
Consistency and Currency in Functional Databases · INFOCOM 1983
Runtime systems and virtual machines
garbage collection
0.011981
Referencing and Retention in Block-Structured Coroutines · ACM Trans. Program. Lang. Syst. 1981
Runtime systems and virtual machines › garbage collection
mark-and-sweep collection
0.011981
Referencing and Retention in Block-Structured Coroutines · ACM Trans. Program. Lang. Syst. 1981
Runtime systems and virtual machines › garbage collection
reference counting
0.011981
Referencing and Retention in Block-Structured Coroutines · ACM Trans. Program. Lang. Syst. 1981
Programming languages and type systems › control structures
backtracking
0.011979
Backtracking in a Generalized Control Setting · ACM Trans. Program. Lang. Syst. 1979
Programming languages and type systems › control operators
coroutines
0.011979
Backtracking in a Generalized Control Setting · ACM Trans. Program. Lang. Syst. 1979
Compilers and program optimization
parsing
0.011978
Control Structure Aptness: A Cast Study Using Top-Down Parsing · ICSE 1978
Compilers and program optimization › parsing
top-down parsing
0.011978
Control Structure Aptness: A Cast Study Using Top-Down Parsing · ICSE 1978
Compilers and program optimization
incremental compilation
0.011970
The Design of Parsers for Incremental Language Processors · STOC 1970
Compilers and program optimization › parsing
incremental parsing
0.011970
The Design of Parsers for Incremental Language Processors · STOC 1970
Compilers and program optimization › parsing
parser generation
0.011970
The Design of Parsers for Incremental Language Processors · STOC 1970

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

marshaling optimization · 0.0intermediate representation · 0.0c++ framework · 0.0unification · 0.0graph reduction · 0.0dataflow rendering · 0.0complete partial order · 0.0static program structure analysis · 0.0language design · 0.0incremental parsing · 0.0fragment mapping · 0.0
YearPublicationVenuePosition
2010 ABI compatibility through a customizable language
abstract
ZL is a C++-compatible language in which high-level constructs, such as classes, are defined using macros over a C-like core language. This approach makes many parts of the language easily customizable. For example, since the class construct can be defined using macros, a programmer can have complete control over the memory layout of objects. Using this capability, a programmer can mitigate certain problems in software evolution such as fragile ABIs (Application Binary Interfaces) due to software changes and incompatible ABIs due to compiler changes. In this paper, we outline the problem of fragile and incompatible ABIs and show how ZL can be used to solve them.
Kevin Atkinson, Matthew Flatt, Gary Lindstrom
GPCE3
2005 Model Checking Real Time Java Using Java PathFinder
Gary Lindstrom, Peter C. Mehlitz, Willem Visser
ATVA1
2005 UMM: an operational memory model specification framework with integrated model checking capability
abstract
Abstract Given the complicated nature of modern shared memory systems, it is vital to have a systematic approach to specifying and analyzing memory consistency requirements. In this paper, we present the UMM specification framework, which integrates two key features to support memory model verification: (i) it employs a simple and generic memory abstraction that can capture a large collection of memory models as guarded commands with a uniform notation, and (ii) it provides built‐in model checking capability to enable formal reasoning about thread behaviors. Using this framework, memory models can be specified in a parameterized style—designers can simply redefine a few bypassing rules and visibility ordering rules to obtain an executable specification of another memory model. We formalize several classical memory models, including Sequential Consistency, Coherence, and PRAM, to illustrate the general techniques of applying this framework. We then provide an alternative specification of the Java memory model, based on a proposal from Manson and Pugh, and demonstrate how to analyze Java thread semantics using model checking. We also compare our operational specification style with axiomatic specification styles and explore a mechanism that converts a memory model definition from one style to the other. Copyright © 2005 John Wiley & Sons, Ltd.
Ganesh Gopalakrishnan, Gary Lindstrom
Concurr. Pract. Exp.3
2004 Memory-Model-Sensitive Data Race Analysis
Ganesh Gopalakrishnan, Gary Lindstrom
ICFEM3
2004 Nemos: A Framework for Axiomatic and Executable Specifications of Memory Consistency Models
abstract
Summary form only given. Conforming to the underlying memory consistency rules is a fundamental requirement for implementing shared memory systems and developing multiprocessor programs. In order to promote understanding and enable automated verification, it is highly desirable that a memory model specification be both declarative and executable. We present a specification framework called Nemos (Nonoperational yet Executable Memory Ordering Specifications), which supports precise specification and automatic execution in the same framework. We employ a uniform notation based on predicate logic to define shared memory semantics in an axiomatic as well as compositional style. We also apply constraint logic programming and SAT solving to make the axiomatic specifications executable for memory model analysis. To illustrate our approach, we formalize a collection of classical memory models, including sequential consistency, coherence, PRAM, causal consistency, and processor consistency.
Ganesh Gopalakrishnan, Gary Lindstrom, Konrad Slind
IPDPS3
1997 Migrating Relational Data to an OODB: Strategies and Lessons from a Molecular Biology Experience
abstract
The growing maturity of ODBMS technology is causing many enterprises to consider migrating relational databases to ODBIMS's. While data remapping is relatively straight-forward in most cases, greater challenges lie in economically and non-invasively adapting legacy application software. We report on a genetics laboratory database migration experiment, which was facilitated by both organization of the relational data in object-like form and a C++-framework designed to insulate application code from relational artifacts. Although this experiment was largely successful, we discovered to our surprise that the framework failed to encapsulate three subtle aspects of the relational implementation, thereby ''contaminating'' application code. We analyze the underlying issues, and offer cautionary guidance to future migrators.
Jon R. Oler, Gary Lindstrom, Terence Critchlow
OOPSLA2
1997 Flick: A Flexible, Optimizing IDL Compiler
abstract
An interface definition language (IDL) is a nontraditional language for describing interfaces between software components. IDL compilers generate "stubs" that provide separate communicating processes with the abstraction of local object invocation or procedure call. High-quality stub generation is essential for applications to benefit from component-based designs, whether the components reside on a single computer or on multiple networked hosts. Typical IDL compilers, however, do little code optimization, incorrectly assuming that interprocess communication is always the primary bottleneck. More generally, typical IDL compilers are "rigid" and limited to supporting only a single IDL, a fixed mapping onto a target language, and a narrow range of data encodings and transport mechanisms.Flick, our new IDL compiler, is based on the insight that IDLs are true languages amenable to modern compilation techniques. Flick exploits concepts from traditional programming language compilers to bring both flexibility and optimization to the domain of IDL compilation. Through the use of carefully chosen intermediate representations, Flick supports multiple IDLs, diverse data encodings, multiple transport mechanisms, and applies numerous optimizations to all of the code it generates. Our experiments show that Flick-generated stubs marshal data between 2 and 17 times faster than stubs produced by traditional IDL compilers, and on today's generic operating systems, increase end-to-end throughput by factors between 1.2 and 3.7.
Eric Eide, Kevin Frei, Bryan Ford, Jay Lepreau, Gary Lindstrom
PLDI5
1996 An Application Framework For Module Composition Tools
Guruduth Banavar, Gary Lindstrom
ECOOP2
1996 The Design and Implementation of a Database For Human Genome Research (Position Paper)
abstract
The Human Genome Project poses severe challenges in database design and implementation. These include comprehensive coverage of diverse data domains and user constituencies; robustness in the presence of incomplete, inconsistent and multi-version data; accessibility through many levels of abstraction, and scalability in content and organizational complexity. The paper presents a new data model developed to meet these challenges by the Utah Center for Human Genome Research. The central characteristics are: (i) a high level data model comprising five broadly applicable workflow notions; (ii) representation of those notions as objects in an extended relational model; (iii) expression of working database schemas as meta data in administration tables; (iv) population of the database through tables dependent on the meta data tables; and (v) implementation via a conventional relational database management system. The authors explore two advantages of this approach: the resulting representational flexibility, and the reflective use of meta data to accomplish schema evolution by ordinary updates. Implementation and performance pragmatics of this work are sketched, as well as implications for future database development.
Rob Sargent, Dave Fuhrman, Terence Critchlow, Tony Di Sera, Robert Mecklenburg, Gary Lindstrom, Peter Cartwright
SSDBM6
1987 A Performance-Oriented Design for OR-Parallel Logic Programming
Peter Tinker, Gary Lindstrom
ICLP2
1985 Approaching Distributed Database Implementations through Functional Programming Concepts
Robert M. Keller, Gary Lindstrom
ICDCS2
1985 Functional Programming and the Logical Variable
abstract
Logic programming offers a variety of computational effects which go beyond those customarily found in functional programming languages. Among these effects is the notion of the “logical variable.” i.e. a value determined by the intersection of constraints, rather than by direct binding. We argue that this concept is “separable” from logic programming, and can sensibly be incorporated into existing functional languages. Moreover, this extension appears to significantly widen the range of problems which can efficiently be addressed in function form, albeit at some loss of conceptual purity. In particular, a form of side-effects arises under this extension, since a function invocation can exert constraints on variables shared with other function invocations. Nevertheless, we demonstrate that determinacy can be retained, even under parallel execution. The graph reduction language FGL is used for this demonstration, by being extended to a language FGL+LV permitting formal parameter expressions, with variables occurring therein bound by unification. The determinacy argument is based on a novel dataflow-like rendering of unification. In addition the complete partial order employed in this proof is unusual in its explicit representation of demand, a necessity given the “benign” side-effects that arise. An implementation technique is suggested, suitable for reduction architectures.
Gary Lindstrom
POPL1
1984 Or-Parallelism on Applicative Architectures
Gary Lindstrom
ICLP1
1983 Consistency and Currency in Functional Databases
Gary Lindstrom, Frances Hunt
INFOCOM1
1981 Referencing and Retention in Block-Structured Coroutines
abstract
The combination of coroutines with recursive procedures is characteristic of many modern higher level languages offering advanced control structures (e.g., SIMULA-67, SL5, or INTERLISP). We say a language has block-structured coroutines (BSCRs) when static nesting considerations govern the usage of this control combination. Starting with the BSCR control description work of Wang and Dahl, this paper pursues further the implications of static program structure on BSCR programs in a particular compilation-oriented setting. Disciplines on BSCR reference assignment and individual control actions are defined, offering enhanced implementability and program comprehensibility. Of particular interest is a scope-based discipline on "detach " operations, which avoids the formation of idle chain subheads, an implementationally undesirable condition. The retention requirements of BSCRs are analyzed under a range of possible remote accessibility conditions, and two deletion strategies are then defined, keyed to these requirements. The first uses a special form of scope-sensitive reference counting, and the second does mark-sweep garbage collection, again exploiting static program structure. Space and time estimates for both methods are given, along with avenues for continuing research.
Gary Lindstrom, Mary Lou Soffa
ACM Trans. Program. Lang. Syst.1
1979 Backtracking in a Generalized Control Setting
abstract
Backtracking is a powerful conceptual and practical programming language control structure. However, its application in general has been limited to global control over recursive programs. In this paper we explore the coherence and utility of applying backtracking in a more general control setting, namely, block-structured coroutines. The following criteria are proposed for such a control combination to be judged successful: (i) retention of each control form's individual semantics; (ii) coherent semantics for each legal application of the combination; (iii) nonpreeminence of either control form, and (iv) facilitation of genuinely novel programming effects. The attainability of these criteria is assessed, with the aid of an informal language design and three illustrative applications: (i) a dual tree walk program using coroutine-managed backtracking subsystems; (ii) a context-free language intersection tester using bilevel hierarchical backtracking, and (iii) an optimizing computer job scheduler using backtracking in a simulation language context. Full programs are given for each example, phrased in a Pascal extension offering both coroutines and backtracking (expressed through nondeterministic control).
Gary Lindstrom
ACM Trans. Program. Lang. Syst.1
1978 Control Structure Aptness: A Cast Study Using Top-Down Parsing
Gary Lindstrom
ICSE1
1973 Scanning List Structures Without Stacks or Tag Bits
Gary Lindstrom
Inf. Process. Lett.1
1970 The Design of Parsers for Incremental Language Processors
abstract
An incremental language processor is one that accepts as input a sequence of substrings of the source language and maps them independently onto fragments in some object code. The ordered sequence of these object code fragments are then either compiled, in which case we have an incremental compiler, or interpreted. In the first case the advantage resulting is that subsequent changes in the source program entail only reprocessing the source fragments affected and recompiling the updated collection of object code fragments. In an environment where small changes are made frequently to large programs, e.g. debugging, the curtailment of reprocessing is attractive. In the second case the object code fragments are the actual run-time program representation, and hence inter-fragment relations are transiently evaluated as needed in the process of execution, with no long-term preservation of these relationships beyond the scope of their immediate need in execution time. This permits the possibility of program recomposition in the midst of execution, one of the principal characteristics of conversational computing.
Gary Lindstrom
STOC1