Carnap
no title

Carnap Programming : ... for the next generation of manycore processors.

By Steven Ericsson-Zenith

Carnap provides a process oriented programming model that separates the expression of shared data structures and the concurrent processes that act upon them.

{ Immediacy }

The Carnap Programming Language

Process oriented programming: shared data structures and the concurrent processes that act upon them.

Carnap is a general purpose programming language for the next generation of many-core devices, many many-core systems and their applications. It introduces a process oriented programming model that allows programmers to separate concerns: Carnap programs consist of data structures and the concurrent processes that act upon them.

"The primitive process of a Carnap program is called an action. An action determines a local or shared state. Actions are assembled by construction to form the component processes of a program. Programs consist of concurrent processes that construct and interact via logically shared data structures and resources called Contexts.

In this way the application programmer is able to separate concerns, reasoning separately about the two primary aspects of Carnap programs: potentially large scale data structures and the concurrent processes that act upon them.

Contexts are named, type associative and statically typed.

Two system level contexts allow concurrent access to SQL databases and any system that will respond to a standard universal resource identifier (URI). Concurrency control is provided by the Carnap primitives (we expect initial implementations to include a file server, XML db, SQL, and Web server).

The primary goal of Carnap is to ease the general purpose programming of applications that can utilize the concurrency of future many-core and many many-core systems." The Carnap Programming Language Manual

Carnap is Open Source and freely available to the research community.

Programmability

The technology that Carnap implements is founded upon extensive experience working with engineers implementing parallel applications worldwide. It takes into consideration the effect and affect that engineering language design has upon the problem solving behavior of engineers, and is focused upon easing the programming of applications that utilize functional decomposition and concurrency over potentially large scale data sets.

In terms of the programming model the process orientation of Carnap is no more difficult than programming with the object orientation of Java. Carnap programs provide simple concurrency control, the natural expression of locality and are composable.

Example Code

Some simple examples of Carnap programs.

Sieve of Eratosthenes

Conway's Game of Life

Exchange Sort

Mailing Lists

Sign up for the Carnap Interest email list for general discussion of Carnap. Sign up for the Carnap Developer list if you wish to contribute to this development of the Carnap project.

Carnap Interest

A mailing list for those that have a general interest in Carnap

Carnap Development

A mailing list for Carnap compiler and tools developers.

Carnap Programs With ANTLRWorks

You can begin to play with Carnap programs immediately by writing code using the interpreter in ANTLRWorks and looking at the parse tree that it generates.

A full programming manual should be available shortly and we will provide some example programs in the near future. In the meantime you can find semantic guidance and example Ease programs in my doctoral thesis(ref.1).

Process Interaction Models

This document provides a summary of the work available and points to useful free documents on the subject.

Download ANTLRWorks

Download The Carnap Grammar Here

The Carnap grammar is an ANTLR 3.0 grammar, and ANTLR 3.0 generates language parsers for Carnap. We have begun to develop an Open Source compiler for the language and are now actively looking for target platforms. Our initial work will generate Java. Our thanks to Terence Parr - for ANTLR - and Jean Bovet and Terence Parr for ANTLR Works.

The Carnap grammar is available under a creative commons BY-SA 3.0 license.

Creative Commons License

Development Repository

Carnap Subversion Server

The Carnap Development Repository

Targets

For pragmatic purposes our initial target platform is Java - though the compiler itself will be retargetable and much of it will be implemented in Carnap itself. The goal is to provide a compiler that is widely available and can be used immediately to write production quality applications that can scale to future many-core platforms. This compiler will also enable the development community to become familiar early with the issues of constructing parallel applications on many-core plaforms.

We are currently talking to several semiconductor companies building many core devices about targeting their platforms. If you have such a platform then please contact Manycore Corporation for more details.

Formal Methods

Formal methods (built on CSP) play a significant role in the development of Carnap, since the formal basis of Carnap is CSP; in principle all Carnap programs can be translated into valid CSP (it will be up to the project to actually show that this is the case). With such a foundation it will be possible to prove (with our open source compiler tools) useful properties of Carnap programs such as properties of termination, proof of deadlock freedom, and that Carnap programs meet their specifications.

Rudolf Carnap

After whom the language is named.

Carnap is named in honor of the logician Rudolf Carnap (1891-1970).

Rudolf Carnap made significant contributions to logic and the philosophy of science. His widely influential work includes "The Logical Structure of the World," "The Logical Syntax of Language," and "Meaning and Necessity." In "The Logical Structure of the World" Carnap argued, as do I, that natural apprehension is the product of a differentiation or "reduction" against the entire body of sense data.

This positivist view is one that requires a certain non-locality, and it is contrary to the view widely held in Computer Science since the work of Alan Turing. Turing recognized this non-locality but did not consider an explanation of it necessary. Hence, since Turing, the mainstream view has been integrative. That is, natural apprehension is viewed in contemporary Computer Science as an integration of the logical parts with strong locality. Hence, no language of Computer Science, as implemented by contemporary computer architectures, truly embodies the position taken by Carnap and myself.

What is clear, however, is that the physical models that implement apprehension in the world are massively parallel, and the logical reductions from the whole that we seek are based upon a process interaction model in nature that is now poorly understood.

Advancing this understanding is the core mission of IASE. The language here then will potentially evolve toward logical differentiation as the new generation of many-core devices become available. There are lessons to learn by engineering new process interaction fabrics that must implement our models, and we anticipate that new physical data from the life sciences, along with developments in quantum mechanics, that will teach us more. These lessons may eventually enable a new type of device that can meet our goals. Only then will this language truly deserve the name "Carnap."

In special honor of Rudolf Carnap, for the next iteration of the language design, I am considering the incorporation of inductive logic types, operators and constructs based on his excellent work in probability theory, and relating that work to my understanding of parallel execution.

Steven Ericsson-Zenith, Sunnyvale, California.

For further information please call :

  • +44 020 8123 8400 (London)
  • or +1 408 732 8400 (Silicon Valley).

The Carnap Team

Steven Ericsson-Zenith

Language and Computer Architecture.

Steven is the principal investigator.

Stan Bailes

Stan has extensive experience with the Ease model and its implementation. He is a Principal Engineer at Amazon in Seattle.

Cameron McInally

Compiler Lead Developer

Cameron received a B.S. in Computer Science from Villanova University and a M.S. in Computer Science from the Courant Institute of Mathematical Sciences at New York University. He was a consultant for a few New York City based Mobility Start-ups and for NYU's School of Law. Currently, he is the J2ME developer at Vettro, one of the largest Enterprise Mobile shops. Cameron is also part of the Executive Council and Founder of the ACM at NYU.

Tom Way

Tom is an Assistant Professor of Computer Science at Villanova University, with research interests including compiler optimization for high performance computing and computational nanotechnology. Prior to earning a Ph.D. in 2002 from the University of Delaware, he spent ten years in television production in Hollywood. Tom is principle investigator of a large research project involving enterprise-scale network modeling and simulation and is the director of Villanova's Applied Computing Technology Laboratory which engages undergraduate students and faculty in collaborative research to solve a multiplicity of problems using computers.

Nicholas DiPasquale

Nick completed his Bachelors and Masters of Computer Science at Villanova University with a certificate in Systems Programming. Previously he worked for the University of Pennsylvania Muscle Institute creating UI applications for custom hardware systems. Currently he is a developer at Wingspan Technology, in Blue Bell PA, developing a J2EE document management portal infrastructure.

References

Steven Ericsson-Zenith. Process Interaction Models. Universite Pierre et Marie Curie, PARIS (VI) (1992). (ref:1)

Copyright © 2008, Steven Ericsson-Zenith (All Rights Reserved)

Institute for Advanced Science & Engineering

A 501(c)3 nonprofit basic research organization incorporated in California.

format: memeio/xsl/xhtml.

this page generated by memeio Tuesday, February 12th 2008 12:15 p.m. -08:00