10:30 - 11:00 |
How Programming Languages Will Co-evolve with Software Engineering: A Bright Decade Ahead
Programming languages are an indispensable foundation of software engineering, so it is essential that innovations in software engineering anticipate and influence innovations in programming languages and vice-versa. We discuss seven emerging trends in the design, adoption, and use of programming languages that have clear and valuable overlap with software engineering. These themes include language design that assumes modern development ecosystems; languages that support multiple views; data-driven language design; formal and machine-checked verification that works for real systems; gradual typing; languages that embrace a distributed, asynchronous world of large external data sources; and the increasing influence of functional-programming concepts. We discuss how the time is now for software-engineering research to influence and improve these significant changes to the field.
|
|
Emerson Murphy-Hill and Dan Grossman |
|
North Carolina State University, USA; University of Washington, USA |
|
11:00 - 11:30 |
Software Engineering and Automated Deduction
Software poses a range of engineering challenges. How do we capture the expected behavior of the software? How can we check if such behavioral descriptions are consistent and valid? How do we generate test instances that explore and examine different parts of the software. We focus on the underlying technology by which a number of these problems can be reduced to a logical form and answered using automated deduction. In the first part we briefly summarize the use of automated deduction within software engineering. Then we consider some of the current and future trends in software engineering and the type of advances it may require from automated deduction. We observe that in the past software engineering problems were solved by merely leveraging advances in automated deduction, especially in SAT and SMT solving, whereas we are now entering a phase where advances in automated deduction are also driven by software engineering requirements.
|
|
Willem Visser, Nikolaj Bjørner, and Natarajan Shankar |
|
Stellenbosch University, South Africa; Microsoft Research, USA; SRI Computer Science Lab, USA |
|
11:30 - 12:00 |
Probabilistic Programming
Probabilistic programs are usual functional or imperative programs with two added constructs: (1) the ability to draw values at random from distributions, and (2) the ability to condition values of variables in a program via observations. Models from diverse application areas such as computer vision, coding theory, cryptographic protocols, biology and reliability analysis can be written as probabilistic programs. Probabilistic inference is the problem of computing an explicit representation of the probability distribution implicitly specified by a probabilistic program. Depending on the application, the desired output from inference may vary---we may want to estimate the expected value of some function f with respect to the distribution, or the mode of the distribution, or simply a set of samples drawn from the distribution. In this paper, we describe connections this research area called ``Probabilistic Programming" has with programming languages and software engineering, and this includes language design, and the static and dynamic analysis of programs. We survey current state of the art and speculate on promising directions for future research.
|
|
Andrew D. Gordon, Thomas A. Henzinger, Aditya V. Nori, and Sriram K. Rajamani |
|
Microsoft Research, UK; IST Austria, Austria; Microsoft Research, India |