The Carnap Programming LanguageProcess oriented programming: shared data structures and the concurrent processes that act upon them.
§1
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.
§2
"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.
§3
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.
§4
Contexts are named, type associative and statically typed.
§5
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).
§6
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
§7
Carnap is Open Source and freely available to the research community.
Programmability
§8
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.
§9
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 CodeSome simple examples of Carnap programs. Mailing Lists
§10
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.
A mailing list for those that have a general interest in Carnap A mailing list for Carnap compiler and tools developers. Carnap Programs With ANTLRWorks
§11
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.
§12
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).
This document provides a summary of the work available and points to useful free documents on the subject. 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.
§13
The Carnap grammar is available under a creative commons BY-SA 3.0 license.
 Development RepositoryThe Carnap Development Repository Targets
§14
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.
§15
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
§16
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 CarnapAfter whom the language is named.
§17
Carnap is named in honor of the logician Rudolf Carnap (1891-1970).
§18
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.
§19
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.
§20
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.
§21
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."
§22
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.
§23
Steven Ericsson-Zenith, Sunnyvale, California.
§24
For further information please call :
- +44 020 8123 8400 (London)
- or +1 408 732 8400 (Silicon Valley).
The Carnap TeamSteven Ericsson-ZenithLanguage and Computer Architecture.
§25
Steven is the principal investigator.
Stan Bailes
§26
Stan has extensive experience with the Ease model and its implementation. He is a Principal Engineer
at Amazon in Seattle.
Cameron McInallyCompiler Lead Developer
§27
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
§28
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
§29
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.
|