Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Bard Bloom is active.

Publication


Featured researches published by Bard Bloom.


ACM Transactions on Computational Logic | 2004

Precongruence formats for decorated trace semantics

Bard Bloom; Wan Fokkink; Rob J. van Glabbeek

This paper explores the connection between semantic equivalences and preorders for concrete sequential processes, represented by means of labeled transition systems, and formats of transition system specifications using Plotkins structural approach. For several preorders in the linear time---branching time spectrum a format is given, as general as possible, such that this preorder is a precongruence for all operators specifiable in that format. The formats are derived using the modal characterizations of the corresponding preorders.


conference on object-oriented programming systems, languages, and applications | 2009

Thorn: robust, concurrent, extensible scripting on the JVM

Bard Bloom; John Field; Nathaniel Nystrom; Johan Östlund; Gregor Richards; Rok Strniša; Jan Vitek; Tobias Wrigstad

Scripting languages enjoy great popularity due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts of incomplete programs. The price of these features comes later in the software life cycle. Scripts are hard to evolve and compose, and often slow. An additional weakness of most scripting languages is lack of support for concurrency - though concurrency is required for scalability and interacting with remote services. This paper reports on the design and implementation of Thorn, a novel programming language targeting the JVM. Our principal contributions are a careful selection of features that support the evolution of scripts into industrial grade programs - e.g., an expressive module system, an optional type annotation facility for declarations, and support for concurrency based on message passing between lightweight, isolated processes. On the implementation side, Thorn has been designed to accommodate the evolution of the language itself through a compiler plugin mechanism and target the Java virtual machine.


practical aspects of declarative languages | 2008

Matchete: paths through the pattern matching jungle

Martin Hirzel; Nathaniel Nystrom; Bard Bloom; Jan Vitek

Pattern matching is a programming language feature for selecting a handler based on the structure of data while binding names to sub-structures. By combining selection and binding, pattern matching facilitates many common tasks such as date normalization, red-black tree manipulation, conversion of XML documents, or decoding TCP/IP packets. Matchete is a language extension to Java that unifies different approaches to pattern matching: regular expressions, structured term patterns, XPath, and bit-level patterns. Matchete naturally allows nesting of these different patterns to form composite patterns. We present the Matchete syntax and describe a prototype implementation.


dynamic languages symposium | 2012

Robust scripting via patterns

Bard Bloom; Martin Hirzel

Dynamic typing in scripting languages is a two-edged sword. On the one hand, it can be more flexible and more concise than static typing. On the other hand, it can lead to less robust code. We argue that patterns can give scripts much of the robustness of static typing, without losing the flexibility and concision of dynamic typing. To make this case, we describe a rich pattern system in the dynamic language Thorn. Thorn patterns interact with its control constructs and scoping rules to support concise and robust test-and-extract idioms. Thorn patterns encompass an extensive set of features from ML-style patterns to regular expressions and beyond. And Thorn patterns can be first-class and support pattern-punning (mirror constructor syntax). Overall, this paper describes a powerful pattern system that makes scripting more robust.


logic in computer science | 2000

Precongruence formats for decorated trace preorders

Bard Bloom; Willem Jan Fokkink; R.J. van Glabbeek

This paper explores the connection between semantic equivalences and preorders for concrete sequential processes, represented by means of labelled transition systems, and formats of transition system specifications using Plotkins (1981) structural approach. For several preorders in the linear time-branching time spectrum a format is given, as general as possible, such that this preorder is a precongruence for all operators specifiable in that format. The formats are derived using the modal characterizations of the corresponding preorders.


theory and applications of satisfiability testing | 2012

SatX10: a scalable plug&play parallel SAT framework

Bard Bloom; David Grove; Benjamin Herta; Ashish Sabharwal; Horst Samulowitz; Vijay A. Saraswat

We propose a framework for SAT researchers to conveniently try out new ideas in the context of parallel SAT solving without the burden of dealing with all the underlying system issues that arise when implementing a massively parallel algorithm. The framework is based on the parallel execution language X10, and allows the parallel solver to easily run on both a single machine with multiple cores and across multiple machines, sharing information such as learned clauses.


IEEE Transactions on Software Engineering | 1997

Using a Protean language to enhance expressiveness in specification

Bard Bloom; Allan Cheng; Ashvin Dsouza

A Protean specification language (B. Bloom, 1995) based on structured operational semantics (SOS) allows the user to invent appropriate operations to improve abstraction and readability. This is in contrast to traditional specification languages, where the set of operations is fixed. An efficient algorithm, described by A. Dsouza and B. Bloom (1995), uses binary decision diagrams (BDDs) to verify properties of finite specifications written in a Protean language and provides the basis for a model checker we have developed. The paper provides a synthesis of our work on Protean languages and relates the work to other specification techniques. We show how abstraction and refinement in the Protean framework can improve the effectiveness of model checking. We rewrite and verify properties of an existing Z specification by defining suitable operations. We also show how a Protean language can be used to model restricted I/O automata, action refinement, and 1-safe and k-bounded Petri nets.


conference on object-oriented programming systems, languages, and applications | 2009

Thorn: robust concurrent scripting on the JVM

Bard Bloom; John Field; Nathaniel Nystrom; Johan Östlund; Gregor Richards; Rok Strniša; Jan Vitek; Tobias Wrigstad

Scripting languages enjoy great popularity due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts of incomplete programs. The price of these features comes later in the software life cycle. Scripts are hard to evolve and compose, and often slow. An additional weakness of most scripting languages is lack of support for concurrency - though concurrency is required for scalability and interacting with remote services. This paper reports on the design and implementation of Thorn, a novel programming language targeting the JVM. Our principal contributions are a careful selection of features that support the evolution of scripts into industrial grade programs e.g., an expressive module system, an optional type annotation facility for declarations, and support for concurrency based on message passing between lightweight, isolated processes. On the implementation side, Thorn has been designed to accommodate the evolution of the language itself through a compiler plugin mechanism and target the Java virtual machine.


Computer Languages, Systems & Structures | 2009

Ferret: Programming language support for multiple dynamic classification

Bard Bloom; Paul T. Keyser; Ian Simmonds; Mark N. Wegman

We introduce a concept of multiple dynamic classification, a powerful generalization of single-inheritance OO, and a language Ferret which implements it. Multiple classification allows Male, Female, and Married to be subclasses of Person, arranged so that a single Person object may be both Male and Married, but may not be both Male and Female. Dynamic classification allows classes to change: a Person may acquire or lose Married status. The subclasses are true subclasses. Married carries fields (e.g., spouse) which are specific to married people. Methods may be defined on classes, and even on Boolean combinations of class: Male&Married. Ferret provides a generalization of superclass calls, so that the methods for Male&Married can be based on those for Male and Married, without losing other classifications like Employee. Ferret has mutators, analogous to constructors but applicable when objects change class. The resulting language is powerful and highly expressive.


Ibm Systems Journal | 2006

Architectural thinking and modeling with the architects' workbench

Steven Abrams; Bard Bloom; Paul T. Keyser; Doug Kimelman; Eric A. Nelson; Wendy Neuberger; Tova Roth; Ian Simmonds; Steven Tang; John Vlissides

Researchain Logo
Decentralizing Knowledge