e-mail: |
http://research.microsoft.com/~damien/ |
Abstract
In the last
decade, strongly-typed, garbage-collected object-oriented
languages have left the laboratory and become mainstream
industrial tools. This has led to improvements in programmer
productivity and software reliability, but some common tasks are
still harder than they should be. Two of the most critical for
the development of the next generation of loosely-coupled,
networked applications and web services are concurrent
programming and the processing of relational and semi-structured
data. C Omega is an experimental language designed at
Microsoft Research that makes programming with concurrency and
external data simpler and less error-prone.
The C Omega approach to both the data and control issues is to extend C# with new, first-class, types and language constructs, rather than relying on external libraries, mappings and tools. The concurrency extensions, based on the join-calculus, provide a simple and powerful asynchronous programming model, which is applicable in both the local (multiple threads on a single machine) and distributed (asynchronous message over a LAN/WAN) settings. The data extensions add new type constructors giving first-class support of both relational (database tables) and semi-structured (XML trees) data. Generalized member access allows XPath-like processing to be expressed directly within the language, and checked by the compiler.