<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" media="screen" href="/App_Themes/default/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:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Comment Feed for Expert to Expert - Joe Duffy: Perspectives on Concurrent Programming and Parallelism (Going Deep on Channel 9)</title><atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/shows/going+deep/joe-duffy-perspectives-on-concurrent-programming-and-parallelism/rss/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Comment Feed for Expert to Expert - Joe Duffy: Perspectives on Concurrent Programming and Parallelism (Going Deep on Channel 9)</title><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/</link></image><description>Expert to Expert - Joe Duffy: Perspectives on Concurrent Programming and Parallelism</description><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/</link><language>en-us</language><pubDate>Mon, 23 Feb 2009 18:42:07 GMT</pubDate><lastBuildDate>Mon, 23 Feb 2009 18:42:07 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3608.3122, Culture=neutral, PublicKeyToken=null)</generator><item><title>Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>&lt;STRONG&gt;RE: “CIL *is* a representation of whatever you wrote but the translation is one way and the higher level information is lost”&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;I’m not entirely convinced that the metadata relating to the high level thinking/interpretation is even required to solve this kind of problem? (i.e. mapping serial/sequential code to an equivalent and more parallelized version). In some packages such as Simulink (Mathworks) and BlockBuilder for Simulink (Maplesoft) the model of the algorithm/application is analysed and algebraically simplified into a form that is far more efficient, but equivalent. As, at the low level, the entire application can ultimately be described as a system of equations, why would this abstract principle even require metadata to reform the solution? Only the basic procedural/functional subsets/partitions need be maintained.&lt;BR&gt;&lt;BR&gt;In your example of a string of characters, even this can be considered a single value as is commonly used in databases and cryptography (see gmp mp bignum library applications for references). So on the base, all of this can simply be considered one large algebraic problem? Or do you disagree?</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458525</link><pubDate>Mon, 23 Feb 2009 18:42:07 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458525</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458525/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>RE: “CIL *is* a representation of whatever you wrote but the translation is one way and the higher level information is lost”I’m not entirely convinced that the metadata relating to the high level thinking/interpretation is even required to solve this kind of problem? (i.e. mapping serial/sequential&amp;#8230;</evnet:previewtext><dc:creator>Benjamin Tomkins</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458525/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Have you really tried "tasting" the syntax (ie worked with it for a couple of weeks)? If not, how can you know you do not like it? ;-)&lt;BR&gt;&lt;BR&gt;Even though there are religious wars about syntax, I guess most people would adapt pretty easily to another syntax if they really were convinced there was a&amp;nbsp;substantial&amp;nbsp;benefit in using another language. &lt;BR&gt;If our brains didn't adapt easily to weird syntaxes, we wouldn't have seen all those C-inspired&amp;nbsp;syntaxes and&amp;nbsp;Perl would have remained a sick fantasy inside only one man's brain. :)&lt;BR&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458515</link><pubDate>Mon, 23 Feb 2009 16:49:06 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458515</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458515/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Have you really tried "tasting" the syntax (ie worked with it for a couple of weeks)? If not, how can you know you do not like it? ;-)Even though there are religious wars about syntax, I guess most people would adapt pretty easily to another syntax if they really were convinced there was&amp;#8230;</evnet:previewtext><dc:creator>Jarle Stabell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458515/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>&lt;P&gt;sounds great charels :) &lt;BR&gt;as ive said before (though in a far less eloquent manner than you) i truly belive that the &lt;EM&gt;concepts&lt;/EM&gt;, the &lt;EM&gt;thinking&lt;/EM&gt;, is where its at. &lt;BR&gt;&lt;BR&gt;learning language x is in a sense a byproduct of learning the concepts behind x imo.. in a way the language is a means to express the concepts.&lt;BR&gt;&amp;nbsp;you can in some cases learn the language without grasping the concepts, but that makes you a lousy programmer :)&lt;BR&gt;&lt;BR&gt;looking forward to that anders video and more conceptual goodness :)&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458436</link><pubDate>Mon, 23 Feb 2009 00:19:02 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458436</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458436/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>sounds great charels :) as ive said before (though in a far less eloquent manner than you) i truly belive that the concepts, the thinking, is where its at. learning language x is in a sense a byproduct of learning the concepts behind x imo.. in a way the language is a means to express the&amp;#8230;</evnet:previewtext><dc:creator>Allan Lindqvist</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458436/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>&amp;nbsp;"It's as if the name activates a blocking system in the brain."&amp;nbsp;&lt;BR&gt;&lt;BR&gt;If an executing conceptual framework inside the brain&amp;nbsp;is not able to&amp;nbsp;understand certain&amp;nbsp;incoming information, then it shouldn't block.&amp;nbsp;:)&lt;BR&gt;&lt;BR&gt;The message is&amp;nbsp;simply&amp;nbsp;ignored, asynchronously or sequentially (it doesn't really matter; not in terms of understanding a foreign concept), as&amp;nbsp;expected;&amp;nbsp;the reaction is&amp;nbsp;&lt;EM&gt;involuntary&lt;/EM&gt;, initially. Therefore, the ability for blocking to occur is there, but not highly probable(this is a human brain, after all).&lt;BR&gt;&lt;BR&gt;As the language is learned so to is the understanding it realizes, sure. But nothing stops you from investigating a foreign&amp;nbsp;concept &lt;EM&gt;directly&lt;/EM&gt;, bypassing the requirement of mastering any of its associated higher level and formalized expressive abstractions (languages). In fact, this should be the default learning pattern: &lt;EM&gt;understand the concepts first&lt;/EM&gt; (or concurrently, if you can), then language-level expression becomes an exercise in mastering language-specific patterns and&amp;nbsp;syntax. In this sense, a programming language&amp;nbsp;is really just a thin wrapper around a core &lt;EM&gt;conceptual&lt;/EM&gt; framework.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;It's rather hard to interpret or express that which you don't understand. &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;Hypothesis&lt;/STRONG&gt;: You can &lt;EM&gt;think&lt;/EM&gt; functionally and&amp;nbsp;formally express side effects in a composable manner without programming in a functional language.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;The&amp;nbsp;expression of parallel intentions, for example,&amp;nbsp;can be achieved in an imperative way, &lt;EM&gt;implicitly: &lt;/EM&gt;the functional-ness is abstracted away by the tooling, e.g., Parallel Extensions for .NET, LINQ, Lamdas, TPL, CCR&amp;nbsp;&lt;EM&gt;and&lt;/EM&gt; the runtime (CLR) or in a functional way, &lt;EM&gt;explicitly&lt;/EM&gt; (F#, Haskell, etc). In the latter case there is no indirection overhead, but if you've mastered an imperative toolset, then you should still be able to exploit functional concepts successfully in both a composable and side effectual way in the langauge you already&amp;nbsp;"speak" fluently. &lt;BR&gt;&lt;BR&gt;This is &lt;EM&gt;exactly&lt;/EM&gt; what Anders, Joe,&amp;nbsp;et al are thinking with respect to C# evolution and the various parallel&amp;nbsp;.NET libraries in production and incubation.&amp;nbsp;&lt;BR&gt;&lt;BR&gt;I think Erik and I are going to pay a visit to Anders soon. Indeed, we'll dig into the thinking behind this&amp;nbsp;thinking&amp;nbsp;as part of a future episode of Expert to Expert. Sound good?&lt;BR&gt;&lt;BR&gt;Keep on posting,&lt;BR&gt;C</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458411</link><pubDate>Sun, 22 Feb 2009 21:09:24 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458411</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458411/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>&amp;nbsp;"It's as if the name activates a blocking system in the brain."&amp;nbsp;If an executing conceptual framework inside the brain&amp;nbsp;is not able to&amp;nbsp;understand certain&amp;nbsp;incoming information, then it shouldn't block.&amp;nbsp;:)The message is&amp;nbsp;simply&amp;nbsp;ignored, asynchronously or&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458411/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>&lt;P&gt;Specifically, I don't like the " &amp;lt;- ". I don't like loosing the "dot". I don't like lack of explicit statement terminator.&lt;/P&gt;
&lt;P&gt;But this is all subjective. Some people love the Mona Lisa, other people see a dude with a wig on.&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458347</link><pubDate>Sun, 22 Feb 2009 00:16:38 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458347</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458347/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Specifically, I don't like the " &amp;lt;- ". I don't like loosing the "dot". I don't like lack of explicit statement terminator.
But this is all subjective. Some people love the Mona Lisa, other people see a dude with a wig on.</evnet:previewtext><dc:creator>William Stacey</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458347/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>&lt;P&gt;all im saying is that c# and .net is more general purpose given whats available today. and really, thats all that counts. if may be possible to write xbox games in haskell but as you say, it (along with alot of other things) its not supported. and if its not supported at least to some extent, it might as well be impossible im most buisness scenarios. &lt;BR&gt;&lt;BR&gt;we differ in what we mean by general purpose. the examples you give, compileing to native and writing hardware are general purpose in a very formal way, but they are very specific applications and not sovething that you do very often as a regular programmer. what i mean is, given all programers, very few do what you describe.. you see, most programmers dont care if its the "language" or if its "api". if its possible with an api, its possible with the language. i know thats not formally correct, but thats the way people reason..&lt;BR&gt;in that regard, haskell is less general purpose as it has a smaller api. it does have the potential to be more general purpose, but in practice it isnt.&lt;BR&gt;&lt;BR&gt;you are right though. i dont know much about haskell. im sorry if you feel ive been putting word in your mouth, that was not my intent. &lt;BR&gt;&lt;BR&gt;one thing you dont seem to realize however is that just because someone cant (or has the time) to prove to you that something is difficult, that doesnt mean it isnt difficult.&amp;nbsp;no i dont care enough about winning a discussion at a forum to create a whole app proving some point about c# or haskell. but that doesnt mean that i or stacy or charels are lieing when we say we feel something is unintuative.&lt;BR&gt;thats how we feel, theres nothing you can do about that :)&lt;BR&gt;&lt;BR&gt;also, where are these awsome 3dshooters and webapps written in haskell? love to see some links :) &lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458336</link><pubDate>Sat, 21 Feb 2009 19:31:42 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458336</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458336/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>all im saying is that c# and .net is more general purpose given whats available today. and really, thats all that counts. if may be possible to write xbox games in haskell but as you say, it (along with alot of other things) its not supported. and if its not supported at least to some extent, it&amp;#8230;</evnet:previewtext><dc:creator>Allan Lindqvist</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458336/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>thats exactly the point im trying to make (all though i might not be so good at it)&lt;BR&gt;diffrent tools are good for diffrent things, c# id good at alot of thing while say, haskell is really great for parallelization :)&lt;BR&gt;&lt;BR&gt;another point you make that ive also tried to put forth is that the functional &lt;STRONG&gt;thinking&lt;/STRONG&gt; is the real gold and that it can be applied across alsmost all languages, purely functional or not</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458330</link><pubDate>Sat, 21 Feb 2009 19:08:34 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458330</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458330/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>thats exactly the point im trying to make (all though i might not be so good at it)diffrent tools are good for diffrent things, c# id good at alot of thing while say, haskell is really great for parallelization :)another point you make that ive also tried to put forth is that the functional thinking&amp;#8230;</evnet:previewtext><dc:creator>Allan Lindqvist</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458330/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>&lt;P&gt;This is why the functional programming model is so appealing from a parallelization&amp;nbsp;point of view: the higher level meaning is &lt;EM&gt;not&lt;/EM&gt; lost, but in plain site and reliably computable (surprise-free, with controlled(controllable) side effects). Determining how to split up code to run in parallel, for example,&amp;nbsp;is explicitly expressed in the higher level thinking (expressed in code), therefore&amp;nbsp;it can be accurately interpreted and recomposed in the compilation process. &lt;BR&gt;&lt;BR&gt;C&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458302</link><pubDate>Sat, 21 Feb 2009 04:07:36 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458302</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458302/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>This is why the functional programming model is so appealing from a parallelization&amp;nbsp;point of view: the higher level meaning is not lost, but in plain site and reliably computable (surprise-free, with controlled(controllable) side effects). Determining how to split up code to run in parallel,&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458302/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>The simple answer is that when you get down to the CIL a lot of the context has been lost. It is true, of course, that the CIL *is* a representation of whatever you wrote but the translation is one way and the higher level information is lost. For example, this post could be read one letter at a time but without assembling the letters into words the content will be lost.&amp;nbsp; It may be possible to get some speedup by examining the CIL, CPUs do that right now on the 'real' machine code by doing out-of-order and speculative execution.&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458197</link><pubDate>Fri, 20 Feb 2009 16:51:37 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458197</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458197/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>The simple answer is that when you get down to the CIL a lot of the context has been lost. It is true, of course, that the CIL *is* a representation of whatever you wrote but the translation is one way and the higher level information is lost. For example, this post could be read one letter at a&amp;#8230;</evnet:previewtext><dc:creator>silverfrost</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458197/Trackback.aspx</trackback:ping></item><item><title>Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>The one question:&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; " If all .net languages eventually compile down to CIL, then why not just focus on analysing the CIL code for parallel optimisations and then literally restructure the code on that common level? (rather than finding a common model for all high level paradigms) "</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458175</link><pubDate>Fri, 20 Feb 2009 14:40:23 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458175</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458175/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>The one question:&amp;nbsp;&amp;nbsp;&amp;nbsp; " If all .net languages eventually compile down to CIL, then why not just focus on analysing the CIL code for parallel optimisations and then literally restructure the code on that common level? (rather than finding a common model for all high level paradigms) "</evnet:previewtext><dc:creator>Benjamin Tomkins</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458175/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Could explain &lt;i&gt;specifically &lt;/i&gt;what about that snippet makes it hard to "think" about it? You're just saying kinda vaguely that you can't find yourself "thinking" in it, but I don't understand what specifically is posing a barrier to &amp;nbsp;you.&lt;div&gt;The way I see it that snippet is, barring syntax, pretty much identical to what you would write in any imperative language to do GUIs. I could accept that you find it harder to use a certain style of programming, e.g. functional vs imperative, but you chose an entirely imperative snippet of Haskell! I don't even see the difference between this and C# other than the extremely superficial (different syntax).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;You create objects imperatively.&lt;/div&gt;&lt;div&gt;You set properties (e.g. text) and event handlers (e.g. on command) on those objects.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;How is this a different way to think about things than C#? I just don't understand what specifically you have an issue with.&lt;/div&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458153</link><pubDate>Fri, 20 Feb 2009 08:21:28 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458153</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458153/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Could explain specifically what about that snippet makes it hard to "think" about it? You're just saying kinda vaguely that you can't find yourself "thinking" in it, but I don't understand what specifically is posing a barrier to &amp;nbsp;you.The way I see it that snippet is, barring syntax, pretty&amp;#8230;</evnet:previewtext><dc:creator>sylvan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458153/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>I was careful not to say "ever".&amp;nbsp; I just don't find myself "thinking" in it any time soon. &amp;nbsp; I am not defending c#, nor am I dissing haskell.&amp;nbsp; However, I have seen many times people say they can "think" in c# and it just rolls off the brain.&amp;nbsp; I am in that crowd.&amp;nbsp; I&amp;nbsp;could think in c# after a couple days.&amp;nbsp; This can not be down played as this ability (IMO) makes a language useable and popular more then anything else.&amp;nbsp; If it is not approachable right away, it tends to favor a limited crowd - for right or wrong.&amp;nbsp; I don't believe in absolutes or language realigions as I have used too many of them and seen them come and go (I admit I loved Cobol and RPG back in the day).&amp;nbsp;&amp;nbsp;They have to be&amp;nbsp;very natural and readable.&amp;nbsp; &amp;nbsp;I would rather see more lines for clear intent, then a terse alternative&amp;nbsp;any day.&amp;nbsp; The "dot" in .Net is also lost here from what I can see, and that would be a big deal.&lt;BR&gt;&lt;BR&gt;There is also an&amp;nbsp;issue which you pointed out.&amp;nbsp; All these 3rd party libriaries with limited or no support that come and go.&amp;nbsp; That was same reason I finally left my beloved Perl.&amp;nbsp; It turns into a treasure hunt all the time looking for and downloading libraries and extentions and patches and version mismatches, etc.&amp;nbsp; That part could be fixed&amp;nbsp;if MS made&amp;nbsp;it a .net language however.&amp;nbsp; I say, use what you like to write in.&amp;nbsp; The syntax question however is OT to the larger issue of the right Model for concurrency.&amp;nbsp; I think the truth lies somewhere between Erlang, CCR, Linq, and Agents (not Agent Smith) as I think Joe was leading to.&lt;BR&gt;&lt;BR&gt;BTW.&amp;nbsp; Anyone *here actually write a non-trivial Windows application written in Haskell and have a URL to sample?&amp;nbsp;&amp;nbsp;Would be interested in looking at it.&amp;nbsp;&amp;nbsp;How about&amp;nbsp;Eric?</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458137</link><pubDate>Fri, 20 Feb 2009 01:35:08 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458137</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458137/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I was careful not to say "ever".&amp;nbsp; I just don't find myself "thinking" in it any time soon. &amp;nbsp; I am not defending c#, nor am I dissing haskell.&amp;nbsp; However, I have seen many times people say they can "think" in c# and it just rolls off the brain.&amp;nbsp; I am in that crowd.&amp;nbsp;&amp;#8230;</evnet:previewtext><dc:creator>William Stacey</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458137/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Uh, I don't see what's so bad about that? This is pretty much what you'd write in any language. Is it just that the syntax is unfamiliar? That's a fairly shallow reason to dismiss something forever.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I really don't see how that sample is in any way more complicated than the equivalent C# code. You create a bunch of widgets, and set event handlers (specified inline here, but they could obviously be named and declared separately if they were larger), what's the problem, surely this is very familiar if you've used any imperative GUI toolkit?&amp;nbsp;&lt;/div&gt;&lt;div&gt;Honestly I thought you were being sarcastic at first, poking fun at Charles by taking something that's very similar to standard imperative programming to illustrate how simple it is, but the rest of the post indicates you're not.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;And yes, Haskell is statically typed (that's sort of the point), so auto-completion works fine. There is a mode for Haskell in visual studio, but sadly it's not maintained anymore...&lt;/div&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458130</link><pubDate>Thu, 19 Feb 2009 23:53:02 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458130</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458130/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Uh, I don't see what's so bad about that? This is pretty much what you'd write in any language. Is it just that the syntax is unfamiliar? That's a fairly shallow reason to dismiss something forever.I really don't see how that sample is in any way more complicated than the equivalent C# code. You&amp;#8230;</evnet:previewtext><dc:creator>sylvan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458130/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>I agree with that Charles.&amp;nbsp; Take this Haskell/GUI sample from wikipedia:&lt;BR&gt;gui :: IO ()&lt;BR&gt;gui = do&lt;BR&gt;&amp;nbsp; f &amp;lt;- frame [ text := "Event Handling" ]&lt;BR&gt;&amp;nbsp; st &amp;lt;- staticText f [ text := "You haven\'t clicked the button yet." ]&lt;BR&gt;&amp;nbsp; b &amp;lt;- button f [ text := "Click me!"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , on command := set st [ text := "You have clicked the button!" ]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;BR&gt;&amp;nbsp; set f [ layout := column 25 [ widget st, widget b ] ]&lt;BR&gt;&lt;BR&gt;Ooo my...I don't see myself ever being comfortable mentally with that&amp;nbsp;and being able to write (or read) my windows apps that way.&amp;nbsp; Not saying it will never happen, but I just don't feel it (and I am&amp;nbsp;pretty open minded).&amp;nbsp; Moreover, would Intellisense be able to work with this?&lt;BR&gt;&lt;BR&gt;I am interested to hear more thoughts on linear types and more thoughts on types that could have attributes to dictate concurrency behaviors and useage rights (i.e. read only, read/write, reads for these callers, etc.) with compiler enforcement.&lt;BR&gt;&lt;BR&gt;I have to watch this show again.&amp;nbsp; Good show guys.&lt;BR&gt;&lt;BR&gt;A random&amp;nbsp;related side:&amp;nbsp; My 4-way 2.66GHz HP is noticiably slower then my 2-way 3GHz HP in the Vista&amp;nbsp;look and feel category.&amp;nbsp; I know there is many factors.&amp;nbsp; But more cores is not&amp;nbsp;really helping the user&amp;nbsp;UI experience more then&amp;nbsp;faster cores in my experience (from the clock on the wall).&amp;nbsp; This is because the "user" things are bound by the UI loop (including the shell).&amp;nbsp; So we can not forget about&amp;nbsp;the "fast" path while&amp;nbsp;reasearching many-core solutions.&amp;nbsp; Hardware and software vendors still need to push&amp;nbsp;each core and not think adding cores is the ultimate solution to the problem.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458127</link><pubDate>Thu, 19 Feb 2009 23:28:04 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458127</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458127/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I agree with that Charles.&amp;nbsp; Take this Haskell/GUI sample from wikipedia:gui :: IO ()gui = do&amp;nbsp; f &amp;lt;- frame [ text := "Event Handling" ]&amp;nbsp; st &amp;lt;- staticText f [ text := "You haven\'t clicked the button yet." ]&amp;nbsp; b &amp;lt;- button f [ text := "Click&amp;#8230;</evnet:previewtext><dc:creator>William Stacey</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458127/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>I think we should give people more credit. Most people probably didn't understand basic algebra before they were taught it either. I really don't think Haskell is that big of a deal compared to something like OOP with all the nuances it has. It's just that it doesn't share too much with OOP so it's not as easy to learn as "yet another OOP language", but if you think in terms of the overall effort to go from zero to OOP or zero to Haskell, I'd probably expect Haskell to win.&lt;div&gt;I was a TA at university teaching Haskell, and people seemed to have a much harder time picking up Java than Haskell if they didn't already know any programming at all (and initially, people who hadn't programmed at all did better than people who had - they just had less baggage - but after a few weeks the experienced students did start to find ways of reusing existing knowledge).&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;It's a challenge yes, but like I said earlier it's mostly marketing. You need to convince people to make the effort, and help them once they're convinced. But I don't really see it as that big of a problem.&lt;/div&gt;&lt;/div&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458124</link><pubDate>Thu, 19 Feb 2009 22:52:44 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458124</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458124/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I think we should give people more credit. Most people probably didn't understand basic algebra before they were taught it either. I really don't think Haskell is that big of a deal compared to something like OOP with all the nuances it has. It's just that it doesn't share too much with OOP so it's&amp;#8230;</evnet:previewtext><dc:creator>sylvan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458124/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Indeed. What I meant was Haskell (&lt;EM&gt;thinking&lt;/EM&gt; in the Haskell way, more so than the syntax of the Haskell&amp;nbsp;language) won't scale in the sense that gp programmers won't be able, en masse, to make the concpetual switch in a reasonable amount of time. For some gp developers, the shift in thinking is just too high of a bar (and in some cases, unnecessary). How many gp developers out there understand what a monad is? Most developers (by most I mean greater than 50%) do not think monadically, not explicitly, anyway. Most gp developers (at least on our platform)&amp;nbsp;are also not functional thinkers (functional in the functional programming sense).&lt;BR&gt;&lt;BR&gt;This is a hard problem that requires changes in several layers of the software stack, including thinking. Someday, perhaps we'll have a new language, let's call it Nirvana (remember that &lt;A href="http://channel9.msdn.com/posts/Charles/Simon-Peyton-Jones-Towards-a-Programming-Language-Nirvana/" target=_blank&gt;SPJ brief interview&lt;/A&gt;? Note where "Nirvana" lives on the Useful vs Safe (where safe-ness is measured in how side-effectual the language is -&amp;gt; unsafe = very side-effectual, safe = not side effectual...)&amp;nbsp;graph), that can be all things to all scenarios (probably by virtue of its native support for EDSLs and it's highly generic runtime). Who knows.&lt;BR&gt;&lt;BR&gt;C</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458118</link><pubDate>Thu, 19 Feb 2009 22:00:45 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458118</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458118/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Indeed. What I meant was Haskell (thinking in the Haskell way, more so than the syntax of the Haskell&amp;nbsp;language) won't scale in the sense that gp programmers won't be able, en masse, to make the concpetual switch in a reasonable amount of time. For some gp developers, the shift in thinking is&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458118/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Okay, I guess I my recollection confused that with the statement later where you said that it "doesn't scale" (49:40). Mea culpa.&amp;nbsp;Anyway, that's unsupported too. At the end of the day you could always choose to write 100% of your code in the IO monad at which point you're no worse &amp;nbsp;(or better) off than an "effects-everywhere" language like C#.</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458110</link><pubDate>Thu, 19 Feb 2009 21:09:27 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458110</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458110/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Okay, I guess I my recollection confused that with the statement later where you said that it "doesn't scale" (49:40). Mea culpa.&amp;nbsp;Anyway, that's unsupported too. At the end of the day you could always choose to write 100% of your code in the IO monad at which point you're no worse &amp;nbsp;(or&amp;#8230;</evnet:previewtext><dc:creator>sylvan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458110/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>I asked Erik "Is Haskell really general purpose?". He then responded as one would expect a high priest of the lamda calculus to respond :)&lt;BR&gt;&lt;BR&gt;I didn't say "Haskell is not general purpose." There is a difference between asking a question and stating a position.&lt;BR&gt;&lt;BR&gt;I think you're right about a language that supports EDSLs. That's something &lt;A href="http://channel9.msdn.com/posts/Charles/Anders-Hejlsberg-and-Guy-Steele-Concurrency-and-Language-Design/" target=_blank&gt;we talked about in conversation with Anders at JAOO 2008&lt;/A&gt;.&lt;BR&gt;C</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458109</link><pubDate>Thu, 19 Feb 2009 20:59:32 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458109</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458109/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I asked Erik "Is Haskell really general purpose?". He then responded as one would expect a high priest of the lamda calculus to respond :)I didn't say "Haskell is not general purpose." There is a difference between asking a question and stating a position.I think you're right about a language that&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458109/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Pretty sure you said explicitly that it wasn't general purpose in the video, at which point Eric protested wildly.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Haskell was designed from the start to be general purpose, it even says so in the original documents from the early meetings. It was never intended to be some sort of domain-specific language. Indeed people are doing everything from designing hardware, to writing operating systems, to file systems, to 3D shooters, and web applications in it.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;One thing that should be pointed out here, is that the need for multiple languages is reduced if your main language is good at supporting EDSLs (Embedded Domain Specific Language). Haskell (and e.g. F#) does this via monads, other languages do it via e.g. macros, and it's very common to deal with half a dozen of them in any given app (in fact, doing IO itself can be seen as an EDSL, but things like STM, Parsers, non-determinism, dealing with XML, etc. are common too). That doesn't mean you will never need another language, just that it's less common. For example, Haskell people still generally use SQL, even though there are Database EDSLs in Haskell (similar to LINQ-to-SQL).&lt;/div&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458108</link><pubDate>Thu, 19 Feb 2009 20:51:52 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458108</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458108/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Pretty sure you said explicitly that it wasn't general purpose in the video, at which point Eric protested wildly.Haskell was designed from the start to be general purpose, it even says so in the original documents from the early meetings. It was never intended to be some sort of domain-specific&amp;#8230;</evnet:previewtext><dc:creator>sylvan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458108/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>To be clear, I never said that Haskell is not general purpose. I did imply that it is NOT as general purpose as C#. And I think I'm right here. C# is designed to support a huge number of scenarios. Haskell was not designed to. I don't think even the Haskell creators would say that Haskell is as general purpose in nature as something like C#. But this is all moot. The issue is whether or not C# should become a one-size-fits-all GPL or if .NET is used the way it was intended from the very beginning: use the right tool for the job. As long as the tool is supported (CLI compliant), then it will work in the .NET world. &lt;BR&gt;&lt;BR&gt;I mean, would it make sense to write entire applications in a DSL like Maestro? Of course not. You would build the parts of the system that are not parallelizable (they don't need to be.....) in the tool you are comfortable with (C#)&amp;nbsp;and use other tools (like&amp;nbsp;Maestro, for example, or&amp;nbsp;F#)&amp;nbsp;to solve specific problems (like breaking a complex data computation into pieces and running them in parallel).&lt;BR&gt;&lt;BR&gt;I love this type of discourse and I do not claim that my opinions are any more than my opinions (and they can change based on conversational data). &lt;BR&gt;&lt;BR&gt;Keep on posting,&lt;BR&gt;C</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458107</link><pubDate>Thu, 19 Feb 2009 20:37:10 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458107</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458107/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>To be clear, I never said that Haskell is not general purpose. I did imply that it is NOT as general purpose as C#. And I think I'm right here. C# is designed to support a huge number of scenarios. Haskell was not designed to. I don't think even the Haskell creators would say that Haskell is as&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458107/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>I didn't ask Eric or Joe because they didn't make the claims you did.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Re: the compilation issue, I was talking about the whole compilation not just the compilation to IL - C# is jitted, so you can't compile it off line and statically link it to any random .o file you have. Bartok could do that, but in general that's a no go so far. This makes Haskell a lot easier to use in a lot of scenarios. For example, embedded software, or just general applications really (no need to distribute the .Net framework).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;"Writing hardware" doesn't mean "writing &lt;i&gt;to &lt;/i&gt;hardware", it means writing actual hardware - i.e. desigining hardware circuits. See Lava for one Haskell library doing this, or VHDL and Verilog for domain specific languages for it.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Haskell has a Data.Dynamic, which allows you to deal with dynamic data similar to how C# 4.0 does: it gives you a static type of "Dynamic" for values which have no known static type. It doesn't have any syntactic sugar for it like C# 4.0 does, but it doesn't need it to the same extent - see Parsec for an example of parser combinators in Haskell, the parser&amp;nbsp;&lt;i&gt;looks &lt;/i&gt;like you're just reading dynamic data and spitting out statically type counterparts. So the ability to write EDSLs really removes a lot of the need to deal with dynamic types at runtime. This doesn't work in every single case, clearly, but the point is that EDSLs can be used to deal with dynamic data in a way where the details of actually looking things up is hidden (sort of like how C# 4.0 has that interface you implement for method lookup).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Strictly speaking Haskell can do anything C can do, as it's natively compiled (and even has a C backend on most compilers). You could definitely get it working on the Xbox 360 for example (I've been meaning to try to do that as I have an Xbox 360 devkit at work). It's not &lt;i&gt;supported &lt;/i&gt;(i.e. a ready solution supplied by MS), but that's precisely what I'm arguing for so not really relevant - the point is that none of those things you mention pose any real problems for the &lt;i&gt;language&lt;/i&gt;. On the flip side, writing an elegant EDSL in C# is practically impossible (this situation is not the same for F# though, which has Monads now).&lt;/div&gt;&lt;div&gt;The point isn't to compare libraries (though you could use them as an example of something). I'm arguing precisely that MS needs to have a pure language with similar support, including libraries. The point is to compare how well the&lt;i&gt; language itself&lt;/i&gt; does with a specific problem.&lt;/div&gt;&lt;div&gt;As long as you have a C API to something (e.g. multi-touch API), getting it working in Haskell is probably easier than in C# (the foreign function interface is a lot nicer in Haskell IMO).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Oh and being pure doesn't restrict what optimizations you can make, because you can choose to have local mutable state, or just bail out and do stuff in the IO monad, if you really need those optimizations. You're just forced to specify up front where this happens.&lt;/div&gt;&lt;div&gt;&lt;i&gt;Not&lt;/i&gt; being pure does restrict optimizations though, since many optimizations fail in the presence of mutable state. For example, merely writing to a pointer can cause a massive hit if the compiler isn't able to statically prove that none of the other pointers in scope doesn't alias the memory you just wrote too - if it's not able to do that, which in general it won't, then it needs to reload any data read from those pointers since the data held in registers may be stale. This is a simple example, there are lots of others. Take a look at the fusion/flattening transformations in DPH for example, they're absolutely crucial to make nested data parallel computations tractable, and they totally rely on the code being pure.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I've never said Haskell is perfect, I'm saying it's better than C# in a lot of ways, and one important way is concurrency and parallelism. This discussion is being sidetracked from that, though, because I just feel it's important to refute some incorrect statements made by you and Charles claiming, on no evidence, that Haskell somehow isn't general purpose. It is.&lt;/div&gt;&lt;div&gt;If I thought Haskell was perfect I wouldn't be advocating someone create a competitor to it now would I? I'm precisely saying that someone with pull needs to take the good bits from Haskell, and all the lessons learnt, and produce a new purely functional language and then &lt;i&gt;sell it like no language has been sold before&lt;/i&gt;. I can give you list of things I feel need to be looked at, if you're really interested (could you?).&lt;/div&gt;&lt;div&gt;I've never claimed that Haskell (nor any language) solves every problem, please don't put words in my mouth. And drop the ad-hominems too. Accusing me of being "religious" when you're the one who's arguing against a language you don't even know is a bit much.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Bringing up popularity is not very convincing, IMO. Popularity is a function of a whole bunch of other things, language merit is a tiny part of it. It's mostly historical accidents (people don't use C because they think language research hasn't improved in the last 40 years - there are other factors that dominate).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Charles, concurrency and parallelism may have been domain specific challenges five years ago. I'd argue that we're already past that point, and it'll only get worse - concurrency and parallelism are general challenges that will need to be adressed in any language claiming to be general purpose. C# is certainly making strides towards that, and I've already said that this is good stuff - certainly better than not doing anything, I just think there should be a "fully backed" MS alternative for those who are ready to accept the challenges of 5-10 years from now today.&lt;/div&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458101</link><pubDate>Thu, 19 Feb 2009 19:41:36 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458101</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458101/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I didn't ask Eric or Joe because they didn't make the claims you did.Re: the compilation issue, I was talking about the whole compilation not just the compilation to IL - C# is jitted, so you can't compile it off line and statically link it to any random .o file you have. Bartok could do that, but&amp;#8230;</evnet:previewtext><dc:creator>sylvan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458101/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>C# is a general purpose programming language (very general purpose). Concurrency and parallelism represent specifc domain challenges. I don't think that we should expect developers to compose systems using only one tool. That seems rather strange, no? If you want to write software that calculates non-linear differential equations as part of solving complex problems of fluid dynamics, well, you probably want to use a tool that a) efficiently and effectively enables you to do so without compromising speed and accuracy and b) you want your highly parallelized system to scale out. You don't use a general purpose language confined to a single very large runtime + library environment...&lt;BR&gt;&lt;BR&gt;I think the question here (like we discussed in this interview) is: &lt;BR&gt;&lt;BR&gt;Does Microsoft create a new general purpose language and runtime that specifically addresses the concurreny problem while providing engineers with high level abstractions that make programming parallel systems easy, effective, safe and scalable? &lt;BR&gt;&lt;BR&gt;Haskell is not the panacea as Joe and even Erik have said (and so has Simon Peyton Jones).&lt;BR&gt;&lt;BR&gt;In the end, general purpose programmers who have evolved in this imperative, sequential world must learn to &lt;EM&gt;think&lt;/EM&gt; differently, first and foremost. Getting your minds around completely foreign concepts is a great approach to this. I think it's time for a series of conversations and tutorials on Channel 9 based on the theme of Expand Your Mind. First up: Functional Thinking. Stay tuned.&lt;BR&gt;&lt;BR&gt;C</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458093</link><pubDate>Thu, 19 Feb 2009 18:29:58 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458093</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458093/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>C# is a general purpose programming language (very general purpose). Concurrency and parallelism represent specifc domain challenges. I don't think that we should expect developers to compose systems using only one tool. That seems rather strange, no? If you want to write software that calculates&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458093/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>sure, though i gotta wonder why you dont choose to ask joe or eric that question..&lt;BR&gt;its not great for anything where the static type of something you need to talk to isnt known. &lt;BR&gt;beeing completly pure also restricts what kind of optimizations you can make. all those guarantees about isolation just does not come for free. &lt;BR&gt;basicaly every arguments that is used against the static:ness of c# is even more applicable to haskell&lt;BR&gt;&lt;BR&gt;you can use c#/.net to write &lt;BR&gt;web apps, &lt;BR&gt;ria apps, &lt;BR&gt;desktop apps, &lt;BR&gt;xbox games, &lt;BR&gt;mobile apps and&amp;nbsp;&lt;BR&gt;embedded apps &lt;BR&gt;all without having to write your own runtime and without using obscure 3rd party libraries. is that true for haskell? &lt;BR&gt;&lt;BR&gt;its interesting that you ask me to&amp;nbsp;"compare the amount of work required to get it running" because that doesnt seem to be a requirement for you.. just how much work would it be to create a graphically rich, multi touch application in haskell? id image you'd have to re-invent a whole bunch of things already present in c#/.net&lt;BR&gt;&lt;BR&gt;"C# can't easily be compiled" not sure what you're talking about.. the c# compiler is included in the framework but surely you must know that&lt;BR&gt;"Can you generate x86 assembly on the fly into a buffer and then jump into it and start executing in C#?" well, c# is jitted so no. but you can generate IL with&amp;nbsp;AssemblyBuilder/Reflection.Emit. however i dont see that as a very general purpose or command thing to do&lt;BR&gt;"Can you use C# to write hardware?" yes? pinvoke/CreateFile? &lt;BR&gt;"How about reactive animation?" from what i understand, that&amp;nbsp;pretty much what depedency properties do&lt;BR&gt;&lt;BR&gt;im not saying it doesnt matter what language we use. im saying that&amp;nbsp;language is not the most important thing, the understanding of the concept is. you seem to think that if we all used haskell, everything would just work, and thats not true. &lt;BR&gt;no language will&amp;nbsp;let you&amp;nbsp;escape the need to understand the problem and if you do understand the problem you truly can implement it in almost any language (even assembler). its just a matter of preference what language you actually use.&lt;BR&gt;&lt;BR&gt;the debate between static/dynamic has been going on for what? 40-50 years? knowing that&amp;nbsp;i dont understand&amp;nbsp;how anyone can think there is a simple solution that will just work in any situation.. thats just religion.. &lt;BR&gt;&lt;BR&gt;the cold hard fact is that haskell is a minority langunage. if it was sooo great, sooo easy to learn, soo general purpose, soo free from problems, it would be more widely used. its not, so it isnt. blaming marketing is pretty lame because haskell has been around for ~20 years, and still hasnt become mainstream. thats not just a marketing problem.. &lt;BR&gt;&lt;BR&gt;im not married to c#. it has problems and can be made better. its not great for everything.&lt;BR&gt;the fact that&amp;nbsp;you cant admit that about haskell just makes you look silly, and worse than that, you're hindering the progress of haskell by not admitting its flaws..</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458079</link><pubDate>Thu, 19 Feb 2009 13:48:18 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458079</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458079/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>sure, though i gotta wonder why you dont choose to ask joe or eric that question..its not great for anything where the static type of something you need to talk to isnt known. beeing completly pure also restricts what kind of optimizations you can make. all those guarantees about isolation just does&amp;#8230;</evnet:previewtext><dc:creator>Allan Lindqvist</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458079/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Hi sylvan&lt;br&gt;&lt;br&gt;I wasn't suggesting nothing is done or people do nothing. After all fully parallel applications have been possible for a long time (I have even written some). The problem is not 'can it be done' but 'how do we make it easier'.&amp;nbsp; Your original point was that it would be better to teach people something new rather than (say) relying on C# to provide the necessary concurrency. Sure it would be good to teach programmers a new paradigm that really helps solve the concurrency issues -- I am just sure we have much idea as to what it is. &lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458066</link><pubDate>Thu, 19 Feb 2009 11:28:21 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=458066</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458066/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi sylvanI wasn't suggesting nothing is done or people do nothing. After all fully parallel applications have been possible for a long time (I have even written some). The problem is not 'can it be done' but 'how do we make it easier'.&amp;nbsp; Your original point was that it would be better to teach&amp;#8230;</evnet:previewtext><dc:creator>silverfrost</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/458066/Trackback.aspx</trackback:ping></item><item><title>Re: Joe Duffy: Perspectives on Concurrent Programming and Parallelism</title><description>Why not have something new, not .NET, which is based on what was learnt from .NET, so an updated static type system (perhaps one that can better enable a ~dynamic&amp;nbsp;lang), an intermediate language, native interop, GC.. but base it from functional immutability and native / .net interop.&lt;BR&gt;&lt;BR&gt;Wasn't .NET a revolution? it seems to have done well, I don't think you need expect developers to give up their investment in .net code, just as .NET was harnessed and interoped with their native 'investments' (plus I bet companys would actually WANT to 'port' their code up for the advances it gives).&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;oh and get nullability right.. etc&lt;BR&gt;&lt;BR&gt;But really, why not? it won't sell?</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=457997</link><pubDate>Wed, 18 Feb 2009 23:03:25 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/?CommentID=457997</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/457997/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Why not have something new, not .NET, which is based on what was learnt from .NET, so an updated static type system (perhaps one that can better enable a ~dynamic&amp;nbsp;lang), an intermediate language, native interop, GC.. but base it from functional immutability and native / .net interop.Wasn't .NET&amp;#8230;</evnet:previewtext><dc:creator>stevo_</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/457997/Trackback.aspx</trackback:ping></item></channel></rss>