26,098 papers · page 256 of 1,305
L. Thomas van Binsbergen, Damian Frölich, Mauricio Verano Merino, Joey Lai, Pierre Jeanjean, Tijs van der Storm, Benoît Combemale, Olivier Barais
Exploratory programming is a software development style in which code is a medium for prototyping ideas and solutions, and in which even the end-goal can evolve over time. Exploratory programming is valuable in various contexts such as programming education, data science, and end…
Houda Boukham, Guido Wachsmuth, Martijn Dwars, Dalila Chiadmi
Domain-specific language compilers need to close the gap between the domain abstractions of the language and the low-level concepts of the target platform.This can be challenging to achieve for compilers targeting multiple platforms with potentially very different computing parad…
Zilin Chen, Christine Rizkallah, Liam O'Connor, Partha Susarla, Gerwin Klein, Gernot Heiser, Gabriele Keller
Property-based testing (PBT) is a powerful tool that is widely available in modern programming languages. It has been used to reduce formal software verification effort. We demonstrate how PBT can be used in conjunction with formal verification to incrementally gain greater assur…
Shigeru Chiba
One day, a student raised a question. I spent many years to learn a programming language. Why do you try to develop yet another language? I don’t wanna learn no more language. One is enough! My answer was, well, don’t you hate to learn a new library, either? People seem to accept…
Matteo Cimini
Proofs of language properties often follow a schema that does not apply just to one language but, rather, applies to many languages of a certain class.
In this paper, we present Lang-n-Prove, a domain-specific language for expressing theorems and proofs in such a way that they a…
Steven Costiou, Vincent Aranega, Marcus Denker
In this paper, we share our experience with using reflection as a systematic tool to build advanced debuggers. We illustrate the usage and combination of reflection techniques for the implementation of object-centric debugging. Object-centric debugging is a technique for object-o…
Björn Franke, Zhibo Li, John Magnus Morton, Michel Steuwer
Modern programming languages provide programmers with rich abstractions for data collections as part of their standard libraries, e.g. Containers in the C++ STL, the Java Collections Framework, or the Scala Collections API. Typically, these collections frameworks are organised as…
Damian Frölich, L. Thomas van Binsbergen
Programming languages providing high-level abstractions can increase programmers’ productivity and program safety. Language-oriented programming is a paradigm in which domain-specific languages are developed to solve problems within specific domains with (high-level) abstractions…
Sorour Jahanbin, Dimitris S. Kolovos, Simos Gerasimou, Gerson Sunyé
Abstract: As the size of software and system models grows, scalability issues in the current generation of model management languages (e.g. transformation, validation) and their supporting tooling become more prominent. To address this challenge, execution engines of model manage…
Faezeh Khorram, Erwan Bousse, Antonio Garmendia, Jean-Marie Mottu, Gerson Sunyé, Manuel Wimmer
To test a system efficiently, we need to know how good are the defined test cases and to localize detected faults in the system. Measuring test coverage can address both concerns as it is a popular metric for test quality evaluation and, at the same time, is the foundation of adv…
Luthfan Anshar Lubis, Yudai Tanabe, Tomoyuki Aotani, Hidehiko Masuhara
Programming with versions is a recent proposal that supports multiple versions of software components in a program. Though it would provide greater freedom for the programmer, the concept is only realized as a simple core calculus, called λVL, where a value consists of λ-terms wi…
Mauricio Verano Merino, Koen van Wijk
Block-based environments are visual-programming environments that allow users to create programs by dragging and dropping blocks that resemble jigsaw puzzle pieces. These environments have proven to lower the entry barrier of programming for end-users. Besides using block-based e…
Jeff Smits, Toine Hartman, Jesper Cockx
Pattern matching is a high-level notation for programs to analyse the shape of data, and can be optimised to efficient low-level instructions. The Stratego language uses first-class pattern matching, a powerful form of pattern matching that traditional optimisation techniques do …
Friedrich Steimann, Marius Freitag
Inside many software languages lives an expression language that caters for the computation of single values from single values. These languages' fixation on single-valuedness is often at odds with their application domains, in which many values, or plurals, regularly occur in th…
Tijs van der Storm, Felienne Hermans
Programming language implementations are often one-size-fits-all. Irrespective of the ethnographic background or proficiency of their users, they offer a single, canonical syntax for all language users. Whereas professional software developers might be willing to learn a programm…
Alexi Turcotte, Pierre Donat-Bouillud, Filip Krikava, Jan Vitek
The fast-and-loose, permissive semantics of dynamic programming languages limit the power of static analyses. For that reason, soundness is often traded for precision through dynamic program analysis. Dynamic analysis is only as good as the available runnable code, and relying so…
Jos Warmer, Anneke Kleppe
Freon (formerly called ProjectIt) is a language workbench that generates a set of tools to support a given domain specific modeling language (DSL). The most outstanding tool is a web-based projectional editor, but also included are a scoper, typer, validator, parser, unparser, an…
Tetsuro Yamazaki, Tomoki Nakamaru, Shigeru Chiba
Researchers discovered methods to generate fluent interfaces equipped with static checking to verify their calling conventions. This static checking is done by carefully designing classes and method signatures to make type checking to perform a calculation equivalent to syntax ch…
Aron Zwaan
To warrant programmer productivity, type checker results should be correct and available quickly. Correctness can be provided when a type checker implementation corresponds to a declarative type system specification. Statix is a type system specification language which achieves t…
Zsófia Ádám, Levente Bajczi, Mihály Dobos-Kovács, Ákos Hajdu, Vince Molnár
Abstract Theta is a model checking framework based on abstraction refinement algorithms. In SV-COMP 2022, we introduce: 1) reasoning at the source-level via a direct translation from C programs; 2) support for concurrent programs with interleaving semantics; 3) mitigation for non…