<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Comment Feed for Channel 9 - Expert to Expert: Contract Oriented Programming and Spec#</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec/RSS"></atom:link>
	<image>
		<url>http://ecn.channel9.msdn.com/o9/previewImages/100/405815_100x75.jpg</url>
		<title>Channel 9 - Expert to Expert: Contract Oriented Programming and Spec#</title>
		<link></link>
	</image>
	<description>
The Spec# programming system is a new attempt at a more cost effective way to develop and maintain high-quality software.&amp;nbsp; Spec# is pronounced &amp;quot;Spec sharp&amp;quot; and can be written (and searched for) as the
 &amp;quot;specsharp&amp;quot; or &amp;quot;Spec# programming system&amp;quot;.&amp;nbsp; The Spec# system consists of: 
The Spec# programming language.&amp;nbsp; Spec# is an extension of the object-oriented language C#.&amp;nbsp; It extends the type system to include non-null types and checked exceptions.&amp;nbsp; It provides method contracts in the form of pre- and postconditions as
 well as object invariants. The Spec# compiler.&amp;nbsp; Integrated into the Microsoft Visual Studio development environment for the .NET platform, the compiler statically enforces non-null types, emits run-time checks for method contracts and invariants, and records the contracts
 as metadata for consumption by downstream tools. The Spec# static program verifier.&amp;nbsp; This component (codenamed Boogie) generates logical verification conditions from a Spec# program.&amp;nbsp; Internally, it uses an automatic theorem prover that analyzes the verification conditions to prove the correctness
 of the program or find errors in it.
A unique feature of the Spec# programming system is its guarantee of maintaining invariants in object-oriented programs in the presence of callbacks, threads, and inter-object relationships.
 
The Spec# programming system is being developed as a research project at Microsoft Research in Redmond, primarily by the
Programming Languages and Methods group.Here, Expert to Expert guest expert and programming language guru Erik Meijer chats with MSR researchers and spec# designers Wolfram Schulte, &amp;nbsp;Rustan Leino and&amp;nbsp;Peter Mueller. We dig into the details of Spec# and contract oriented programming in general. Plenty
 of code on the screen and lots of deep conversation. Just how we like it for Going Deep and Expert to Expert.Enjoy!LOW RES FILEMP4ZUNE 
</description>
	<link></link>
	<language>en</language>
	<pubDate>Sat, 18 May 2013 14:16:32 GMT</pubDate>
	<lastBuildDate>Sat, 18 May 2013 14:16:32 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[AWESOME! Thanks for this video, Charles. I love it already before having watched it *downloading*<p>posted by littleguru</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475157890000000</link>
		<pubDate>Tue, 27 May 2008 20:09:49 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475157890000000</guid>
		<dc:creator>littleguru</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[<a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2ESpecSharp_ch9.wmv"><font color="#a55506">LOW RES FILE</font></a><br /><br /><a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2ESpecSharp_ch9.mp4"><font color="#a55506">MP4</font></a><br /><br /><a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2ESpecSharp_Zune_ch9.wmv"><font color="#a55506">ZUNE</font></a><p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475189080000000</link>
		<pubDate>Tue, 27 May 2008 21:01:48 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475189080000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[very cool, thanks for the video<p>posted by Cyonix</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475201830000000</link>
		<pubDate>Tue, 27 May 2008 21:23:03 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475201830000000</guid>
		<dc:creator>Cyonix</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[That was great, one of the most interesting videos for me in awhile..<br /><br />I'd love to start working on this, I have some questions, is this based on C# 3.0? or is this an invariation of C# 2.0?<br /><br />Its fascinating to think that maybe .NET, or I guess maybe even a predecessor to .NET could actually bake this sort of advanced contract into its native language..<br /><br />Other than that, I'm really interested in seeing how far this can go to being an &quot;alternative&quot; to C# in some scenarios, or perhaps how languages like C# and VB can start to introduce these as core specifications..<p>posted by stevo_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475226570000000</link>
		<pubDate>Tue, 27 May 2008 22:04:17 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475226570000000</guid>
		<dc:creator>stevo_</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Glad you're liking this one. I know I really enjoyed the conversation (and learned a lot). It's too early to tell what will become of this type of functionality and how it will map to our general purpose programming languages like C# and VB.NET...
<br /><br />Keep in mind that Spec# is a research implementation and not intended for product-quality uses. The concept of Contract Orientation is alive and well today in langauges like Eiffel (though the implementation is different than Spec#'s...).<br /><br /><br />Stay tuned...<br />C<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475233040000000</link>
		<pubDate>Tue, 27 May 2008 22:15:04 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475233040000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[This really is exciting stuff (in fact, I created a Channel9 user account just to respond to this video). Charles, I realize this isn't production-ready, but I can't tell you how much I'd like to start using this in my own work
<em>now</em>.<br /><br />I had the same question as stevo_ - What version of C# is this based on? Perhaps someone on the Spec# team can enlighten us on which, if any, newer features of C# are not currently supported in Spec#.<br /><br />After the steady stream of language and CLR enhancements we've enjoyed--nullable types, generics, and all of the great new enhancements that have come with the dawn of LINQ--this seems like a natural next step. I'm very hopeful Microsoft will bake Design by
 Contract support into a future version of the CLR.<br /><br />Here's my vote to see this make it's way into C# 4 and .NET 4.<p>posted by adamjcooper</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475242590000000</link>
		<pubDate>Tue, 27 May 2008 22:30:59 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475242590000000</guid>
		<dc:creator>adamjcooper</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Wow this was a load of cool features and questions!<br /><br />This video made wonder the following: are there tools around that do the stuff that the team does with their checker already on current C# code; or MSIL code? Anybody having come across a tool similar to their checker?<p>posted by littleguru</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475624830000000</link>
		<pubDate>Wed, 28 May 2008 09:08:03 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475624830000000</guid>
		<dc:creator>littleguru</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[I watched it yesterday evening. And now, back at work I already wished I had the Spec# features <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-6.gif' alt='Sad' /><br />Great interview, keep the 'Going Deep' stuff comming!<br /><br />En de oranje das voor Koninginnedag, super Eric!<br />(translation: and the orange tye for Queens Day, super Eric!)<p>posted by ilmar</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475677460000000</link>
		<pubDate>Wed, 28 May 2008 10:35:46 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475677460000000</guid>
		<dc:creator>ilmar</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Hi littleguru,<br /><br />There are two Design by Contact frameworks I know of that you can use today in C#. They both enforce checks at runtime, but take very different approaches and will appeal to very different audiences.<br /><br /><a href="http://www.codeproject.com/KB/cs/designbycontract.aspx">Kevin McFarlane has created an easy-to-use API</a> that always enforces checks at runtime via calls to a Check object, such as:<br /><br />Check.Require(0 &lt; x &lt; 5);<br /><br />Check.Ensure(result &lt; 3);<br /><br />Check.Invariant(B.a &gt; <span class="code-digit">0</span> and B.b &gt; <span class="code-digit">
0</span>);<br /><br /><br />Philip Laureano offers <a href="http://www.codeproject.com/KB/cs/LinFu_Part5.aspx">
a more complicated Design by Contract library</a> as part of a larger library called LinFu. He uses a language-neutral,&nbsp;attributes-based approach for declaring contract checks. The advantage--or disadvantage, depending on your point of view--to Philip's approach
 is that the library is completely ignorant of the contract checks you assign, which means that when you call your library as normal, none of the checks will be made.&nbsp;In order for the checks to actually be enforced, you must use LinFu to create&nbsp;proxy versions
 of your classes with all the checks injected into the proxies. I get the impression this DbC approach is best used in conjunction with some sort of Dependency Injection framework, either LinFu's own or something like Spring.NET or Castle Windsor.<br /><br />If you want a simple and lightweight API that bakes checks into your library so that they are always performed regardless of the caller,
<a href="http://www.codeproject.com/KB/cs/designbycontract.aspx">Kevin's API</a> is probably your best bet. If you require your checks to be completely separate from your library to the point that they are optional, and if you're already working on an enterprise
 project using Dependency Injection, take a look at <a href="http://www.codeproject.com/KB/cs/LinFu_Part5.aspx">
LinFu.DesignByContract2</a>.<br /><br />Hope that helps,<br />Adam.<p>posted by adamjcooper</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475738340000000</link>
		<pubDate>Wed, 28 May 2008 12:17:14 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475738340000000</guid>
		<dc:creator>adamjcooper</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<p>Intersting Stuff. The media length looked too much but it was a short discussion at the end with many things left unaddressed.</p>
<p><strong>Handling Overloaded Function</strong></p>
<p>For overloaded function(s), there must be a single case specification, or each function must be addressed seperately.</p>
<p>Moreover, Unlike Java, C# allows funtion overloading based upon return types, which When called in code, tend to confuse reader/compiler.
</p>
<p><br />For example,to multiply 2 integers, a class can include following overloaded functions:</p>
<p>..<br />int mult(int, int);&nbsp;&nbsp;// call if result is less than max (int), return int<br />long mult(int, int);&nbsp;&nbsp;// call if&nbsp; max (int) &lt;=result&lt;=max (long), return long<br />float mult(int, int);&nbsp;&nbsp;// call if&nbsp; max (long) &lt;=result&lt;=max (float), return float<br />double mult(int, int);&nbsp;&nbsp;// call if&nbsp; max (long) &lt;=result&lt;=max (double), return double
<br />...</p>
<p><br /><strong>Compiler Intelligence conflicting software design principles</strong></p>
<p>This is a Programmer responsibility and Compiler responsibility case, that is, what a programmer need to specify and what a compiler must assume.</p>
<p>This C/C&#43;&#43; code is self explanatory without any documentation/comments</p>
<p>...<br />unsigned x=[some expresion];<br />..<br />if (x)&nbsp; <br />...<br />...</p>
<p><br />The C/C&#43;&#43; compilers are intelligent enough to assume that condition will execute if x is a positive integer, and Java/ C# compilers require an explicit condition for that adding burden to programmer.</p>
<p><br /><strong>A fun case</strong></p>
<p>As discussedm, Spec is applied on C code to catch/handle every possible case. Learning the languaage, this is the first piece of code developers eneter:</p>
<p>#include &lt;stdio.h&gt;</p>
<p>int main()<br />{<br />&nbsp;printf(&quot;xyz&quot;); //xyz can be any string<br />&nbsp;return 0;<br />}</p>
<p><br />Going deep in the language, at a stage programmer discover that printf() in fact returns a value, which is usually a positive integer but in the most rare case, it can be negative indicating an exception. Applying spec on rare cases like this, perhaps once
 in a lifetime sort of case...</p>
<p>posted by umer_a</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475741030000000</link>
		<pubDate>Wed, 28 May 2008 12:21:43 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475741030000000</guid>
		<dc:creator>umer_a</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">adamjcooper wrote:</div>
<div class="quoteBody">&#65279;Hi littleguru,<br /><br />There are two Design by Contact frameworks I know of that you can use today in C#. They both enforce checks at runtime, but take very different approaches and will appeal to very different audiences.<br /><br />...<br /><br />Adam.</div>
</blockquote>
<br /><br />Thanks for sharing. The two frameworks seem very primitive compared to Spec#, but not everyone has the time to write a new compiler with IDE integration. The first one is even more like an assert(...) thing.<br /><br /><blockquote>
<div class="quoteAuthor">umer_a wrote:</div>
<div class="quoteBody">&#65279;<strong>Compiler Intelligence conflicting software design principles<br /></strong><br />This is a Programmer responsibility and Compiler responsibility case, that is, what a programmer need to specify and what a compiler must assume.<br /><br />This C/C&#43;&#43; code is self explanatory without any documentation/comments<br /><br />...<br />unsigned x=[some expresion];<br />..<br />if (x)&nbsp; <br />...<br />...<br /><br />The C/C&#43;&#43; compilers are intelligent enough to assume that condition will execute if x is a positive integer, and Java/ C# compilers require an explicit condition for that adding burden to programmer.</div>
</blockquote>
<br /><br />I don't know if that can be said as &quot;smart&quot;...&nbsp;This is more like a historical thing and somebody new to C/C&#43;&#43; doesn't know that &gt; 0&nbsp;means true and 0&nbsp;represents false (and that a negative value might be an error code)... That's knowledge that you gain over time.
<br /><br />It's also very confusing&nbsp;for people who are new to C/C&#43;&#43; to see checks like this (at least it was for me):<br /><br />int i = j &#43; y &#43; z;<br /><br />if (i)<br />{<br />&nbsp;&nbsp;&nbsp; // do something.<br />}<br /><br />Also,&nbsp;I find it interesting that this &quot;smartness&quot; will not always work. Especially if you have something like this:<br /><br />if (S_OK)<br />&nbsp;&nbsp; // ...<br />else if (S_FAIL)<br />&nbsp; // ...<br /><br />Which one do you think is entered? (just by looking at the variable names).<br /><br />Having&nbsp;a Boolean type like in .NET is way better, IMHO. And having just&nbsp;ONE Boolean type is very important, not like in the SDKs based on C/C&#43;&#43;&nbsp;where you have tons of different representations for something that worked out and something that didn't...<p>posted by littleguru</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475841670000000</link>
		<pubDate>Wed, 28 May 2008 15:09:27 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475841670000000</guid>
		<dc:creator>littleguru</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[That was about compiler efficiency and intelligence, i.e.,&nbsp;&nbsp;a compiler&nbsp;intelligent enough to assume certain conditions. You can say limiting a programmer creativity by restricting to a certain struct like bool or allowing him the choice of using bool if
 required.<br /><br />The code provided requires two explicit test conditions to be entered in Java/C# compilers and your question will still remain unanswered.<br /><br />if (S_OK)<br />&nbsp;....;<br />else if (S_FAIL)<br />&nbsp;......;<br /><br /><br />In Java/C#<br /><br />....;&nbsp; //get some value for x somehow<br />if (x==S_OK)<br />&nbsp;....;<br />else if (x==S_FAIL)<br />&nbsp;....;<br /><br />In both versions, you cannot answer unless you have some hint on constants, but at least one extra statement and two
<strong>explicit</strong> test conditions due to developer in Java/C# version.<p>posted by umer_a</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475854740000000</link>
		<pubDate>Wed, 28 May 2008 15:31:14 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475854740000000</guid>
		<dc:creator>umer_a</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[How did you integrate with the Visual Studio environment? Would it be possible to get a simple sample/tutorial on VS SDK?<p>posted by Moshe</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475902230000000</link>
		<pubDate>Wed, 28 May 2008 16:50:23 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633475902230000000</guid>
		<dc:creator>Moshe</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[First of all, thanks for a very interesting video! I have a question about the way invariants are implemented in Spec#. Traditionally (i.e., in Eiffel), invariants are only checked when you exit a method that was called from a different object, so you
 can break an invariant somewhere in the middle of a method or even have a private method that breaks an invariant every time. Was there any specific design issue that made you change the way invariants work and enforce them after every statement, which led
 to the introduction of the expose block?<p>posted by onodera</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476007960000000</link>
		<pubDate>Wed, 28 May 2008 19:46:36 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476007960000000</guid>
		<dc:creator>onodera</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Wow, great video, charles &amp; erik. It was really exiting to see Spec#. I wonder if it will be integrated&nbsp;(fully/partly) into C#.<br /><br />To Windows 3.0 in Vista. Well, theres a Windows 3.0-Like File-Dialog still in Vista in the font-management.<br /><br />Goto &quot;Control-Panel&quot; -&gt; &quot;Apperance and Personalisation&quot; -&gt; &quot;Fonts&quot;, right-click on the panel, choose &quot;Install New Font&quot;.<br /><br />Screens: <br /><br /><img src="http://img135.imageshack.us/img135/7485/menutofontkt3.jpg" alt="win30">
<img src="http://img76.imageshack.us/img76/4620/menutofont2mg6.jpg" alt="win30"><p>posted by GamlerHart</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476052340000000</link>
		<pubDate>Wed, 28 May 2008 21:00:34 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476052340000000</guid>
		<dc:creator>GamlerHart</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">umer_a wrote:</div>
<div class="quoteBody">&#65279;That was about compiler efficiency and intelligence, i.e.,&nbsp;&nbsp;a compiler&nbsp;intelligent enough to assume certain conditions. You can say limiting a programmer creativity by restricting to a certain struct like bool or allowing him the choice
 of using bool if required.<br /><br />The code provided requires two explicit test conditions to be entered in Java/C# compilers and your question will still remain unanswered.<br /><br />if (S_OK)<br />&nbsp;....;<br />else if (S_FAIL)<br />&nbsp;......;<br /><br /><br />In Java/C#<br /><br />....;&nbsp; //get some value for x somehow<br />if (x==S_OK)<br />&nbsp;....;<br />else if (x==S_FAIL)<br />&nbsp;....;<br /><br />In both versions, you cannot answer unless you have some hint on constants, but at least one extra statement and two
<strong>explicit</strong> test conditions due to developer in Java/C# version.</div>
</blockquote>
<br /><br />if (x)<br /><br />works in C#/JAVA if x is bool... if you have an int you need to check it against another value to &quot;convert&quot; it to a bool but that's more natural.<br /><br />For me using an int as a bool is a little bit confusing. If you take CS theory a bool is a bit and not an int. It could only be 1 or 0, whereas
<br /><br />if (y &#43; i &#43; k) <br /><br />could be anything within the min and max value of the int, which is weird!<br /><br />Still, you didn't answer the question on S_OK and S_FAIL and therefore I will tell you what they are: S_OK == 0 and S_FAIL == 1 - interesting, isn't it?<p>posted by littleguru</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476063380000000</link>
		<pubDate>Wed, 28 May 2008 21:18:58 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476063380000000</guid>
		<dc:creator>littleguru</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Wierd to see Eric in a suit <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-7.gif' alt='Perplexed' /> Nice tie though.<br /><p>posted by aJanuary</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476073870000000</link>
		<pubDate>Wed, 28 May 2008 21:36:27 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476073870000000</guid>
		<dc:creator>aJanuary</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<p>The first question people have regarding contracts is, why bother? The speakers addressed this by explaining how much money Microsoft saved in manual testing time. But there are other savings as well.<br /><br />By specifying assumptions explicitly, the design improves. You move from fuzzy verbal communication&nbsp;to concise, precise communication about the behavior and expectations of code. This has the same benefits as writing documentation before code, or writing tests
 before code. It clarifies the design.<br /><br />Even without compile-time or run-time contract checks, a contract allows one to view classes or methods as black boxes with precise behavior, ignoring internal details. This helps to logically determine if a design functions correctly.<br /><br />Another benefit is reduced debugging time. If you use only run-time contract checks, you eliminate the time normally spent trying to narrow down a bug -- you find it earlier, before it is manifested in peculiar ways. If you have compile time checking as well,
 as in spec#, the same bug would never occur -- it would spotted by the compiler.<br /><br />The work done by the spec# group is important. I hope it goes into products as soon as possible.</p>
<p>posted by Frank Hileman</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476121810000000</link>
		<pubDate>Wed, 28 May 2008 22:56:21 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476121810000000</guid>
		<dc:creator>Frank Hileman</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">littleguru wrote:</div>
<div class="quoteBody">Still, you didn't answer the question on S_OK and S_FAIL and therefore I will tell you what they are: S_OK == 0 and S_FAIL == 1 - interesting, isn't it?</div>
</blockquote>
<br /><br /><img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> this is platform specific code, or constants&nbsp;defined on a specific platform,&nbsp;the same constants may have different value&nbsp;in C/C&#43;&#43; compiler running on Linux/Solaris or some other platform or they might not exist at all. We were never interested in win32 or
 platform specific discussion, here. <p>posted by umer_a</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476169660000000</link>
		<pubDate>Thu, 29 May 2008 00:16:06 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476169660000000</guid>
		<dc:creator>umer_a</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Experts to experts? Indeed! I didn't get a point of Spec#... Absolutely. Perhaps because I'm not an &quot;expert&quot;...<br /><br />PS: Those guys look like absolute geeks... Crazy eyes, crazy hairdressings... <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-11.gif' alt='Cool' /><br /><p>posted by BlackTiger</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476413550000000</link>
		<pubDate>Thu, 29 May 2008 07:02:35 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476413550000000</guid>
		<dc:creator>BlackTiger</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">umer_a wrote:</div>
<div class="quoteBody">&#65279;
<blockquote>
<table class="quoteTable">
<tbody>
<tr>
<td valign="top" width="10"><img src="/Themes/AlmostGlass/images/icon-quote.gif"></td>
<td class="txt3"><strong>littleguru wrote:</strong>
<hr size="1">
<i>Still, you didn't answer the question on S_OK and S_FAIL and therefore I will tell you what they are: S_OK == 0 and S_FAIL == 1 - interesting, isn't it?</i></td>
</tr>
</tbody>
</table>
</blockquote>
<br /><br /><img src="/emoticons/emotion-1.gif" border="0"> this is platform specific code, or constants&nbsp;defined on a specific platform,&nbsp;the same constants may have different value&nbsp;in C/C&#43;&#43; compiler running on Linux/Solaris or some other platform or they might not exist
 at all. We were never interested in win32 or platform specific discussion, here.
</div>
</blockquote>
<br /><br />Hehe. But you know that's why I'm for one bool. True, False that is. <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /><br /><br />But we are discussing things here that are only slightly related to the topic...<p>posted by littleguru</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476415960000000</link>
		<pubDate>Thu, 29 May 2008 07:06:36 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476415960000000</guid>
		<dc:creator>littleguru</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[The implications of this type of programming language are unignorable. It is doubtless that it's programming syntax will spead into C# and WCF especially. You really need to have programmed C&#43;&#43; to fully appreciate just what level of control you are given
 at compile time. I have been toying around with possibly trying dynamically typed languages like RoR but I shall NEVER, as long as this continues to be developed.<br /><br />This isn't so much &quot;patterns and practices&quot; for applications, but for programming. Once some formal ground rules are established, one can indeed write better, faster, more secure, less buggy, eloquent and performant code.<br /><br />Well Done to John, Paul, Ringo...<br /><p>posted by vesuvius</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476533840000000</link>
		<pubDate>Thu, 29 May 2008 10:23:04 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476533840000000</guid>
		<dc:creator>vesuvius</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[&quot;Is this based on C# 3.0? or is this an invariation of C# 2.0?&quot;<br />From what I remember from other interviews it is based on C# 2.0.<br /><br />Another interesting interview (which I think is where I got the above from) can be found at <a href="http://www.hanselminutes.com/default.aspx?showID=128">http&#58;&#47;&#47;www.hanselminutes.com&#47;default.aspx&#63;showID&#61;128</a><br /><p>posted by aJanuary</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476535210000000</link>
		<pubDate>Thu, 29 May 2008 10:25:21 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476535210000000</guid>
		<dc:creator>aJanuary</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Very, very, very, very cool stuff!<br /><br />I would love to write software this way!<br /><br />You look nice in a suit Erik! <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-11.gif' alt='Cool' /><br /><p>posted by Maddus Mattus</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476553430000000</link>
		<pubDate>Thu, 29 May 2008 10:55:43 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476553430000000</guid>
		<dc:creator>Maddus Mattus</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">aJanuary wrote:</div>
<div class="quoteBody">&#65279;&quot;Is this based on C# 3.0? or is this an invariation of C# 2.0?&quot;<br />From what I remember from other interviews it is based on C# 2.0.<br /><br />Another interesting interview (which I think is where I got the above from) can be found at <a href="http://www.hanselminutes.com/default.aspx?showID=128">http&#58;&#47;&#47;www.hanselminutes.com&#47;default.aspx&#63;showID&#61;128</a><br /></div>
</blockquote>
<br /><br />I really don't see what the obsession with whether it's a .NET 2.0 or 3.0 invariant.<br /><br />A quick read of the Spec # <a href="http://research.microsoft.com/specsharp/">website
</a>tells you that that it is an extension (Variation) of the C# language, so using the word invariant is
<i>incorrect</i>. Use the word invariant with Objects when programming Spec#.<br /><br />Furthermore, the Research Team utilise MSIL, so there is no reason that is unimplemantable in Visual Basic or other .NET aware language. If you or steveo_ are that curious install the Spec# VS2005 or 2008 versions from the website, and have a quick check to
 see whether you can write/use extension methods, automatic properties, partial methods anonymous types or object initialisers. That should satisfy your curiosity, although the 'meat and potatoes' is definitely with object invariants (.NET 2.0 and 3.0 both
 have objects - and nulls) so I would certainly deem this a curiosity, but wholly inconsequential to understanding Spec#.<br /><br /><p>posted by vesuvius</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476560360000000</link>
		<pubDate>Thu, 29 May 2008 11:07:16 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476560360000000</guid>
		<dc:creator>vesuvius</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">vesuvius wrote:</div>
<div class="quoteBody">&#65279;
<blockquote>
<table class="quoteTable">
<tbody>
<tr>
<td valign="top" width="10"><img src="/Themes/AlmostGlass/images/icon-quote.gif"></td>
<td class="txt3"><strong>aJanuary wrote:</strong>
<hr size="1">
<i>&#65279;&quot;Is this based on C# 3.0? or is this an invariation of C# 2.0?&quot;<br />From what I remember from other interviews it is based on C# 2.0.<br /><br />Another interesting interview (which I think is where I got the above from) can be found at <a href="http://www.hanselminutes.com/default.aspx?showID=128">http&#58;&#47;&#47;www.hanselminutes.com&#47;default.aspx&#63;showID&#61;128</a><br /></i></td>
</tr>
</tbody>
</table>
</blockquote>
<br /><br />I really don't see what the obsession with whether it's a .NET 2.0 or 3.0 invariant.<br /><br />A quick read of the Spec # <a href="http://research.microsoft.com/specsharp/">website
</a>tells you that that it is an extension (Variation) of the C# language, so using the word invariant is
<i>incorrect</i>. Use the word invariant with Objects when programming Spec#.<br /><br />Furthermore, the Research Team utilise MSIL, so there is no reason that is unimplemantable in Visual Basic or other .NET aware language. If you or steveo_ are that curious install the Spec# VS2005 or 2008 versions from the website, and have a quick check to
 see whether you can write/use extension methods, automatic properties, partial methods anonymous types or object initialisers. That should satisfy your curiosity, although the 'meat and potatoes' is definitely with object invariants (.NET 2.0 and 3.0 both
 have objects - and nulls) so I would certainly deem this a curiosity, but wholly inconsequential to understanding Spec#.<br /><br /></div>
</blockquote>
<br /><br />Pretty ironic post to say you summed up &quot;why ask a question when you can google it&quot; with an overzealous post.. its almost on the level of quoting someone with &quot;stop spamming&quot;...<br /><br />Believe it or not, people actually want to discuss and show interest.. not just watch then google the rest.. I wanted to post mainly to show that I appreciated their time to do the video, and to work on spec# in the first place..
<br /><br />And for the record, its pretty obvious why someone may ask, is this based on c# 2 or 3, since no point did it state this was an extension to c# in general, vs a sort of 'branch'..<p>posted by stevo_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476907530000000</link>
		<pubDate>Thu, 29 May 2008 20:45:53 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633476907530000000</guid>
		<dc:creator>stevo_</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">stevo_ wrote:</div>
<div class="quoteBody">&#65279;
<blockquote>
<table class="quoteTable">
<tbody>
<tr>
<td valign="top" width="10"><img src="/Themes/AlmostGlass/images/icon-quote.gif"></td>
<td class="txt3"><strong>vesuvius wrote:</strong>
<hr size="1">
<i>&#65279;
<blockquote>
<table class="quoteTable">
<tbody>
<tr>
<td valign="top" width="10"><img src="/Themes/AlmostGlass/images/icon-quote.gif"></td>
<td class="txt3"><strong>aJanuary wrote:</strong>
<hr size="1">
<i>&#65279;&quot;Is this based on C# 3.0? or is this an invariation of C# 2.0?&quot;<br />From what I remember from other interviews it is based on C# 2.0.<br /><br />Another interesting interview (which I think is where I got the above from) can be found at <a href="http://www.hanselminutes.com/default.aspx?showID=128">http&#58;&#47;&#47;www.hanselminutes.com&#47;default.aspx&#63;showID&#61;128</a><br /></i></td>
</tr>
</tbody>
</table>
</blockquote>
<br /><br />I really don't see what the obsession with whether it's a .NET 2.0 or 3.0 invariant.<br /><br />A quick read of the Spec # <a href="http://research.microsoft.com/specsharp/">website
</a>tells you that that it is an extension (Variation) of the C# language, so using the word invariant is
<i>incorrect</i>. Use the word invariant with Objects when programming Spec#.<br /><br />Furthermore, the Research Team utilise MSIL, so there is no reason that is unimplemantable in Visual Basic or other .NET aware language. If you or steveo_ are that curious install the Spec# VS2005 or 2008 versions from the website, and have a quick check to
 see whether you can write/use extension methods, automatic properties, partial methods anonymous types or object initialisers. That should satisfy your curiosity, although the 'meat and potatoes' is definitely with object invariants (.NET 2.0 and 3.0 both
 have objects - and nulls) so I would certainly deem this a curiosity, but wholly inconsequential to understanding Spec#.<br /><br /></i></td>
</tr>
</tbody>
</table>
</blockquote>
<br /><br />Pretty ironic post to say you summed up &quot;why ask a question when you can google it&quot; with an overzealous post.. its almost on the level of quoting someone with &quot;stop spamming&quot;...<br /><br />Believe it or not, people actually want to discuss and show interest.. not just watch then google the rest.. I wanted to post mainly to show that I appreciated their time to do the video, and to work on spec# in the first place..
<br /><br />And for the record, its pretty obvious why someone may ask, is this based on c# 2 or 3, since no point did it state this was an extension to c# in general, vs a sort of 'branch'..</div>
</blockquote>
<br />I did <i>not </i>Google it,&nbsp; I simply read what Charles posted. If you read that initial post, you will find that that's where I extrapolated my info. There is a very
<i>clear </i>link to the Spec# site with additional info posted by Charles.<br /><br />Other information was deduced from watching the video, and my post remains <i>correct</i>. Your clearly misunderstood the meaning and usage of the word invariant, and are &quot;barking up the wrong tree&quot; with regard to .NET 2.0 and .NET 3.0 as their are inconsequential.
<br /><br />How can you show appreciation for watching the video by going ahead and showing you misunderstood it? These are pretty smart guys, and I find it offensive you'd see it as important to ask such misconstructed information.<br /><br />Read Charles's initial post <i>properly</i>. Don't try save face posting ambiguous and poorly explained posts. I have made myself abundantly clear.<br /><p>posted by vesuvius</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633477269250000000</link>
		<pubDate>Fri, 30 May 2008 06:48:45 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633477269250000000</guid>
		<dc:creator>vesuvius</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">vesuvius wrote:</div>
<div class="quoteBody">&#65279;<br /><br />I did <i>not </i>Google it,&nbsp; I simply read what Charles posted. If you read that initial post, you will find that that's where I extrapolated my info. There is a very
<i>clear </i>link to the Spec# site with additional info posted by Charles.<br /><br />Other information was deduced from watching the video, and my post remains <i>correct</i>. Your clearly misunderstood the meaning and usage of the word invariant, and are &quot;barking up the wrong tree&quot; with regard to .NET 2.0 and .NET 3.0 as their are inconsequential.
<br /><br />How can you show appreciation for watching the video by going ahead and showing you misunderstood it? These are pretty smart guys, and I find it offensive you'd see it as important to ask such misconstructed information.<br /><br />Read Charles's initial post <i>properly</i>. Don't try save face posting ambiguous and poorly explained posts. I have made myself abundantly clear.<br /></div>
</blockquote>
<br /><br />I never said anything about .NET 2.0 or .NET 3.0... I was talking about C# 2.0 and C# 3.0.. I asked nothing about spec# and a version of .NET... I know spec# works against CIL specification, I however did want to know if spec# had all the language features
 of C# 3.0, or if it was features of C# 2.0...<br /><br />You do understand the difference there son?<br /><br />And your post just reiterates again &quot;Well I 'got' it, then you should of as well.&quot;, sorry- we're obviously not all as hyper-intelligence as you are..<br /><br />You don't come here and dictate what people can ask, so politely- you can get f--ked.. you weirdo.<p>posted by stevo_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633477329690000000</link>
		<pubDate>Fri, 30 May 2008 08:29:29 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633477329690000000</guid>
		<dc:creator>stevo_</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[Good show guys.&nbsp; The spec# team reminded me of the NASA guys in the 60s.&nbsp; Very retro.&nbsp; Nice tie Eric.&nbsp; Look forward to this in c# 4.0.<p>posted by staceyw</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633477450950000000</link>
		<pubDate>Fri, 30 May 2008 11:51:35 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633477450950000000</guid>
		<dc:creator>staceyw</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Contract Oriented Programming and Spec#</title>
		<description>
			<![CDATA[
<blockquote>
<div class="quoteAuthor">aJanuary wrote:</div>
<div class="quoteBody">&#65279;&quot;Is this based on C# 3.0? or is this an invariation of C# 2.0?&quot;<br />From what I remember from other interviews it is based on C# 2.0.<br /><br />Another interesting interview (which I think is where I got the above from) can be found at <a href="http://www.hanselminutes.com/default.aspx?showID=128">http&#58;&#47;&#47;www.hanselminutes.com&#47;default.aspx&#63;showID&#61;128</a><br /></div>
</blockquote>
<br /><br />In fact it says in that very interview (about 3 mins in) it's a superset of C# 2.0 and rather than a superset of C# 3.0. They also mention shortly after (and talk about it a little in the video )they are looking at a non-language specific solution.<br /><p>posted by aJanuary</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633478532650000000</link>
		<pubDate>Sat, 31 May 2008 17:54:25 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec#c633478532650000000</guid>
		<dc:creator>aJanuary</dc:creator>
	</item>
</channel>
</rss>