Advancing declarative programming

Thesis: Ph. D., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2015.

Bibliographic Details
Main Author: Milicevic, Aleksandar, Ph. D. Massachusetts Institute of Technology
Other Authors: Daniel N. Jackson.
Format: Thesis
Language:eng
Published: Massachusetts Institute of Technology 2015
Subjects:
Online Access:http://hdl.handle.net/1721.1/99835
_version_ 1826210332440264704
author Milicevic, Aleksandar, Ph. D. Massachusetts Institute of Technology
author2 Daniel N. Jackson.
author_facet Daniel N. Jackson.
Milicevic, Aleksandar, Ph. D. Massachusetts Institute of Technology
author_sort Milicevic, Aleksandar, Ph. D. Massachusetts Institute of Technology
collection MIT
description Thesis: Ph. D., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2015.
first_indexed 2024-09-23T14:47:49Z
format Thesis
id mit-1721.1/99835
institution Massachusetts Institute of Technology
language eng
last_indexed 2024-09-23T14:47:49Z
publishDate 2015
publisher Massachusetts Institute of Technology
record_format dspace
spelling mit-1721.1/998352019-04-11T13:00:47Z Advancing declarative programming Milicevic, Aleksandar, Ph. D. Massachusetts Institute of Technology Daniel N. Jackson. Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science. Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science. Electrical Engineering and Computer Science. Thesis: Ph. D., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2015. Cataloged from PDF version of thesis. Includes bibliographical references (pages 141-153). This thesis attempts to unite and consolidate two large and often culturally disjoint programming paradigms: declarative (focusing on specifying what a program is supposed to do, e.g., shuffle an array so that its elements are ordered) and imperative (detailing how the program intention is to be implemented, e.g., by applying the QuickSort algorithm). The ultimate result of such an effort would be a unified programming environment in which both paradigms are seamlessly integrated, specifications are fully and efficiently executable, and programs are written by freely mixing imperative statements and declarative specifications. With the advent of automated constraint solving, executing declarative specifications as standalone programs has become feasible. A number of challenges still remain. To achieve full automation, constraint solvers often impose restrictions on specification languages and their expressiveness; compromises are also made when integrating a (typically logic-based) specification language with a traditional procedural programming language; and finally, applicability is usually limited to specialized algorithmic domains (for which constraint solving is particularly suitable) and programmers comfortable with writing formal logic. This thesis proposes several advances to address these issues. First, a novel constraint solving framework is presented, Alloy*, the first of its kind capable of automatically and reliably solving arbitrary higher-order formulas (written in standard predicate logic) over bounded domains. Second, a new approach to integrating a specification and an implementation language is proposed, where Alloy, a relational logic-based modeling and specification language, is deeply embedded in Ruby. The resulting platform, called [alpha]Rby, uses Alloy* as its back end, and serves both as an Alloy modeling environment with added Ruby scripting layer around it, and as a Ruby programming environment with added executable specifications. Third, the general idea of declarative programming (focusing on what instead of how) is applied to web programming, producing SUNNY, a model-based reactive web framework with a clear separation between data, events (business logic), and security policies. SUNNY is (1) policy-agnostic-allows security policies to be specified individually and independently from the rest of the code, (2) reactive-automatically propagates data updates to all connected clients while enforcing the security policies, (3) mostly declarative-offers a unified sequential view of the entire distributed web system, allowing events to be implemented only in terms of simple modifications to the data model. by Aleksandar Milicevic. Ph. D. 2015-11-09T19:51:58Z 2015-11-09T19:51:58Z 2015 2015 Thesis http://hdl.handle.net/1721.1/99835 927407271 eng M.I.T. theses are protected by copyright. They may be viewed from this source for any purpose, but reproduction or distribution in any format is prohibited without written permission. See provided URL for inquiries about permission. http://dspace.mit.edu/handle/1721.1/7582 153 pages application/pdf Massachusetts Institute of Technology
spellingShingle Electrical Engineering and Computer Science.
Milicevic, Aleksandar, Ph. D. Massachusetts Institute of Technology
Advancing declarative programming
title Advancing declarative programming
title_full Advancing declarative programming
title_fullStr Advancing declarative programming
title_full_unstemmed Advancing declarative programming
title_short Advancing declarative programming
title_sort advancing declarative programming
topic Electrical Engineering and Computer Science.
url http://hdl.handle.net/1721.1/99835
work_keys_str_mv AT milicevicaleksandarphdmassachusettsinstituteoftechnology advancingdeclarativeprogramming