Before revision: 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 programmersto use effectively. We have developed Obsidian, which integrates a strong, static type system that detects many of these bugs, using a new user-centered design approach.
After revision: Programming language design requires making many usability-related design decisions. We explored using user-centered design approach.