VLDB 2026 Research / reviewers in the wild / expert
Jaakko Järvi
dblp:41/2812
· DBLP profile ↗
24ranked-venue papers
11as first author
1since 2021 · last 2021
0000-0002-3418-7366ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 22 · 11 first-author · 1 since 2021Human-computer interaction and ubiquitous computing · 1Theory of computation · 1
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
4 papers |
Programming languages and type systems · 96% Compilers and program optimization · 4% |
Topics — the 6 heaviest of 7, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › programming paradigms
generic programming |
0.2 | 4 | 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++ · PLDI 2006 Concepts: linguistic support for generic programming in C++ · OOPSLA 2006 Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 |
Programming languages and type systems
type systems |
0.1 | 3 | 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++ · PLDI 2006 Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 A comparative study of language support for generic programming · OOPSLA 2003 |
Programming languages and type systems
language design |
0.1 | 1 | 2006 | Concepts: linguistic support for generic programming in C++ · OOPSLA 2006 |
Programming languages and type systems › type checking
modular typechecking |
0.1 | 1 | 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++ · PLDI 2006 |
Programming languages and type systems
object-oriented programming |
0.0 | 1 | 2005 | Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 |
Programming languages and type systems › type systems
subtyping |
0.0 | 1 | 2005 | Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 |
Methods — techniques the papers use, named apart from their topics
constrained generics · 0.1concept-based type checking · 0.1c++ templates · 0.1formal semantics · 0.1f-bounded polymorphism · 0.1comparative language study · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Semantics of multiway dataflow constraint systemsabstractMultiway dataflow constraint systems (MDCS) is a programming model where statements are not executed in a predetermined order. Rather, individual methods are selected from specific method sets and then executed to achieve a desired global state. The selection is done by a planner, which typically bases the choice of methods on the history of updates to the global state. MDCS is well suited for describing user interface logic where choosing what code to execute depends in complicated ways on the history of user interactions and on data availability. User interfaces are the domain of examples in this paper. Much of the research into MDCS has been on planning algorithms and their efficiency. Here we investigate a semantic setting for MDCS, introducing dataflow constraints as modules with explicit goals and related method sets. MDCS is defined in a similar manner, with an explicit goal and a set of supporting dataflow constraints. This enables verification and testing of methods and dataflow constraints against the goals. The exposition is based on abstract syntax for an idealised programming language with global variables. On top of this we define a modular reuse mechanism for dataflow constraints based on Goguen-Burstall institution theory. We show how this setup enables reuse in user interfaces; traditionally code that defines user interface logic is almost invariably non-reusable. Magne Haveraaen, Jaakko Järvi |
J. Log. Algebraic Methods Program. | 2 |
| 2020 | Manipulating GUI structures declarativelyabstractGUIs often contain structures that are incidental, not properly manipulatable through well-defined APIs. For example, modifying a list of items in a GUI's model may require extraneous bookkeeping operations in the view, such as adding and removing event handlers, and updating the menu structure. Observing GUIs in practice gives an indication that programmers may find it difficult or tedious to implement complete and convenient sets of operations for manipulating various structures: useful operations for adding, inserting, swapping, or reordering elements are often missing, inconsistent, or limited. This paper introduces a DSL for programming operations that manipulate such incidental structures. The programmer specifies structures via relations between elements, concretely by defining methods that unestablish and establish a relation. This gives the programmer an ability to describe structural transformations via rules that control which relations should hold before and after a rule is applied. The API for structure manipulation is generated from these rules. Our DSL can give an abstract view on ad-hoc structures, making it easier to provide the necessary set of operations for their convenient manipulation. Knut Anders Stokke, Mikhail Barash, Jaakko Järvi |
GPCE | 3 |
| 2016 | One Way to Select Many
Jaakko Järvi, Sean Parent |
ECOOP | 1 |
| 2015 | Generating reactive programs for graphical user interfaces from multi-way dataflow constraint systemsabstractFor a GUI to remain responsive, it must be able to schedule lengthy tasks to be executed asynchronously. In the traditional approach to GUI implementation--writing functions to handle individual user events--asynchronous programming easily leads to defects. Ensuring that all data dependencies are respected is difficult when new events arrive while prior events are still being handled. Reactive programming techniques, gaining popularity in GUI programming, help since they make data dependencies explicit and enforce them automatically as variables' values change. However, data dependencies in GUIs usually change along with its state. Reactive programming must therefore describe a GUI as a collection of many reactive programs, whose interaction the programmer must explicitly coordinate. This paper presents a declarative approach for GUI programming that relieves the programmer from coordinating asynchronous computations. The approach is based on our prior work on "property models", where GUI state is maintained by a dataflow constraint system. A property model responds to user events by atomically constructing new data dependencies and scheduling asynchronous computations to enforce those dependencies. In essence, a property model dynamically generates a reactive program, adding to it as new events occur. The approach gives the following guarantee: the same sequence of events produces the same results, regardless of the timing of those events. Gabriel Foust, Jaakko Järvi, Sean Parent |
GPCE | 2 |
| 2015 | EvolutionWorks - Towards Improved Visualization of Citation Networks
Jason Wilkins, Jaakko Järvi, Ajit Jain, Gaurav Kejriwal, Andruid Kerne, Vijay Gumudavelly |
INTERACT (4) | 2 |
| 2015 | Axioms as generic rewrite rules in C++ with concepts
Jaakko Järvi |
Sci. Comput. Program. | 2 |
| 2014 | Specializing planners for hierarchical multi-way dataflow constraint systemsabstractA constraint system consists of variables and a set of constraints on those variables. To solve a constraint system is to find a valuation that satisfies all constraints; or the "best" subset of constraints if not all can simultaneously be satisfied. In a multi-way dataflow constraint system, solving requires selecting a set of user-defined functions which, when executed, will enforce the constraints. The task of selecting these functions is called planning. The planner has two kinds of input: the specification of the constraints and an order of priority for those constraints. The former typically changes seldom, while the latter frequently, making constraint planning a potential application for program specialization. This paper shows how to generate specialized planners for hierarchical multi-way dataflow constraint systems when the constraints are known in advance. The specialized planners are DFAs; they can be an order of magnitude or more faster than a general purpose planner for the same system. Our applications for constraint systems are in user interface programming, where constraint systems determine how a GUI should react to user interaction---specialized planners can help to ensure that GUIs' responses to user interaction are instantaneous. Jaakko Järvi, Gabriel Foust, Magne Haveraaen |
GPCE | 1 |
| 2012 | HotDrink: a library for web user interfacesabstractHotDrink is a JavaScript library for constructing forms, dialogs, and other common user interfaces for Web applications. With HotDrink, instead of writing event handlers, developers declare a "view-model" in JavaScript and a set of "bindings" between the view-model and the HTML elements comprising the view. These specifications tend to be small, but they are enough for HotDrink to provide a fully operational GUI with multi-way dataflows, enabling/disabling of values, activation/deactivation of commands, and data validation. HotDrink implements these rich behaviors, expected of high-quality user interfaces, as generic reusable algorithms. This paper/tool demonstration introduces developers to the HotDrink library by stepping through the construction of an example web application GUI. John Freeman, Jaakko Järvi, Gabriel Foust |
GPCE | 2 |
| 2011 | Helping programmers help usersabstractUser interfaces exhibit a wide range of features that are designed to assist users. Interaction with one widget may trigger value changes, disabling, or other behaviors in other widgets. Such automatic behavior may be confusing or disruptive to users. Research literature on user interfaces offers a number of solutions, including interface features for explaining or controlling these behaviors. To help programmers help users, the implementation costs of these features need to be much lower. Ideally, they could be generated for free. This paper shows how several help and control mechanisms can be implemented as algorithms and reused across interfaces, making the cost of their adoption negligible. Specifically, we describe generic help mechanisms for visualizing data flow and explaining command deactivation, and a mechanism for controlling the flow of data. A reusable implementation of these features is enabled by our property model framework, where the data manipulated through a user interface is modeled as a constraint system. John Freeman, Jaakko Järvi, Wonseok Kim, Mat Marcus, Sean Parent |
GPCE | 2 |
| 2011 | Efficient run-time dispatching in generic programming with minimal code bloat
Lubomir D. Bourdev, Jaakko Järvi |
Sci. Comput. Program. | 2 |
| 2011 | Extending type systems in a library: Type-safe XML processing in C++
Yuriy Solodkyy, Jaakko Järvi |
Sci. Comput. Program. | 2 |
| 2010 | C++ lambda expressions and closures
Jaakko Järvi, John Freeman |
Sci. Comput. Program. | 1 |
| 2010 | Programming with C++ concepts
Jaakko Järvi, Mat Marcus, Jacob N. Smith |
Sci. Comput. Program. | 1 |
| 2009 | Algorithms for user interfacesabstractUser interfaces for modern applications must support a rich set of interactive features. It is commonplace to find applications with dependencies between values manipulated by user interface elements, conditionally enabled controls, and script record-ability and playback against different documents. A significant fraction of the application programming effort is devoted to implementing such functionality, and the resulting code is typically not reusable. Jaakko Järvi, Mat Marcus, Sean Parent, John Freeman, Jacob N. Smith |
GPCE | 1 |
| 2008 | Property models: from incidental algorithms to reusable componentsabstractA user interface, such as a dialog, assists a user in synthesising a set of values, typically parameters for a command object. Code for "command parameter synthesis" is usually application-specific and non-reusable, consisting of validation logic in event handlers and code that controls how values of user interface elements change in response to a user's actions, etc. These software artifacts are incidental - they are not explicitly designed and their implementation emerges from a composition of locally defined behaviors. Jaakko Järvi, Mat Marcus, Sean Parent, John Freeman, Jacob N. Smith |
GPCE | 1 |
| 2007 | Library composition and adaptation using c++ conceptsabstractLarge scale software is composed of libraries produced by different entities. Non-intrusive and efficient mechanisms for adapting data structures from one library to conform to APIs of another are essential for the success of large software projects. Concepts and concept maps, planned features for the next version of C++, have been designed to support adaptation, promising generic, non-intrusive, efficient, and identity preserving adapters. This paper analyses the use of concept maps for library composition and adaptation, comparing and contrasting concept maps to other common adaptation mechanisms. We report on two cases of data structure adaptation between different libraries, indicating best practices and idioms along the way. First, we adapt GUI controls from several frameworks for use with a generic layout engine, extending the application of concepts to run-time polymorphism. Second, we develop a transparent adaptation layer between an image processing library and a graph algorithm library, enabling the efficient application of graph algorithms to the image processing domain. Jaakko Järvi, Mat Marcus, Jacob N. Smith |
GPCE | 1 |
| 2007 | Algorithmic differentiation in AxiomabstractThis paper describes the design and implementation of an algorithmic differentiation framework in the Axiom computer algebra system. Our implementation works by transformations on Spad programs at the level of the typed abstract syntax tree -- Spad is the language for extending Axiom with libraries. The framework illustrates an algebraic theory of algorithmic differentiation, here only for Spad programs, but we suggest that the theory is general. In particular, if it is possible to define a compositional semantics for programs, we define the exact requirements for when a program can be algorithmically differentiated. This leads to a general algorithmic differentiation system, and is not confined to functions which compute with basic data types, such as floating point numbers. Jacob N. Smith, Gabriel Dos Reis, Jaakko Järvi |
ISSAC | 3 |
| 2007 | An extended comparative study of language support for generic programmingabstractAbstract Many modern programming languages support basic generics, sufficient to implement type-safe polymorphic containers. Some languages have moved beyond this basic support, and in doing so have enabled a broader, more powerful form of generic programming. This paper reports on a comprehensive comparison of facilities for generic programming in eight programming languages: C++, Standard ML, Objective Caml, Haskell, Eiffel, Java, C# (with its proposed generics extension), and Cecil. By implementing a substantial example in each of these languages, we illustrate how the basic roles of generic programming can be represented in each language. We also identify eight language properties that support this broader view of generic programming: support for multi-type concepts, multiple constraints on type parameters, convenient associated type access, constraints on associated types, retroactive modeling, type aliases, separate compilation of algorithms and data structures, and implicit argument type deduction for generic algorithms. We find that these features are necessary to avoid awkward designs, poor maintainability, and painfully verbose code. As languages increasingly support generics, it is important that language designers understand the features necessary to enable the effective use of generics and that their absence can cause difficulties for programmers. Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy G. Siek, Jeremiah Willcock |
J. Funct. Program. | 2 |
| 2006 | Concepts: linguistic support for generic programming in C++abstractGeneric programming has emerged as an important technique for the development of highly reusable and efficient software libraries. In C++, generic programming is enabled by the flexibility of templates, the C++ type parametrization mechanism. However, the power of templates comes with a price: generic (template) libraries can be more difficult to use and develop than non-template libraries and their misuse results in notoriously confusing error messages. As currently defined in C++98, templates are unconstrained, and type-checking of templates is performed late in the compilation process, i.e., after the use of a template has been combined with its definition. To improve the support for generic programming in C++, we introduce concepts to express the syntactic and semantic behavior of types and to constrain the type parameters in a C++ template. Using concepts, type-checking of template definitions is separated from their uses, thereby making templates easier to use and easier to compile. These improvements are achieved without limiting the flexibility of templates or decreasing their performance - in fact their expressive power is increased. This paper describes the language extensions supporting concepts, their use in the expression of the C++ Standard Template Library, and their implementation in the ConceptGCC compiler. Concepts are candidates for inclusion in the upcoming revision of the ISO C++ standard, C++0x. Douglas P. Gregor, Jaakko Järvi, Jeremy G. Siek, Bjarne Stroustrup, Gabriel Dos Reis, Andrew Lumsdaine |
OOPSLA | 2 |
| 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++abstractGeneric programming has recently emerged as a paradigm for developing highly reusable software libraries, most notably in C++. We have designed and implemented a constrained generics extension for C++ to support modular type checking of generic algorithms and to address other issues associated with unconstrained generics. To be as broadly applicable as possible, generic algorithms are defined with minimal requirements on their inputs. At the same time, to achieve a high degree of efficiency, generic algorithms may have multiple implementations that exploit features of specific classes of inputs. This process of algorithm specialization relies on non-local type information and conflicts directly with the local nature of modular type checking. In this paper, we review the design and implementation of our extensions for generic programming in C++, describe the issues of algorithm specialization and modular type checking in detail, and discuss the important design tradeoffs in trying to accomplish both.We present the particular design that we chose for our implementation, with the goal of hitting the sweet spot in this interesting design space. Jaakko Järvi, Douglas P. Gregor, Jeremiah Willcock, Andrew Lumsdaine, Jeremy G. Siek |
PLDI | 1 |
| 2005 | Associated types and constraint propagation for mainstream object-oriented genericsabstractSupport for object-oriented programming has become an integral part of mainstream languages, and more recently generic programming has gained widespread acceptance as well. A natural question is how these two paradigms, and their underlying language mechanisms, should interact. One particular design option, that of using subtyping to constrain the type parameters of generic functions, has been chosen in the generics of Java and those planned for a future revision of C#.Certain shortcomings have previously been identified in using subtyping for constraining parametric polymorphism in the context of generic programming.To address these, we propose extending object-oriented interfaces and subtyping to include associated types and constraint propagation.Associated types are type members of interfaces and classes. Constraint propagation allows certain constraints on type parameters to be inferred from other constraints on those parameters and their use in base class type expressions.The paper demonstrates these extensions in the context of C# (with generics), describes a translation of the extended features to C#, and presents a formalism proving their safety. The formalism is applicable to other mainstream object-oriented languages supporting F-bounded polymorphism, such as Java. Jaakko Järvi, Jeremiah Willcock, Andrew Lumsdaine |
OOPSLA | 1 |
| 2003 | Concept-Controlled Polymorphism
Jaakko Järvi, Jeremiah Willcock, Andrew Lumsdaine |
GPCE | 1 |
| 2003 | A comparative study of language support for generic programmingabstractMany modern programming languages support basic generic programming, sufficient to implement type-safe polymorphic containers. Some languages have moved beyond this basic support to a broader, more powerful interpretation of generic programming, and their extensions have proven valuable in practice. This paper reports on a comprehensive comparison of generics in six programming languages: C++, Standard ML, Haskell, Eiffel, Java (with its proposed generics extension), and Generic C. By implementing a substantial example in each of these languages, we identify eight language features that support this broader view of generic programming. We find these features are necessary to avoid awkward designs, poor maintainability, unnecessary run-time checks, and painfully verbose code. As languages increasingly support generics, it is important that language designers understand the features necessary to provide powerful generics and that their absence causes serious difficulties for programmers. Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy G. Siek, Jeremiah Willcock |
OOPSLA | 2 |
| 2003 | The Lambda Library: unnamed functions in C++abstractAbstract The Lambda Library (LL) adds a form of lambda functions to C++, which are common in functional programming languages. The LL is implemented as a template library using standard C++; thus no language extensions or preprocessing is required. The LL consists of a rich set of tools for defining unnamed functions. In particular these unnamed functions work seamlessly with the generic algorithms in the C++ Standard Library. The LL offers significant improvements, in terms of generality and ease of use, compared to the current tools in the C++ Standard Library. Copyright © 2003 John Wiley & Sons, Ltd. Jaakko Järvi, Gary Powell, Andrew Lumsdaine |
Softw. Pract. Exp. | 1 |