Difference between revisions of "WG211/M12Smaragdakis"

From WG 2.11
Jump to: navigation, search
(Created page with "''Forsaking Inheritance: Supercharged Delegation as a Modular OO Primitive'' by Yannis Smaragdakis We propose an OO language design that eschews inheritance completely, in favor...")
 
 
Line 1: Line 1:
''Forsaking Inheritance: Supercharged Delegation as a Modular OO Primitive'' by Yannis Smaragdakis
+
''PQL: A Purely-Declarative Java Extension for Parallel Programming'' by Yannis Smaragdakis
  
We propose an OO language design that eschews inheritance completely, in favor
+
The popularization of parallelism is arguably the most fundamental
of a combination of class morphing and (deep) delegation. Compared to past
+
computing challenge for years to come. We present an approach where parallel
delegation approaches, the novel aspect of our design is the ability to
+
programming takes place in a restricted (sub-Turing-complete), logic-based
emulate the best aspects of inheritance while retaining maximum flexibility:
+
declarative language, embedded in Java. Our logic-based language, PQL, can
using morphing, a class can select any of the methods of its delegatee and
+
express the parallel elements of a computing task, while regular Java code captures
export them (if desired) or transform them (e.g., to add extra arguments or
+
sequential elements. This approach offers a key property: the purely declarative
modify type signatures), yet without needing to name these methods explicitly and handle them
+
nature of our language allows for aggressive optimization, in much the same way
one-by-one. Compared to past work on morphing, our approach adopts and adapts
+
that relational queries are optimized by a database engine. At the same time,
advanced delegation mechanisms, in order to add late binding capabilities and,
+
declarative queries can operate on plain Java data, extending patterns such as
thus, provide a full substitute of inheritance. Additionally, our work
+
map-reduce to arbitrary levels of nesting and composition complexity.
replaces several common uses of aspect-oriented constructs, yet with strong
+
We have implemented PQL as extension to a Java compiler and showcase its
type safety guarantees.
+
expressiveness as well as its scalability compared to competitive techniques for
 +
similar tasks (Java + relational queries, in-memory Hadoop, etc.)

Latest revision as of 13:49, 6 June 2013

PQL: A Purely-Declarative Java Extension for Parallel Programming by Yannis Smaragdakis

The popularization of parallelism is arguably the most fundamental computing challenge for years to come. We present an approach where parallel programming takes place in a restricted (sub-Turing-complete), logic-based declarative language, embedded in Java. Our logic-based language, PQL, can express the parallel elements of a computing task, while regular Java code captures sequential elements. This approach offers a key property: the purely declarative nature of our language allows for aggressive optimization, in much the same way that relational queries are optimized by a database engine. At the same time, declarative queries can operate on plain Java data, extending patterns such as map-reduce to arbitrary levels of nesting and composition complexity. We have implemented PQL as extension to a Java compiler and showcase its expressiveness as well as its scalability compared to competitive techniques for similar tasks (Java + relational queries, in-memory Hadoop, etc.)