Download distil2

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

C syntax wikipedia , lookup

Object-oriented programming wikipedia , lookup

Reactive programming wikipedia , lookup

Program optimization wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Multidimensional empirical mode decomposition wikipedia , lookup

Data-intensive computing wikipedia , lookup

Library (computing) wikipedia , lookup

Stream processing wikipedia , lookup

Coding theory wikipedia , lookup

Error detection and correction wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Corecursion wikipedia , lookup

Transcript
DiSTiL : A Transformation
Library for Data Structures
Yannis Smaragdakis
1
Overview
 DiSTiL
is a project to add GenVoca
Components to Microsoft’s IP
 Domain:
container data structures
2
Overview (Continued)
 Goal:
increase productivity by
programming in high-level data
structure abstractions
cursor
container
3
Overview (Continued)
 Create
complex container data
structures by composing DiSTiL
components
 Design rule checking to ensure validity
of component compositions
 Automatic selection of data structures
according to retrieval predicates
4
Implementation Platform
 IP
Transformation System
(Microsoft Research)
 Handling of code with tree primitives
 User can define new language
primitives (intentions) and write code to
transform them at compilation
(reduction) time
5
DiSTiL Library (Realms)
 Data
Structures (arrays, linked lists, redblack trees, hash-tables)
 Storage (Persistent and Transient storage)
 Architectural (create code in functions)
 Special purpose layers (LRUTree)
 Various data-structure related layers
(garbage collection, bound checks)
 Hidden layers (out-of-bounds, predicate,
order)
6
DiSTiL Type Expressions
 Typex
construct: the composition of
components (layers) that defines the
target container data structure
 Huge number of distinct container data
structures can be generated from
compositions of DiSTiL components
7
Cursors
 Cursors
define retrieval predicates over
containers
cursor(emp_cont, name < “An” && name > “Akers”, no_order)
 Predicates
used to generate efficient
code for retrievals
 The “smart” part of the library
8
A Composite Data Structure
typex Example = malloc[transient]
Keen
4789711
Jones
Lam
4719711
Guy
4769711
Ajit
4759711
4709711
Koch
Mann
4749711
4799711
Land
4739711
Smith
4729711
9
A Composite Data Structure
key=name
typex Example = tree[malloc[transient]]
Keen
4789711
Jones
Lam
4719711
Guy
4769711
Ajit
4759711
4709711
Koch
Mann
4749711
4799711
Land
4739711
Smith
4729711
10
A Composite Data Structure
key=phone key=name
typex Example = hash [ tree [ malloc [ transient]]]
Keen
4789711
Jones
Lam
4719711
Guy
4769711
Ajit
4759711
4709711
Koch
Mann
4749711
4799711
Land
4739711
Smith
4729711
11
How to Use
12
What to Notice
 Programming
abstractions
in domain-specific
 makes
code easier to understand
 makes code more reliable (simpler and
checked at a higher level)
 makes code easier to evolve (can modify
typex without modifying program)
 should result in very good code
13
What to Notice
 DiSTiL
actually
 can
increase programmer productivity
(simpler/shorter programs)
 removes burden of coding & debugging
data structures
 can accommodate architectural styles
14
Example Application
 LRU
memory policy simulation
3
2
1
0
1
0
1
0
0
15
What is different about
DiSTil?
 Different
from static libraries (e.g. STL):
 meta-level
optimizations
(retrieval structure selection, updates)
 more advanced static checking
(design-rule checking)
 level of programming significantly raised
(“what” vs “how”)
 more general, powerful approach
 larger selection of structures/mechanisms
16
What is different about
DiSTil?
 Even
at the usual level of abstraction
 static
libraries suffer from performance loss
 not easy to integrate such a variety of
components
 example: templates and memory allocation
 would
have the added cost of a virtual dispatch
 static
consistency checking is a domainspecific mechanism (type checking)
17
Internal organization
Quote Package
Predicate engine
Generated
Application
Static Library
Components
Transformatio
n
engine
Exported Symbols
User Application
18
Next Steps
 Improve
design-rule checking
 Clarify design, possibly develop tools
for writing generators
 Explore ideas (explicit, generation-time
scoping) examined in the Quote
package
 Broaden applications
19
Contributions of DiSTiL
 Example
of factored libraries
(Biggerstaff 1994)
 Primitive data structures factored in
new ways (out-of-bounds checking,
predicates on retrievals,
inlined/functional implementation etc.)
 Extensive background for software
generator development in non-scoped
environments (Quote package)
20
Contributions (cont’d)
 Layered
generator:
 analysis
of layer interaction
 possible mechanisms to facilitate
construction
 determining pattern of information flow
among layers
21