<?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>Channel 9 - Discussions by kaveh.shahbazian@gmail.com</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions/RSS"></atom:link>
	<image>
		<url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
		<title>Channel 9 - Discussions by kaveh.shahbazian@gmail.com</title>
		<link>http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions</link>
	</image>
	<description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
	<link>http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions</link>
	<language>en</language>
	<pubDate>Thu, 20 Jun 2013 02:25:00 GMT</pubDate>
	<lastBuildDate>Thu, 20 Jun 2013 02:25:00 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<c9:totalResults>0</c9:totalResults>
	<c9:pageCount>0</c9:pageCount>
	<c9:pageSize>0</c9:pageSize>
	<item>
		<title>Tech Off - Ideas for C# 5.0</title>
		<description><![CDATA[<p><blockquote><div class="quoteUser">exoteric said:</div><div class="quoteText">
<blockquote>
<div class="quoteUser">kaveh.shahbazian@gmail.com said:</div>
<div class="quoteText">*snip*</div>
</blockquote>
<p>Scala was designed from the ground up with an object-functional theory in mind; C# is evolving towards functional style (with LINQ in particular) but even if we want C# to evolve I don't see C# ever becomming as smooth as Scala in this regard; it simply
 wasn't designed from the outset with this philosophy in mind.</p>
<p>&nbsp;</p>
<p>On the other hand it's probably not completely unreasonable to say that Microsoft wanted the equivalent of Java, fixing its inherent mistakes and improving it in various ways and then grew the idea further into an infrastructure for &quot;poly-linguistic execution&quot;
 although essentially founded on C# semantics (feel free to correct me.)</p>
<p>&nbsp;</p>
<p>This &quot;Parameter-Level Interface Implementation&quot; sounds to me like structural typing. That is indeed very desirable in some cases although you can emulate it with C# 4.0 dynamics - but I imagine loosing a lot of efficiency along the way.</p>
<p>&nbsp;</p>
<p>It would probably be more desirable to have a higher-kinded type system a la Haskell (higher-order generics or higher-order parametric polymorphism?)</p>
<p>&nbsp;</p>
<p><a href="http://en.wikipedia.org/wiki/Type_polymorphism">http://en.wikipedia.org/wiki/Type_polymorphism</a></p>
<p>&nbsp;</p>
<p>There has been some rumours that Microsoft is working on one more language. I believe Joe Duffy has been involved in this and maybe Erik Meijer as well. It's probably going to be pretty hard to beat Scala in generality and elegance but I remember a video
 with Joe Duffy and Erik Meijer discussing Linear Type Systems as a means to control effects within a concurrent world - or something to that effect. Maybe we can get an update some time on the current thinking within the company of what features are being
 thought of next.</p>
<p>&nbsp;</p>
<p>And of course we still have C# 5.0 on the horizon (and C# 4.0 is still not quite out of its eggshell yet.) I'm surprised you are disappointed at the C# roadmap because I haven't seen any roadmap so maybe you can point me to it - please!</p>
<p>&nbsp;</p>
<p>Still, functional programming has arrived in C# and its best realized in LINQ which is still evolving, at least on the library level. Rx is the latest and greatest example. So its power and impact is still unfolding.</p>
<p>&nbsp;</p>
<p><img src="http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif" alt="Smiley"></p>
</div></blockquote>
<p>@exoteric &nbsp;<br>
Thanks for your time and your informative and precise reply.<br>
<br>
i.<br>
First on my disappointment about C# roadmap: I always look into ways not only to separate subsystems; but also abstracting bunch of aspects among all layers. First tool I like it here is syntactic extension mechanism and meta-programming and the second one
 - which I enjoy it's presence at XAML (especially WPF) - is a neat and clean (I am not sure if this name is descriptive enough) &quot;aspect oriented&quot; programming model. In XAML you can think of providers, services that are presented through providers, (I did not
 see this anywhere else, so maybe I am wrong) a very well tailored and tailor-able implementation of prototype-based OO model, templating every “thing/aspect” even up to the sky, binding/plumbing/validating state and much more; and why I think it should be
 more than handy in a programming language? An example could be a common task: Logging! A huge noise scattered all around our code just to serve at different conceptual level (can you turn it off and on easily, safely, or remove it easily?)! After these long
 years no one stood up to tackle this and see this problem at language level (for sure there a Lisper out there who does not share my point of view). This is my first of first (!) and very valuable (conceptually at least) to me: C# as an abstraction layer &quot;on
 .NET&quot;; C# as a XSLT for aspects &quot;into .NET&quot; (90:00':00&quot;). I thought .NET team and C# team bring us more of it (and if anybody listens hear: we need more in-depth essays of WPF and the &quot;reason/philosophy&quot; behind each bit of it to learn it more deeply).<br>
Second (to be honest this second still has more deeply affected me than that first; maybe because it happens recently) reason of my disappointment is Scala. I melted down when I saw it: How is this possible? Even possible? I though these are elegant dreams!
 They should not exist in the real world! The second reason was: I &quot;believed&quot; something like Scala is &quot;impossible&quot;! Of-course your description of Scala way and &quot;logical/rational&quot; (political?) decisions about C#; are complete. Yet Scala provides a neat and clean
 statically typed meta-programming and even syntax manipulating environment.<br>
<br>
Again XAML is a source of well landed ideas! I like it! (OK, OK!)<br>
<br>
ii.<br>
A long time ago I thought about this &quot;Parameter-Level Interface Implementation&quot; thing in a different way. It was like some sort of &quot;something mimics something&quot; one-liner. Exactly as you mentioned, this idea changed in my mind when I was playing with C# 4.0
 dynamic to this &quot;Parameter-Level Interface Implementation&quot;. It's cool (and maybe exceptionally really immediately useful!).<br>
<br>
iii.<br>
I have played a little with Haskell and have a (maybe not so exact) clue of higher-kinded type-system; yet I think that's hard to achieve in C# semantics. But at interface level we can do more compiler tricks easily (correct me please if I am wrong).<br>
<br>
iv.<br>
It would be very nice to have some sources about that language you have spoke of. Thanks<br>
<br>
v.<br>
I have not looked into Rx so maybe I am wrong but it seems Rx should co-exists with some immutability facilities (like even an attribute, bundled with a compiler trick) in the language itself. Without that many problems (troubles) will still continue to exist
 in our code (is it possible for us to have uniqueness typing in C# or even in .NET?). And what about continuations? Does Rx provide a facility to use that seamlessly in our code? I have read some essays (maybe) which described that a language with exceptions
 can provide a richer model for dispatching that languages with continuations (in simple that idea is using different exceptions to reach different places in code - as I remember). So theorically we have a good bit of it. But do we have it built-in (not blotted-on)
 the language?<br>
<br>
Regards</p></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/499699-Suggestions-for-C-50/a6db3575887f4214bc969deb00098ce4#a6db3575887f4214bc969deb00098ce4</link>
		<pubDate>Wed, 27 Jan 2010 22:53:36 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/499699-Suggestions-for-C-50/a6db3575887f4214bc969deb00098ce4#a6db3575887f4214bc969deb00098ce4</guid>
		<dc:creator>kaveh.shahbazian@gmail.com</dc:creator>
		<slash:comments>131</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Ideas for C# 5.0</title>
		<description><![CDATA[<p>I would like many features of Scala could be incorporated into C#. As that does not going to happen, I have my reduced wish list (with forgotten items, since I'm now somwhow dissapointed with C# road map - that's me).</p>
<p>&nbsp;</p>
<p>1 - Parameter-Level Interface Implementation; For example:</p>
<p></p>
<pre class="brush: csharp">class Person
{
    public string Name { get; set; }
    public int Age { get; }
}
interface IPersonata
{
    string Name { get; }
    int Age { get; }
}
class SomeTasks
{
    // ...
    void Function(static IPersonata p) { /* ... */ }
    // ...
    void AnotherFunction(Person p)
    {
        // ...
        Function(p);
        // ...
    }
}</pre>
<p></p>
<p>Should work; since Person satisfies IPersonata &quot;statically&quot;. This is something like Google Go languages does. If we use dynamic instead of static; then it should generate necessary parts at runtime.</p>
<p>&nbsp;</p>
<p>2 - Mixins (like Scala's Mixins); which in turn could lead to some statically typed meta-programming (well; It &quot;could&quot;; yet I am not sure how viable are these things in C#'s type system *).</p>
<p>&nbsp;</p>
<p>3 - Templating generics themselves; at least as type parameters, in interfaces:</p>
<p></p>
<pre class="brush: csharp">interface ITemplateBuilder&lt;T&gt;&lt;a&gt;
{
     T&lt;a&gt; CreateInstance(a arg);
}</pre>
<p></p>
<p>&nbsp;</p>
<p>4 - Stronger type inferance (*).</p>
<p>&nbsp;</p>
<p>5 - XAML everywhere! Yes! XAML could be a perfect replacement for macros in C#; and it's legal even for macro-hater C# folks (and some designers which I have not their eagle-eye view for sure; yet I like statically syntatic extension tools)! XAML provides
 a proper blending of aspects, services and data manipulation facilities.</p>
<p>&nbsp;</p>
<p>I have successfully implemented a kd tree (in fact a 2d tree!) for solving a GIS nearest neighbor finding algorithm and enjoyed it a lot; and it is really performant.</p>
<p>&nbsp;</p>
<p>But; the point that language designers should have in calculation more and more (as our problems get more complex and need quicker reactions):</p>
<p>&nbsp;</p>
<p>A programming language for sure consums time to bend the programmer's mind to it's concept. At one point this &quot;bending time&quot; will be costy enough for being abandoned by industry.</p>
<p>&nbsp;</p>
<p>One good job that Microsoft did; is releasing F#. Because if they intend to keep C# the way it is; they should leverage abstraction levels as new languages. F# is a wonderful language; yet a Scala blend (Maybe G# since G has one more angle than C!) could
 help more; since this &quot;syntax&quot; thing - and { } - really matters.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/499699-Suggestions-for-C-50/a59bef42cdc74fd1beb69deb00098c74#a59bef42cdc74fd1beb69deb00098c74</link>
		<pubDate>Wed, 27 Jan 2010 14:53:15 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/499699-Suggestions-for-C-50/a59bef42cdc74fd1beb69deb00098c74#a59bef42cdc74fd1beb69deb00098c74</guid>
		<dc:creator>kaveh.shahbazian@gmail.com</dc:creator>
		<slash:comments>131</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Coffeehouse - What is your prediction for .NET framework 4.0?</title>
		<description><![CDATA[<p>Hi there and thanks to the team!<br>
<br>
If &quot;What features would you like to see the C# team add?&quot; is really mean what it is saying then this is my wish list:<br>
(I have implemented some of these in a library named Foop at <a href="https://sourceforge.net/projects/foop/">https&#58;&#47;&#47;sourceforge.net&#47;projects&#47;foop&#47;</a> but without metaprogramming facilities or syntax extensions they are pretty ugly!)<br>
<br>
1 - Define new operators; i.e. an operator named &amp;&amp;&amp;.<br>
2 - Define Generic operators; currently we can just overload the existing operators and if the operands are going to be Generic, they can only be of type of one of the Type Parameters of the container class.<br>
3 - The pipe operator (|) as in F#; which can be there if we have feature number 2.<br>
4 - Tuples; I have implemented some tuple data structures; but without compiler support, it needs to be implemented for any number of them!<br>
5 - Better type inference; For example for lambdas I wrote a static method 'infer' for that I be able to define Extension Methods on delegates or use them in Anonymous Types:<br>
new<br>
{<br>
&nbsp;&nbsp;&nbsp; Target = &quot;XPC 10&quot;,<br>
&nbsp;&nbsp;&nbsp; Vel = ExSyntax.infer ((int a) =&gt;<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return a * 22.8;<br>
&nbsp;&nbsp;&nbsp; })<br>
};<br>
or<br>
ExSyntax.infer (() =&gt;<br>
{<br>
&nbsp;&nbsp;&nbsp; return DateTime.Now.Second &gt; 10;<br>
}).do_while_true (() =&gt;<br>
{<br>
&nbsp;&nbsp;&nbsp; Console.WriteLine (&quot;Updating Report...&quot;);<br>
});<br>
6 - Anonymous Types everywhere; which in fact is &quot;good Type Inference&quot; every where. I think as the members of Anonymous Types are the static members of the container class; so we can apply synchronization and security facilities easily (I know you are the best
 and you are doing your best; so the &quot;I think&quot; part is just about the point of view from where that I am).<br>
7 - Dynamic proxies; we can emit runtime types and cache them: declaring a new class that implements the target interface and has members of another type which is going to be have the interface (ducked!).<br>
8 - Generic Generic Types; So I can define a typed linked list like this:<br>
TyLList&lt;A&gt; {<br>
&nbsp;&nbsp;&nbsp; public A Value;<br>
&nbsp;&nbsp;&nbsp; public TyLList&lt;?&gt; Next;<br>
}<br>
9 - Named parameter calling for functions; for void F(int a, string b) calling it like F(b = &quot;OK&quot;, a = 10)<br>
10 - Default values for parameters<br>
11 - Calling function with an Anonymous Type with members which are named after function arguments:<br>
For void F(int a, string b) calling F like F(new { b=&quot;OK&quot;, a=100});<br>
(We already have 9, 10 and 11 for attributes!)<br>
12 - Metaprogramming; (not IL weaving) which already have proof of concept projects like F# (Active Patterns and Typed Quoting ...)<br>
13 - An even very simple form of syntax extending; with 12 we will have enough of this<br>
14 - A #light syntax for C#; as we have in F#, which can be some form of indentation-based code layout (like in F#) with possibility yet to enclose code blocks in {}s.<br>
15 - Tagging types; which will provides us Class Cases, I have implemented for example Either&lt;A,B&gt;, some people implement this by declaring additional types like Left&lt;A&gt; and Right&lt;B&gt;; that is wrong! GADT are distingushed from the way that the object is constructed
 and the cases of the class in fact are different constructors which tag the object with different tags.<br>
16 - 'this' refers to the current object; If there be somthing like this_type it is hand full (GetType is a runtime thing but this_type i.e. can be passed to Generics)<br>
17 - Passing lambdas to attributes as parameter<br>
18 - Defining Execution Contracts; like 'Ensure' and 'Requies' and with 14, even a new step in compiling a method or something.<br>
19 - Capturing the values in the current execution context as a Name-Value dictionary; we have already the clousures and with 6, this would be very easy (this will provide us continuations).<br>
20 - An attribute like [AloneExecutionPath] for methods; which grants that the methos just have access to it's parameters, and have not access to any public or internal thing in any assembly written by user (we can use .NET class library(is this good?) and
 to the Anonymous Types defined inside the function and we can pass objects of those types)<br>
22 - Curry is necessary;<br>
21 - OK! OK! ...<br>
I was just looking into my codes and comming back here and write things! I close Visual Studio for now!<br>
Maybe this is another language! <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> Yet I do not think so!<br>
<br>
Thanks all!</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Coffeehouse/251504-What-is-your-prediction-for-NET-framework-40/25df4d14d50147079df09dec004c13ab#25df4d14d50147079df09dec004c13ab</link>
		<pubDate>Fri, 11 Jul 2008 12:15:08 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Coffeehouse/251504-What-is-your-prediction-for-NET-framework-40/25df4d14d50147079df09dec004c13ab#25df4d14d50147079df09dec004c13ab</guid>
		<dc:creator>kaveh.shahbazian@gmail.com</dc:creator>
		<slash:comments>60</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Ruby on Rails vs. ASP.NET Deathmatch!!!</title>
		<description><![CDATA[<p>From 2002 untill now C#/ASP.NET 1.1 and 2.0; windows application, compact .NET, web-services, SQL server and before 2002 VC&#43;&#43;/MFC and ... I'v done.<br>
So I know &quot;microsoft&quot; enough to speak about it.<br>
Day by day something was comming close to me and at last I realized it. I am not programming; I am microsofting. I am doing stupid things just because microsoft does not want loose titely coupling between it's products.<br>
I am a part of microsoft machine.<br>
In less than 1 year I will no longer have anything microsoftish on my computer. I have strongly started that.<br>
.NET seems good? Still to me? Yes! but my experiences with MS says to me that's just a new, huge, well managed kind of faking things.<br>
If anyone wants going microsoftish - and there are enough - I do not care anymore.<br>
No one likes to be used! Me too!<br></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/165618-Ruby-on-Rails-vs-ASPNET-Deathmatch/dc473f02d0f7440f8b8e9dea0138d7b9#dc473f02d0f7440f8b8e9dea0138d7b9</link>
		<pubDate>Wed, 24 Jan 2007 07:24:36 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/165618-Ruby-on-Rails-vs-ASPNET-Deathmatch/dc473f02d0f7440f8b8e9dea0138d7b9#dc473f02d0f7440f8b8e9dea0138d7b9</guid>
		<dc:creator>kaveh.shahbazian@gmail.com</dc:creator>
		<slash:comments>39</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Coffeehouse - C# to Java ...</title>
		<description><![CDATA[<p>I am a C# developer since early beta 1 / 2001. Before that I was using C&#43;&#43;/VS/MFC and sort of thing related to them. I have developed many small to medume and 1 big project by C# and ASP.NET. Some times ago for a little project I started Java 5.<br>
Let I make It short. There I encountered the real technology feel! There I found out that the microsoft developing model makes me a product oriented developer. There I found out what does the clean design means and how a practical pattern fit in a specific
 solution.<br>
Microsoft surly does a great thing with .Net but from that time till now I am thinking and remembering and evaluating.<br>
Please contact me and tell about your new experiences.<br></p>]]></description>
		<link>http://channel9.msdn.com/Forums/Coffeehouse/123545-C-to-Java-/21847e81663f470d98c69deb00fa1ee1#21847e81663f470d98c69deb00fa1ee1</link>
		<pubDate>Sun, 06 Nov 2005 11:34:38 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Coffeehouse/123545-C-to-Java-/21847e81663f470d98c69deb00fa1ee1#21847e81663f470d98c69deb00fa1ee1</guid>
		<dc:creator>kaveh.shahbazian@gmail.com</dc:creator>
		<slash:comments>18</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/kaveh.shahbazian@gmail.com/Discussions/RSS</wfw:commentRss>
	</item>
</channel>
</rss>