29.06.14 - 04.07.14, Seminar 14271

Scripting Languages and Frameworks: Analysis and Verification

Diese Seminarbeschreibung wurde vor dem Seminar auf unseren Webseiten veröffentlicht und bei der Einladung zum Seminar verwendet.

Motivation

Scripting languages have rapidly evolved over a few generations. Early languages like awk identified a need for unceremonious information extraction and manipulation, and showed that lightweight “dictionary" data structures were invaluable towards this end. Since the mid-1990s we have seen numerous such languages mushroom. Perhaps due to the increased sophistication of the prototyped systems, and the challenges of maintaining them, these languages have begun to mature and embrace language research roots.

Despite (and sometimes, because of) their maturity, several attributes of scripting languages make the task of using them to write robust and reliable software quite challenging.

Semantics: Most scripting languages lack formal descriptions, and those that exist are often at odds with actual implementations. In fact, more than reference implementations, tests are becoming the norm as a specification mechanism. Furthermore, features that make these languages seem convenient, like overloading, become a nuisance and complicate program comprehension. Thus, a key challenge is to support test suites as a new means of language specification, and to use them to design semantics and analyses that can cope with the ad-hoc special cases that make scripting languages attractive.

Strings: Due to their simplicity and universality, strings and dictionaries indexed by strings are the central datatypes in scripting languages, which makes it trivial for a script to communicate, with databases, devices, and over the network. Thus, to analyze the properties of a script, we must understand the idiomatic uses of strings in scripts and to develop theories to reason about them.

Frameworks: Programmers do not program so much in languages but in high-level frameworks like Rails, Django, Node, Backbone, and JQuery. Thus, a key challenge and opportunity is to develop simple framework-level reasoning systems (semantics, types, etc.).

Polyphony: Finally, it is not enough to reason about languages and frameworks in isolation as the essence of scripts is the gluing together of different sub-systems. The final challenge is to develop suitable abstractions that allow each language to meaningfully talk about the others without being drowned in detail.

The seminar will offer opportunities to not only discuss recent work in these areas but to also codify these research challenges and map out strategies for tackling them. The format will mix formal presentation with several informal and ad hoc sessions, thus preserving the feel of a true workshop while still giving participants an opportunity to stay abreast of research progress in this fast-moving field.