Abstract

Innovation flourishes with good abstractions. For instance, codification of the IEEE Floating Point standard in 1985 was critical to the subsequent success of scientific computing. Programming languages currently lack appropriate abstractions for uncertain data. Applications already use estimates from sensors, machine learning, big data, humans, and approximate algorithms, but most programming languages do not help developers address correctness, programmability, and optimization problems due to estimates.
To address these problems, we propose a new programming abstraction called Uncertain<T> embedded into languages, such as C#, C++, Java, Python, and JavaScript. Applications use familiar discrete operations for estimates with Uncertain<T>. Overloaded conditional operators specify hypothesis tests and applications use them to control false positives and negatives. A simple compositional operator expresses domain knowledge. We carefully restrict expressiveness such that we can build a runtime that implements correct statistical reasoning at conditionals. Our system relieves developers of the need to implement or deeply understand statistics. We demonstrate substantial programmability, correctness, and efficiency benefits of this programming model for GPS sensor navigation, approximate computing, machine learning, and xBox.
We encourage the community to develop and use abstractions for estimates.
- J. Bornholt, T. Mytkowicz, and K. S. McKinley. Uncertain<T>: A first-order type for uncertain data. In International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2014.Google Scholar
Digital Library
- J. Bornholt, N. Meng, T. Mytkowicz, and K. S. McKinley. Programming the internet of Uncertain <T>hings. In Sensors to Cloud Architectures Workshop (SCAW), pages 1--7, 2015.Google Scholar
- T. Mytkowicz and K. S. McKinley. The Uncertain<T> programming language, 2016. URL http://research.microsoft.com/en-us/projects/uncertainty/default.aspx.Google Scholar
- T. Mytkowicz, J. Bornholt, A. Sampson, D. Tootaghaj, and K. S. McKinley. Uncertain<T>, 2015. URL https://github.com/klipto/Uncertainty.Google Scholar
- A. Sampson, P. Panchekha, T. Mytkowicz, K. S. McKinley, D. Grossman, and L. Ceze. Expressing and verifying probabilistic assertions. In ACM Conference on Programming Language Design and Implementation (PLDI), 2014.Google Scholar
Digital Library
Index Terms
Programming Uncertain <T>hings
Recommendations
Programming Uncertain <T>hings
ASPLOS '16: Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating SystemsInnovation flourishes with good abstractions. For instance, codification of the IEEE Floating Point standard in 1985 was critical to the subsequent success of scientific computing. Programming languages currently lack appropriate abstractions for ...
Programming Uncertain <T>hings
ASPLOS'16Innovation flourishes with good abstractions. For instance, codification of the IEEE Floating Point standard in 1985 was critical to the subsequent success of scientific computing. Programming languages currently lack appropriate abstractions for ...
Programming the world of uncertain things (keynote)
POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesComputing has entered the era of uncertain data, in which hardware and software generate and reason about estimates. Applications use estimates from sensors, machine learning, big data, humans, and approximate hardware and software. Unfortunately, ...







Comments