Cω is a strongly typed, data oriented programming language that bridges the gap between semi-structured hierarchical data (XML), relational data (SQL), and the .NET Common Type System (CTS).
Concurrency is going mainstream: rise of multi-core and asynchronous web applications.
“Great! Pity they’re tied to an outdated research compiler…”
Cω extended C# 1.0 with high-level, asynchronous concurrency abstractions -join patterns - based on the join calculus.
(variant of Polyphonic C#, related to JoCaml).
Cω’s features have been used in the creation of the LINQ extension in C#.
The concurrency constructs have also been released in a slightly modified form as library, named Joins Concurrency Library, for C#, some prototype extensions for VB and other .NET languages by Microsoft Research.
Direct support of Asynchronous concurrency and processing of relational and semi-structured data. Stronger compile-time guarantees Freedom to choose different
implementation strategies for compiler. More natural syntax. Better support from other tools such as
editors and debuggers.
No Reinvention of wheel. Extend an already-popular language.
The aim is to take models and lessons learnt from the design of more academic, special purpose languages and try to incorporate them within the mainstream object-oriented framework Example:▪ Concurrency – from - join calculus and JoCaml.
Provide an integration of the object, relational and semi-structured data models.
Generalization, rather than specializations
XSDSQL
CTR
Cω
Ordered homogeneous collections of zero or more values.
Closely related to C#’s IEnumerable<>
Generated using iterators, which are blocks that contain yield statements.
They are always flattened; there are no nested streams of streams
Apply-to-all expression variable it
Ordered collections of heterogeneous values.
Allows repeated occurrences of the same member name within an anonymous struct type, even at different types
Discriminated Union typeProvides a test, e is T on choice
values to test the value's type.
choice{int;Button;} x = 3; choice{int;Button;} y = new Button();
A normal class that has a single unlabelled type that describes the content of that class
Cω offers some XPath-like expressivity: Filters▪ allows a filter to be passed over a stream. ▪ Example: friends[ it.age < 18]
Queries by type
The projection list results in the select expression returning a stream of "tuple types", namely
struct{SqlInt32 ProductId; SqlMoney Total; }* The from clause specifies the data source being
queried. This can be either an object in a SQL database, or any in-memory object.
Cω select statement supports various forms of joins, which are essential to any real database application.
Cω also supports order by and group by clauses. The where clause can specify any valid Cω
Boolean predicate for filtering the selection.
Methods can be defined as either synchronous or asynchronous
When a synchronous method is called, the caller is blocked until the method returns
When an asynchronous method is called, there is no result and the caller proceeds immediately without being blocked
A body may be associated with a set of methods. Such a definition is called chord.
A particular method may appear in the header of several chords.
The body of a chord can only execute once all the methods in its header have been called.
Thus, when a method is called there may be zero, one, or more chords which are enabled:
If no chord is enabled then the method invocation is queued up. If the method is asynchronous, then this simply involves adding the arguments (the contents of the message) to a queue. If the method is synchronous, then the calling thread is blocked.
If there is a single enabled chord, then the arguments of the calls involved in the match are de-queued, any blocked thread involved in the match is awakened, and the body runs.
When a chord which involves only asynchronous methods runs, then it does so in a new thread.
If there are several chords which are enabled then an unspecified one of them is chosen to run.
Similarly, if there are multiple calls to a particular method queued up, we do not specify which call will be de-queued when there is a match.
Cω contains elegant primitives for asynchronous communication, and offers a strongly-typed integration of the object, relational and semi-structured data models.
It makes easier to write the data-intensive distributed applications being written today
http://www.google.co.in/http://research.microsoft.com/
comega/http://bartdesmet.net/blogs/bart/
archive/tags/Comega/default.aspxhttp://msdn.microsoft.com/en-us/
library/ms974195.aspxhttp://channel9.msdn.com/
Thank You
Top Related