252 papers · page 10 of 13
Zhongxian Gu, Drew Schleck, Earl T. Barr, Zhendong Su
Integrated development environments (IDEs) dominate the production and maintenance of software. Developers interact intensively with their IDEs while working. These interactions reflect a developer's thought process and work habits. By capturing and exploiting comprehensive, fine…
Svetoslav Karaivanov, Veselin Raychev, Martin T. Vechev
Phrase-based statistical machine translation approaches have been highly successful in translating between natural languages and are heavily used by commercial systems (e.g. Google Translate).
Stephen Kell
The concept of "type" has been used without a consistent, precise definition in discussions about programming languages for 60 years1. In this essay I explore various concepts lurking behind distinct uses of this word, highlighting two traditions in which the word came into use l…
David H. Lorenz, Boaz Rosenan
NoSQL databases are rapidly becoming the storage of choice for large-scale Web applications. However, for the sake of scalability these applications trade consistency for availability. In this paper, we regain control over this trade-off by adapting an existing approach, version …
Sean McDirmid, Jonathan Edwards
Most languages expose the computer's ability to globally read and write memory at any time. Programmers must then choreograph control flow so all reads and writes occur in correct relative orders, which can be difficult particularly when dealing with initialization, reactivity, a…
Gail C. Murphy
Humans are amazing at processing information. This ability has enabled humans to create software development projects that comprise a tremendous amount of information of various forms from predominantly natural language documents like requirements to blended natural language and …
Laure Philips, Coen De Roover, Tom Van Cutsem, Wolfgang De Meuter
Tierless programming languages enable developing the typical server, client and database tiers of a web application as a single mono-linguistic program. This development style is in stark contrast to the current practice which requires combining multiple technologies and programm…
Raphaël Proust, Alan Mycroft
Programming languages and coding standards provide invariants to ease reasoning about the correctness of code. Although useful, invariants are often intentionally broken by programmers for performance or compatibility purposes. An operation that consists of multiple steps can pre…
Bob Reynders, Dominique Devriese, Frank Piessens
The development of robust and efficient interactive web applications is challenging, because developers have to deal with multiple programming languages, asynchronous events, propagating data and events between clients and servers, data consistency and much more. Several approach…
Hesam Samimi, Chris Deaton, Yoshiki Ohshima, Alessandro Warth, Todd D. Millstein
Software development involves stitching existing components together. These data/service components are usually not well understood, as they are made by others and often obtained from somewhere on the Internet. This makes software development a daunting challenge, requiring progr…
James Skene
This paper introduces the use of Description Logic as a programming language, giving: a logic with appropriate concept constructors and sentential forms; some example programs; requirements for the results of program execution; a tableau algorithm that provably produces the desir…
Boris Spasojevic, Mircea Lungu, Oscar Nierstrasz
Dynamically typed languages lack information about the types of variables in the source code. Developers care about this information as it supports program comprehension. Basic type inference techniques are helpful, but may yield many false positives or negatives.
Andreas Stefik, Stefan Hanenberg
The discipline of computer science has a long and complicated history with computer programming languages. Historically, inventors have created language products for a wide variety of reasons, from attempts at making domain specific tasks easier or technical achievements, to econ…
Wouter Swierstra, Andres Löh
As software becomes increasingly complex, software configuration management is becoming ever more important. This paper shows how logics for reasoning about mutable state, such as separation logic, can also be used to give semantics for version control systems. By applying these …
Marcel Taeumel, Michael Perscheid, Bastian Steinert, Jens Lincke, Robert Hirschfeld
Programmers working in a Unix-like environment can easily build custom tools by configuring and combining small filter programs in shell scripts. When leaving such a text-based world and entering one that is graphics-based, however, tool building is more difficult because graphic…
David M. Ungar, Harold Ossher, Doug Kimelman
Korz is a new computational model that provides for context-oriented programming by combining implicit arguments and multiple dispatch in a slot-based model. This synthesis enables the writing of software that supports contextual variation along multiple dimensions, and graceful …
Eelco Visser, Guido Wachsmuth, Andrew P. Tolmach, Pierre Neron, Vlad A. Vergu, Augusto Passalaqua, Gabriël Konat
The realization of a language design requires multiple artifacts that redundantly encode the same information. This entails significant effort for language implementors, and often results in late detection of errors in language definitions. In this paper we present a proof-of-con…
Eric Walkingshaw, Christian Kästner, Martin Erwig, Sven Apel, Eric Bodden
Variation is everywhere, and in the construction and analysis of customizable software it is paramount. In this context, there arises a need for variational data structures for efficiently representing and computing with related variants of an underlying data type. So far, variat…
Jonathan Aldrich
Three years ago in this venue, Cook argued that in their essence, objects are what Reynolds called procedural data structures. His observation raises a natural question: if procedural data structures are the essence of objects, has this contributed to the empirical success of obj…
Mikaël Mayer, Viktor Kuncak
The increasing adoption of smartphones and tablets has provided tens of millions of users with substantial resources for computation, communication and sensing. The availability of these resources has a huge potential to positively transform our society and empower individuals. U…