C Omega


Published on

The original compiler of LINQ, now available in framework 3.5. And some other michenism for concurrency control

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

C Omega

  1. 2. <ul><li>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). </li></ul>
  2. 3. <ul><li>Concurrency is going mainstream: rise of multi-core and asynchronous web applications. </li></ul><ul><li>“ Great! Pity they’re tied to an outdated research compiler…” </li></ul><ul><li>C ω extended C# 1.0 with high-level, asynchronous concurrency abstractions - join patterns - based on the join calculus. </li></ul><ul><li>(variant of Polyphonic C#, related to JoCaml). </li></ul>
  3. 4. <ul><li>Cω’s features have been used in the creation of the LINQ extension in C#. </li></ul><ul><li>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. </li></ul>
  4. 5. <ul><li>Concurrency </li></ul>XSD SQL CTR C ω
  5. 6. <ul><li>Direct support of Asynchronous concurrency and processing of relational and semi-structured data. </li></ul><ul><ul><li>Stronger compile-time guarantees </li></ul></ul><ul><ul><li>Freedom to choose different implementation strategies for compiler. </li></ul></ul><ul><ul><li>More natural syntax. </li></ul></ul><ul><ul><li>Better support from other tools such as editors and debuggers. </li></ul></ul>
  6. 8. <ul><li>No Reinvention of wheel. Extend an already-popular language. </li></ul><ul><li>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 </li></ul><ul><ul><li>Example: </li></ul></ul><ul><ul><ul><li>Concurrency – from - join calculus and JoCaml. </li></ul></ul></ul>
  7. 10. <ul><li>Provide an integration of the object, relational and semi-structured data models. </li></ul><ul><li>Generalization , rather than specializations </li></ul>XSD SQL CTR C ω
  8. 11. <ul><li>Ordered homogeneous collections of zero or more values. </li></ul><ul><li>Closely related to C#’s IEnumerable<> </li></ul><ul><li>Generated using iterators, which are blocks that contain yield statements. </li></ul><ul><li>They are always flattened ; there are no nested streams of streams </li></ul><ul><li>Apply-to-all expression </li></ul><ul><li>variable it </li></ul>
  9. 13. <ul><li>Ordered collections of heterogeneous values. </li></ul><ul><li>Allows repeated occurrences of the same member name within an anonymous struct type, even at different types </li></ul>
  10. 15. <ul><li>Discriminated Union type </li></ul><ul><li>Provides a test, e is T on choice values to test the value's type. </li></ul>
  11. 16. <ul><li>choice{int;Button;} x = 3; </li></ul><ul><li>choice{int;Button;} y = new Button(); </li></ul>
  12. 17. <ul><li>A normal class that has a single unlabelled type that describes the content of that class </li></ul>
  13. 19. <ul><li>Cω offers some XPath-like expressivity: </li></ul><ul><ul><li>Filters </li></ul></ul><ul><ul><ul><li>allows a filter to be passed over a stream. </li></ul></ul></ul><ul><ul><ul><li>Example: friends[ it.age < 18] </li></ul></ul></ul><ul><ul><li>Queries by type </li></ul></ul>
  14. 24. <ul><li>The projection list results in the select expression returning a stream of &quot; tuple types &quot;, namely </li></ul><ul><li>struct{SqlInt32 ProductId; SqlMoney Total; }* </li></ul><ul><li>The from clause specifies the data source being queried. This can be either an object in a SQL database, or any in-memory object. </li></ul><ul><li>Cω select statement supports various forms of joins , which are essential to any real database application. </li></ul><ul><li>Cω also supports order by and group by clauses. </li></ul><ul><li>The where clause can specify any valid Cω Boolean predicate for filtering the selection. </li></ul>
  15. 26. <ul><li>Methods can be defined as either synchronous or asynchronous </li></ul><ul><li>When a synchronous method is called, the caller is blocked until the method returns </li></ul><ul><li>When an asynchronous method is called, there is no result and the caller proceeds immediately without being blocked </li></ul>
  16. 27. <ul><li>A body may be associated with a set of methods. Such a definition is called chord. </li></ul><ul><li>A particular method may appear in the header of several chords. </li></ul><ul><li>The body of a chord can only execute once all the methods in its header have been called. </li></ul><ul><li>Thus, when a method is called there may be zero, one, or more chords which are enabled: </li></ul>
  17. 28. <ul><li>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. </li></ul><ul><li>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. </li></ul>
  18. 29. <ul><li>When a chord which involves only asynchronous methods runs, then it does so in a new thread. </li></ul><ul><li>If there are several chords which are enabled then an unspecified one of them is chosen to run. </li></ul><ul><li>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. </li></ul>
  19. 31. <ul><li>Cω contains elegant primitives for asynchronous communication, and offers a strongly-typed integration of the object, relational and semi-structured data models. </li></ul><ul><li>It makes easier to write the data-intensive distributed applications being written today </li></ul>
  20. 32. <ul><li>http://www.google.co.in/ </li></ul><ul><li>http://research.microsoft.com/comega/ </li></ul><ul><li>http://bartdesmet.net/blogs/bart/archive/tags/Comega/default.aspx </li></ul><ul><li>http://msdn.microsoft.com/en-us/library/ms974195.aspx </li></ul><ul><li>http://channel9.msdn.com/ </li></ul>
  21. 33. Thank You