Corpus ID: 207925899

User-Centered Programming Language Design in the Obsidian Smart Contract Language

  title={User-Centered Programming Language Design in the Obsidian Smart Contract Language},
  author={Michael J. Coblenz and Gauri Kambhatla and Paulette Koronkevich and Jenna Wise and Celeste Barnaby and Jonathan Aldrich and Joshua Sunshine and Brad A. Myers},
Programming language designers commonly guess what language designs would be best for their users and create languages accordingly. The outcome of this is languages that are difficult to use and error-prone. In particular, blockchain programs have been plagued by serious bugs. Although techniques from the theory of programming languages can detect many of these kinds of bugs, languages that use these techniques have been too difficult for programmers to use effectively. We have developed… Expand


A Pilot Study of the Safety and Usability of the Obsidian Blockchain Programming Language
The preliminary results tentatively suggest that the complexity of Obsidian’s features do not hinder usability, although these results will be validated in the quantitative study. Expand
Searching the State Space: A Qualitative Study of API Protocol Usability
Observations suggest protocol-targeted tools, languages, and verification techniques will be most effective if they enable programmers to efficiently perform state search. Expand
The Programming Language Wars: Questions and Responsibilities for the Programming Language Community
It is suggested that the programming language wars, a term which describes the broad divergence and impact of language designs, including often pseudo-scientific claims made that they are good or bad, may be negatively impacting the world. Expand
Interdisciplinary programming language design
It is argued that the addition of user-oriented design techniques can be helpful at many different stages in the programming language design process. Expand
Typestate-oriented programming
Typestate-Oriented Programming is proposed as a natural extension to the object paradigm, where objects are modeled not just in terms of classes, but in Terms of changing states, which may have its own representation and methods which may transition the object into a new state. Expand
A User Study to Inform the Design of the Obsidian Blockchain DSL
Blockchain platforms such as Ethereum and Hyperledger facilitate transactions between parties that have not established trust. Increased interest in these platforms has motivated the design ofExpand
An Empirical Study of Object Protocols in the Wild
In the open-source projects in the study, comprising almost two million lines of code, approximately 7.2% of all types defined protocols, while 13% of classes were clients of types defining protocols, suggesting that protocol checking tools are widely applicable. Expand
Using HCI techniques to design a more usable programming system
HANDS is an event-based language that features a concrete model for computation, provides operators that match the way non-programmers express problem solutions, and includes domain-specific features for the creation of interactive animations and simulations. Expand
Natural programming languages and environments
The goal is to make it possible for people to express their ideas in the same way they think about them, and to achieve this, the team has performed various studies about how people think about programming tasks, and developed new tools for programming and debugging. Expand
Obsidian: Typestate and Assets for Safer Blockchain Programming
Two case studies that evaluate Obsidian's applicability to the domains of parametric insurance and supply chain management are described, finding that Obsidian’s type system facilitates reasoning about high-level states and ownership of resources. Expand