14.07.2013 Views

Contents - Cultural View

Contents - Cultural View

Contents - Cultural View

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Quark Framework 257<br />

Quark Framework<br />

Paradigm functional, non-strict, modular<br />

Appeared in 2004<br />

Designed by Luke Evans, Bo Ilic (Business<br />

Objects)<br />

Typing discipline static, strong, inferred<br />

Major implementations Open Quark Framework for Java [1]<br />

Dialects --<br />

Influenced by Haskell, Clean, Java<br />

Influenced --<br />

The Quark Framework (Open Quark) consists of a non-strict functional language and runtime for the Java<br />

platform. The framework allows the compilation and evaluation of functional logic on the Java Virtual Machine<br />

(JVM), directly or under the control of a regular Java application. The native language (syntax) for the Quark<br />

Framework is called CAL. A full range of Java APIs provides the means to invoke the CAL compiler, manipulate<br />

workspaces of modules, add metadata and evaluate functional logic. Functional logic is usually dynamically<br />

compiled to Java bytecodes and executed directly on the JVM (with some small kernel logic controlling the normal<br />

evaluation order). However, an interpreter (G-machine) is also available.<br />

Motivation, History and Concept<br />

CAL, and the associated tools and APIs forming the Quark Framework, was conceived in 1998 within Seagate<br />

Software (later Crystal Decisions, now Business Objects) as a way to enable a common framework for sharing<br />

business logic across business intelligence products. A framework was desired that would allow data behaviour to be<br />

captured, at all levels of abstraction, and for these components to be composable into the actual data flows that<br />

individual products required. In general terms, such a system had to provide a way to express data behaviour<br />

declaratively, with universal composition and typing laws. In essence, this places the problem firmly in the domain<br />

of functional languages, and the desire to allow machine compositions of functions without incurring increasing<br />

efficiency penalties strongly suggested a non-strict evaluation semantic.<br />

As well as the operational requirements, it was envisaged that future application logic would likely be written for a<br />

dynamic platform (such as Java or .Net), and therefore it was determined that the Quark Framework should be native<br />

to Java (initially) with considerable emphasis on performance and interoperability with application logic written on<br />

that platform. In 1999, work began in Crystal's Research Group on an implementation of this framework. Many of<br />

the original insights into lazy functional systems were drawn from implementations of Haskell. Early on, Haskell<br />

(HUGS, GHC) was even considered as a starting point for the implementation itself, but a number of requirements<br />

made this impractical, so it was decided to let the project emerge and evolve freely following its own design criteria.<br />

For the first few years of development, the CAL source language itself was not a primary motivator, but the<br />

operational semantics were of primary concern. At this time, CAL was merely a convenient script for expressing<br />

functions rather than composing them programmatically through Java APIs, or using a graphical language native to a<br />

tool called the Gem Cutter, which began to be implemented in mid-2000 as a way to author systems of functions that

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!