<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 JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun St (Charles on Channel 9)</title><atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/posts/charles/jaoo-2007-erik-meijer-and-dave-thomas-objects-functions-virtual-machines-ides-and-other-fun-st/rss/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Comment Feed for JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun St (Charles on Channel 9)</title><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/</link></image><description>JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun St</description><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/</link><language>en-us</language><pubDate>Thu, 01 Nov 2007 12:54:02 GMT</pubDate><lastBuildDate>Thu, 01 Nov 2007 12:54:02 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3243.35083, Culture=neutral, PublicKeyToken=null)</generator><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>Good stuff.&lt;br /&gt;&lt;br /&gt;I will have to disagree with (or at least complement) one thing Eric &lt;br /&gt;said: that you have to have lazy evaluation to really avoid side-effects. &lt;br /&gt;I would claim that not even with lazy evaluation, can you avoid&lt;br /&gt;side-effects completely.&lt;br /&gt;&lt;br /&gt;The problem is when you include aspects as memory footprint and&lt;br /&gt;timing aspects. These things are very difficult to predict with lazy evaluation, and in many applications, controlling timing and memory &lt;br /&gt;is vital. Partly for this reason, Haskell has strictness annotations to &lt;br /&gt;turn off lazy evaluation.&lt;br /&gt;&lt;br /&gt;Not that this is a big problem. You can do lazy evaluation in Erlang&lt;br /&gt;(observe Erlang QuickCheck), but you have to be explicit about it.&lt;br /&gt;Conversely, you must be explicit about strict evaluation in Haskell.&lt;br /&gt;The notion of side-effect free programming is more fundamental,&lt;br /&gt;and states that you must strive to take control of side-effects and &lt;br /&gt;use them only where necessary.&lt;br /&gt;&lt;br /&gt;Some side-effects are unavoidable (e.g. the processor gets warm,&lt;br /&gt;as Simon Peyton-Jones pointed out), but may not matter to the &lt;br /&gt;application; other side-effects are unwanted and perhaps &lt;br /&gt;disastrous (some thread frees data which is still needed by&lt;br /&gt;another). In complex systems, control of side-effects is &lt;br /&gt;essential.&lt;br /&gt;&lt;br /&gt;/Ulf Wiger&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360805</link><pubDate>Thu, 01 Nov 2007 12:54:02 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360805</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360805/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Good stuff.I will have to disagree with (or at least complement) one thing Eric said: that you have to have lazy evaluation to really avoid side-effects. I would claim that not even with lazy evaluation, can you avoidside-effects completely.The problem is when you include aspects as memory footprint&amp;#8230;</evnet:previewtext><dc:creator>uwiger</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360805/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;blockquote&gt;
				&lt;div&gt;John Melville, MD wrote:&lt;/div&gt;
				&lt;div&gt;﻿
&lt;p&gt;
&lt;blockquote&gt;
&lt;table&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src="http://channel9.msdn.com/Themes/AlmostGlass/images/icon-quote.gif /&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;JChung2006 wrote:&lt;/strong&gt;

&lt;i&gt;﻿Can you give an example of what you're talking about, John?&lt;br /&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Say I want to convert a list of strings to a numbered list of strings. This works:&lt;/p&gt;
&lt;p&gt;IEnumerable&amp;lt;String&amp;gt; NumberStrings(IEnumerable&amp;lt;String&amp;gt; input) {&lt;br /&gt;&amp;nbsp; int i;&lt;br /&gt;&amp;nbsp; return input.Select(s=&amp;gt;String.Format("{0}. {1}", ++i, s));&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;but this does not work:&lt;/p&gt;
&lt;p&gt;IEnumerable&amp;lt;String&amp;gt; NumberStrings(IEnumerable&amp;lt;String&amp;gt; input) {&lt;br /&gt;&amp;nbsp; int i;&lt;br /&gt;&amp;nbsp; return input.AsParallel().Select(s=&amp;gt;String.Format("{0}. {1}", ++i, s));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Evemtually numbers will be repeated or skipped because of race conditions involving the ++i expression.&lt;/p&gt;
&lt;p&gt;[For the nitpickers out there: I know that numbering n items is inherently sequential and that trying to do it in parallel is foolish.&amp;nbsp; I am trying to write a simple example of code that looks like it should work because its "functional," but doesn't.]&lt;/p&gt;
&lt;p&gt;Even though I am using ParallelFX, lambdas, LINQ, and all the other functional goo, its not a magic wand that lets me ignore the problem of shared mutable state. If I were using lisp, haskel, or another functional language it wouldn't let me do the ++i, because they don't have mutable state at all.&amp;nbsp; The success of functional languages (in which no beginning student really believes) is that you can actually write meaningful programs without it.&lt;/p&gt;
&lt;p&gt;Then it gets worse because if the ++i were actually a function call.&amp;nbsp; In functional languages, the language guarentees no mutable state.&amp;nbsp; In C# I may not know if it mutates state, or it may not do so now and change in the next version.&amp;nbsp; It might mutate state only in an edge case I didn't test for.&amp;nbsp; All of the sudden, my correctness depends on a sometimes very subtle implementation detail of (potentially) someone else's code.&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;I pointed out the flaw in the logic of somebody who innocently asked for a parallel version of a for loop in another video thread (the Parallel Fx video thread, I believe).&lt;br /&gt;&lt;br /&gt;There are however many problems that can be solved efficiently by leveraging data parallelism, e.g., map-reduce, for which we have no really clean or concise semantics built into our current set of CLR programming languages.&lt;br /&gt;&lt;br /&gt;It isn't so much the "functional programming" aspects of functional programming languages that solve this so much as the semantics and syntax for expressing those semantics in such a way that lends itself well to parallelism.&lt;br /&gt;&lt;br /&gt;We'll need documented guidance to use these things wisely.&amp;nbsp; You can write grossly inefficient and-or bug-ridden code in any language like SQL or C#.&amp;nbsp; That doesn't make these any of these languages less than useful.&lt;br /&gt;&lt;br /&gt;Hopefully universities are doing a better job these days of teaching the concepts of functional programming.&amp;nbsp; When I was in school, I had to go to graduate school for that sort of thing.&amp;nbsp; I hope computer science curriciula has improved since those days.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360173</link><pubDate>Mon, 22 Oct 2007 22:53:41 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360173</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360173/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	John Melville, MD wrote:
				﻿






JChung2006 wrote:

﻿Can you give an example of what you're talking about, John?

Say I want to convert a list of strings to a numbered list of strings. This works:
IEnumerable&amp;lt;String&amp;gt; NumberStrings(IEnumerable&amp;lt;String&amp;gt; input) {&amp;nbsp; int&amp;#8230;</evnet:previewtext><dc:creator>JChung2006</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360173/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;p&gt;I did not understand the issue Dave seemed to have with libraries either.&amp;nbsp; I mean I think the .Net library is great.&amp;nbsp; It is wide, but&amp;nbsp;does not really feel fat to me.&amp;nbsp; &amp;nbsp;I mean how does a functional&amp;nbsp;language help you call something like Dns.GetHostEntry() any better?&amp;nbsp; Maybe I missed the point.&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360150</link><pubDate>Mon, 22 Oct 2007 20:27:59 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360150</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360150/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I did not understand the issue Dave seemed to have with libraries either.&amp;nbsp; I mean I think the .Net library is great.&amp;nbsp; It is wide, but&amp;nbsp;does not really feel fat to me.&amp;nbsp; &amp;nbsp;I mean how does a functional&amp;nbsp;language help you call something like Dns.GetHostEntry() any better?&amp;nbsp; Maybe I missed the point.</evnet:previewtext><dc:creator>staceyw</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360150/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;blockquote&gt;
				&lt;div&gt;dot_tom wrote:&lt;/div&gt;
				&lt;div&gt;﻿Just an awesome series of videos Charles - but when are we going to Brian Beckman back on? That dude is in no small part responsible for my falling in love with math again recently.&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;Thank you. More JAOO coverage to come.&lt;br /&gt;&lt;br /&gt;Beckman will be on again soon... :)&lt;br /&gt;C</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360110</link><pubDate>Mon, 22 Oct 2007 15:48:59 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360110</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360110/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	dot_tom wrote:
				﻿Just an awesome series of videos Charles - but when are we going to Brian Beckman back on? That dude is in no small part responsible for my falling in love with math again recently.
		
		
		Thank you. More JAOO coverage to come.Beckman will be on again soon... :)C</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360110/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>Just an awesome series of videos Charles - but when are we going to Brian Beckman back on? That dude is in no small part responsible for my falling in love with math again recently.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360066</link><pubDate>Mon, 22 Oct 2007 08:37:28 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360066</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360066/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Just an awesome series of videos Charles - but when are we going to Brian Beckman back on? That dude is in no small part responsible for my falling in love with math again recently.</evnet:previewtext><dc:creator>dot_tom</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360066/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>I do like the idea of lambdas in sql.&amp;nbsp; In my mind being able to pass a lambda to be executed remotely on sql would be very interesting and reduce a lot of manual slog of writing stored procs&amp;nbsp;and bouncing back and forth between&amp;nbsp;DSLs.&amp;nbsp; Example:&lt;br /&gt;&lt;br /&gt;List&amp;lt;person&amp;gt; list = ...&lt;br /&gt;db.Exec(a =&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach(Person p in a)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SqlDB.Person.Add(p));&amp;nbsp; //Run code on server passing array.&lt;br /&gt;&lt;br /&gt;Constrainsts and triggers could be lambas too, or Services so the middle tier could use same constraint code as db constraints and visa-versa.&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360025</link><pubDate>Mon, 22 Oct 2007 01:01:12 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360025</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360025/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I do like the idea of lambdas in sql.&amp;nbsp; In my mind being able to pass a lambda to be executed remotely on sql would be very interesting and reduce a lot of manual slog of writing stored procs&amp;nbsp;and bouncing back and forth between&amp;nbsp;DSLs.&amp;nbsp; Example:List&amp;lt;person&amp;gt; list = ...db.Exec(a&amp;#8230;</evnet:previewtext><dc:creator>staceyw</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360025/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;blockquote&gt;
				&lt;div&gt;John Melville, MD wrote:&lt;/div&gt;
				&lt;div&gt;﻿
&lt;p&gt;
&lt;blockquote&gt;
&lt;table&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src="http://channel9.msdn.com/Themes/AlmostGlass/images/icon-quote.gif /&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;berni wrote:&lt;/strong&gt;

&lt;i&gt;But unfortunately a lambda expression alone does not solve the concurrency problem.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas are just one of many techniques that you need to get real work done in the presence of that draconian restriction.&lt;/p&gt;
&lt;p&gt;I see a looming disaster if programmers misunderstand the implications of "functional elements" in imperative programming languages.&amp;nbsp; Functional programming is as much about what you don't do as what you do.&amp;nbsp; If you use typical functional constructs in a imperative language, you might accidentally take an implicit dependency on the implementation of everything you call -- nothing you call can mutate any state.&amp;nbsp; This introduces versioning and subtle edge case bugs, as the author is probably unaware and cannot discover that you have taken that dependency.&lt;/p&gt;
&lt;p&gt;This brings us to the second looming disaster.&amp;nbsp; It simply doesn't work to have two classes of code, one of which cannot call the other.&amp;nbsp; Several of the C# team members have discussed on channel 9 that this is why the C++ const modifier was not carried over into C#.&amp;nbsp; It has proven frustratingly difficult to predict how other programmers will want to compose code.&amp;nbsp; When one class of code cannot call another (ie "functional code" with no mutation and "imperative" code that can) one eventually sees parallel frameworks developing as common operations are eventually needed in both classes.&lt;/p&gt;
&lt;p&gt;Don't get me wrong, local variable type inference and lambdas in C# are hot features.&amp;nbsp; Linq has been my biggest boost in productivity since, well C#.&amp;nbsp; But these features do not make the language functional, and you're setting yourself up for pain if you think they do.&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;Agreed.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360024</link><pubDate>Mon, 22 Oct 2007 00:42:52 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360024</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360024/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	John Melville, MD wrote:
				﻿






berni wrote:

But unfortunately a lambda expression alone does not solve the concurrency problem.

Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing&amp;#8230;</evnet:previewtext><dc:creator>staceyw</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360024/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;blockquote&gt;
				&lt;div&gt;John Melville, MD wrote:&lt;/div&gt;
				&lt;div&gt;﻿
&lt;p&gt;
&lt;blockquote&gt;
&lt;table&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src="http://channel9.msdn.com/Themes/AlmostGlass/images/icon-quote.gif /&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;berni wrote:&lt;/strong&gt;

&lt;i&gt;But unfortunately a lambda expression alone does not solve the concurrency problem.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas are just one of many techniques that you need to get real work done in the presence of that draconian restriction.&lt;/p&gt;
&lt;p&gt;I see a looming disaster if programmers misunderstand the implications of "functional elements" in imperative programming languages.&amp;nbsp; Functional programming is as much about what you don't do as what you do.&amp;nbsp; If you use typical functional constructs in a imperative language, you might accidentally take an implicit dependency on the implementation of everything you call -- nothing you call can mutate any state.&amp;nbsp; This introduces versioning and subtle edge case bugs, as the author is probably unaware and cannot discover that you have taken that dependency.&lt;/p&gt;
&lt;p&gt;This brings us to the second looming disaster.&amp;nbsp; It simply doesn't work to have two classes of code, one of which cannot call the other.&amp;nbsp; Several of the C# team members have discussed on channel 9 that this is why the C++ const modifier was not carried over into C#.&amp;nbsp; It has proven frustratingly difficult to predict how other programmers will want to compose code.&amp;nbsp; When one class of code cannot call another (ie "functional code" with no mutation and "imperative" code that can) one eventually sees parallel frameworks developing as common operations are eventually needed in both classes.&lt;/p&gt;
&lt;p&gt;Don't get me wrong, local variable type inference and lambdas in C# are hot features.&amp;nbsp; Linq has been my biggest boost in productivity since, well C#.&amp;nbsp; But these features do not make the language functional, and you're setting yourself up for pain if you think they do.&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;Agreed.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360023</link><pubDate>Mon, 22 Oct 2007 00:42:46 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360023</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360023/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	John Melville, MD wrote:
				﻿






berni wrote:

But unfortunately a lambda expression alone does not solve the concurrency problem.

Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing&amp;#8230;</evnet:previewtext><dc:creator>staceyw</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360023/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;p&gt;Great vid guys.&amp;nbsp; I did not follow the Sql-to-xml-to-objects slam by Dave.&amp;nbsp; Sure, you can trans data over the wire more efficient by using a byte[] as we have today with SqlReader.&amp;nbsp; But I don't want to use SqlReader as using Linq is much easier.&amp;nbsp; I want an object on the client side and access properties using a "dot" and Intellisense.&amp;nbsp; Using an object array or late-binding, does not help me here as I have to fall-back to somehow "knowing" field locations&amp;nbsp;by index and converting types from object.&amp;nbsp; How would a functional approach help this matter of working with sql data?&amp;nbsp; Any code examples?&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360022</link><pubDate>Mon, 22 Oct 2007 00:41:07 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=360022</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/360022/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Great vid guys.&amp;nbsp; I did not follow the Sql-to-xml-to-objects slam by Dave.&amp;nbsp; Sure, you can trans data over the wire more efficient by using a byte[] as we have today with SqlReader.&amp;nbsp; But I don't want to use SqlReader as using Linq is much easier.&amp;nbsp; I want an object on the client&amp;#8230;</evnet:previewtext><dc:creator>staceyw</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/360022/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;p&gt;
				&lt;blockquote&gt;
						&lt;div&gt;JChung2006 wrote:&lt;/div&gt;
						&lt;div&gt;﻿Can you give an example of what you're talking about, John?&lt;br /&gt;&lt;/div&gt;
				&lt;/blockquote&gt;
		&lt;/p&gt;
&lt;p&gt;Say I want to convert a list of strings to a numbered list of strings. This works:&lt;/p&gt;
&lt;p&gt;IEnumerable&amp;lt;String&amp;gt; NumberStrings(IEnumerable&amp;lt;String&amp;gt; input) {&lt;br /&gt;&amp;nbsp; int i;&lt;br /&gt;&amp;nbsp; return input.Select(s=&amp;gt;String.Format("{0}. {1}", ++i, s));&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;but this does not work:&lt;/p&gt;
&lt;p&gt;IEnumerable&amp;lt;String&amp;gt; NumberStrings(IEnumerable&amp;lt;String&amp;gt; input) {&lt;br /&gt;&amp;nbsp; int i;&lt;br /&gt;&amp;nbsp; return input.AsParallel().Select(s=&amp;gt;String.Format("{0}. {1}", ++i, s));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Evemtually numbers will be repeated or skipped because of race conditions involving the ++i expression.&lt;/p&gt;
&lt;p&gt;[For the nitpickers out there: I know that numbering n items is inherently sequential and that trying to do it in parallel is foolish.&amp;nbsp; I am trying to write a simple example of code that looks like it should work because its "functional," but doesn't.]&lt;/p&gt;
&lt;p&gt;Even though I am using ParallelFX, lambdas, LINQ, and all the other functional goo, its not a magic wand that lets me ignore the problem of shared mutable state. If I were using lisp, haskel, or another functional language it wouldn't let me do the ++i, because they don't have mutable state at all.&amp;nbsp; The success of functional languages (in which no beginning student really believes) is that you can actually write meaningful programs without it.&lt;/p&gt;
&lt;p&gt;Then it gets worse because if the ++i were actually a function call.&amp;nbsp; In functional languages, the language guarentees no mutable state.&amp;nbsp; In C# I may not know if it mutates state, or it may not do so now and change in the next version.&amp;nbsp; It might mutate state only in an edge case I didn't test for.&amp;nbsp; All of the sudden, my correctness depends on a sometimes very subtle implementation detail of (potentially) someone else's code.&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359984</link><pubDate>Sun, 21 Oct 2007 16:28:17 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359984</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359984/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	
						JChung2006 wrote:
						﻿Can you give an example of what you're talking about, John?
				
		
Say I want to convert a list of strings to a numbered list of strings. This works:
IEnumerable&amp;lt;String&amp;gt; NumberStrings(IEnumerable&amp;lt;String&amp;gt; input) {&amp;nbsp; int i;&amp;nbsp; return&amp;#8230;</evnet:previewtext><dc:creator>John Melville-- MD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359984/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;blockquote&gt;
				&lt;div&gt;berni wrote:&lt;/div&gt;
				&lt;div&gt;﻿
&lt;blockquote&gt;
&lt;table&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src="http://channel9.msdn.com/Themes/AlmostGlass/images/icon-quote.gif /&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;John Melville, MD wrote:&lt;/strong&gt;

&lt;i&gt;﻿&lt;br /&gt;Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas are just one of many techniques that you need to get real work done in the presence of that draconian restriction.&lt;br /&gt;&lt;br /&gt;I see a looming disaster if programmers misunderstand the implications of "functional elements" in imperative programming languages.&amp;nbsp; &lt;br /&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's exactly what i tried to say to charles (my english is not so good), thank you john. He missed this discussion in his last interviews when he was talking to Erik, Anders or Joe Duffy. Actually Joe Duffy was pointing at this problem when he wrote his "a(i)" function to the whiteboard -&amp;nbsp;but it was only one short sentence.&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;I never stated that lamda expressions in C#&amp;nbsp;or VB.NET&amp;nbsp;alone solve the concurrency problem........ Further, as discussed in this and other interviews, expressions make it possible for runtimes to allocate parallel processing "jobs" and then combine them at the end for use in the application context. Functional constructs will continue to creep into imperative languages as a way to enable imperative language runtimes with the ability to spread execution across multiple cores. Not very confusing.&lt;br /&gt;&lt;br /&gt;The&amp;nbsp;mutable state uber issue is a much larger problem that is intensely researched around the world.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359983</link><pubDate>Sun, 21 Oct 2007 16:11:40 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359983</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359983/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	berni wrote:
				﻿





John Melville, MD wrote:

﻿Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas are just one of many techniques that you need to get real work&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359983/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;blockquote&gt;
				&lt;div&gt;John Melville, MD wrote:&lt;/div&gt;
				&lt;div&gt;﻿&lt;br /&gt;Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas are just one of many techniques that you need to get real work done in the presence of that draconian restriction.&lt;br /&gt;&lt;br /&gt;I see a looming disaster if programmers misunderstand the implications of "functional elements" in imperative programming languages.&amp;nbsp; &lt;br /&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;That's exactly what i tried to say to charles (my english is not so good), thank you john. He missed this discussion in his last interviews when he was talking to Erik, Anders or Joe Duffy. Actually Joe Duffy was pointing at this problem when he wrote his "a(i)" function to the whiteboard -&amp;nbsp;but it was only one short sentence.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359953</link><pubDate>Sun, 21 Oct 2007 08:34:11 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359953</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359953/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	John Melville, MD wrote:
				﻿Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas are just one of many techniques that you need to get real work done in the presence of that&amp;#8230;</evnet:previewtext><dc:creator>berni</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359953/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>Can you give an example of what you're talking about, John?&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359948</link><pubDate>Sun, 21 Oct 2007 04:27:40 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359948</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359948/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Can you give an example of what you're talking about, John?</evnet:previewtext><dc:creator>JChung2006</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359948/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;p&gt;
				&lt;blockquote&gt;
						&lt;div&gt;berni wrote:&lt;/div&gt;
						&lt;div&gt;But unfortunately a lambda expression alone does not solve the concurrency problem.&lt;/div&gt;
				&lt;/blockquote&gt;
		&lt;/p&gt;
&lt;p&gt;Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas are just one of many techniques that you need to get real work done in the presence of that draconian restriction.&lt;/p&gt;
&lt;p&gt;I see a looming disaster if programmers misunderstand the implications of "functional elements" in imperative programming languages.&amp;nbsp; Functional programming is as much about what you don't do as what you do.&amp;nbsp; If you use typical functional constructs in a imperative language, you might accidentally take an implicit dependency on the implementation of everything you call -- nothing you call can mutate any state.&amp;nbsp; This introduces versioning and subtle edge case bugs, as the author is probably unaware and cannot discover that you have taken that dependency.&lt;/p&gt;
&lt;p&gt;This brings us to the second looming disaster.&amp;nbsp; It simply doesn't work to have two classes of code, one of which cannot call the other.&amp;nbsp; Several of the C# team members have discussed on channel 9 that this is why the C++ const modifier was not carried over into C#.&amp;nbsp; It has proven frustratingly difficult to predict how other programmers will want to compose code.&amp;nbsp; When one class of code cannot call another (ie "functional code" with no mutation and "imperative" code that can) one eventually sees parallel frameworks developing as common operations are eventually needed in both classes.&lt;/p&gt;
&lt;p&gt;Don't get me wrong, local variable type inference and lambdas in C# are hot features.&amp;nbsp; Linq has been my biggest boost in productivity since, well C#.&amp;nbsp; But these features do not make the language functional, and you're setting yourself up for pain if you think they do.&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359898</link><pubDate>Sat, 20 Oct 2007 19:56:13 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359898</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359898/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	
						berni wrote:
						But unfortunately a lambda expression alone does not solve the concurrency problem.
				
		
Actually, to be more correct a lambda does NOTHING to solve the concurrency problem.&amp;nbsp; Functional languages solve concurrency by disallowing mutable state.&amp;nbsp; Lambdas&amp;#8230;</evnet:previewtext><dc:creator>John Melville-- MD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359898/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;p&gt;I could listen to Dave Thomas for several hours.&lt;br /&gt;&lt;br /&gt;He really nailed it about what is going on at colleges in the USA with Java.&lt;br /&gt;&lt;br /&gt;More interviews&amp;nbsp;like this Charles! :)&lt;br /&gt;&lt;br /&gt;[H]&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359885</link><pubDate>Sat, 20 Oct 2007 19:05:02 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359885</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359885/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I could listen to Dave Thomas for several hours.He really nailed it about what is going on at colleges in the USA with Java.More interviews&amp;nbsp;like this Charles! :)[H]</evnet:previewtext><dc:creator>raymond</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359885/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;p&gt;This was a really interesting discussion that came far around. Very good job.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Im very much looking forward to the second part!&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359822</link><pubDate>Sat, 20 Oct 2007 08:31:28 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359822</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359822/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>This was a really interesting discussion that came far around. Very good job.
&amp;nbsp;
Im very much looking forward to the second part!</evnet:previewtext><dc:creator>Chadk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359822/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>Thank you charles for your reply. I agree that all those nice features like lambda expressions in c# can help to write better code (and of course everyone should use it). But unfortunately a lambda expression alone does not solve the concurrency problem. Take a look at your interview with Anders Hejlsberg and Joe Duffy, even with ParallelFX a lambda expression is just a nice way to express what the programm should do. In fact it's just a delegate and the code that is executed is still the same as before (with all the concurreny problems).&lt;br /&gt;&lt;br /&gt;Don't get me worng, i don't blame lambda expressions that they&amp;nbsp;can't solve the concurreny problem -&amp;nbsp;because they are not designed for it. Anders Hejlsberg said in his interview: "You still have to think" and that's the truth.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359816</link><pubDate>Sat, 20 Oct 2007 06:52:59 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359816</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359816/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Thank you charles for your reply. I agree that all those nice features like lambda expressions in c# can help to write better code (and of course everyone should use it). But unfortunately a lambda expression alone does not solve the concurrency problem. Take a look at your interview with Anders&amp;#8230;</evnet:previewtext><dc:creator>berni</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359816/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;blockquote&gt;
				&lt;div&gt;berni wrote:&lt;/div&gt;
				&lt;div&gt;﻿very interessting interview (i really like erik). but i have to say some words to charles. &lt;br /&gt;&lt;br /&gt;I think charles is in a mindset that functional programming is the way to go and all problems just fade away as soon as you write your code in ruby or F# and so on. I don't know what kind of programms charles is writing, but my experience as a professional developer is that "the old style" of programming is very appropriate for real world problems.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;Hi berni,&lt;br /&gt;&lt;br /&gt;Actually, that's not my mindset at all. Functional languages are, by design, perfectly suited to writing concurrent programs. This doesn't mean that we all have to become users of functional languages to write programs that scale to multicore. In reality, you will most likely see more of what Erik and Anders are up in terms of LINQ, PLINQ and ParallelFX (which relies on the existence of lamda expressions, among other constructs borrowed from the functional world, to work) showing up in imperative languages like C#, VB.NET, Java, etc... &lt;br /&gt;&lt;br /&gt;From an educational point of view, I agree 100% with Erik and Dave regarding the need for functional programming courses as a requirement in the CS discipline.&lt;br /&gt;&lt;br /&gt;The future may not be functional or imperative, but rather both. For sure, the future is many core and we need to have tooling support for it.&lt;br /&gt;&lt;br /&gt;C</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359761</link><pubDate>Fri, 19 Oct 2007 21:57:13 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359761</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359761/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	berni wrote:
				﻿very interessting interview (i really like erik). but i have to say some words to charles. I think charles is in a mindset that functional programming is the way to go and all problems just fade away as soon as you write your code in ruby or F# and so on. I don't know what kind&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359761/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>very interessting interview (i really like erik). but i have to say some words to charles. &lt;br /&gt;&lt;br /&gt;I think charles is in a mindset that functional programming is the way to go and all problems just fade away as soon as you write your code in ruby or F# and so on. I don't know what kind of programms charles is writing, but my experience as a professional developer is that "the old style" of programming is very appropriate for real world problems.&lt;br /&gt;&lt;br /&gt;even in the world of multicore CPUs it's not&amp;nbsp;that hard to use all those core for your programm. especially for web and database related software it's very easy. libraries like ParallelFX will help to write nice code. so i don't see that functional programming is the way how programms will be written in the future. (Of course there are some perfect exceptions but please don't nail me on that).&lt;br /&gt;&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359747</link><pubDate>Fri, 19 Oct 2007 21:04:15 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Erik-Meijer-and-Dave-Thomas-Objects-Functions-Virtual-Machines-IDEs-and-Other-Fun-St/?CommentID=359747</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/359747/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>very interessting interview (i really like erik). but i have to say some words to charles. I think charles is in a mindset that functional programming is the way to go and all problems just fade away as soon as you write your code in ruby or F# and so on. I don't know what kind of programms charles&amp;#8230;</evnet:previewtext><dc:creator>berni</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/359747/Trackback.aspx</trackback:ping></item><item><title>Re: JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</title><description>&lt;p class="MsoNormal"&gt;

&lt;/p&gt;
		&lt;p class="MsoNormal"&gt;

&lt;/p&gt;
		&lt;blockquote&gt;
				&lt;p class="MsoNormal"&gt;"I mean I think the .Net library is great.&amp;nbsp; It is wide, but&amp;nbsp;does not
really feel fat to me.&amp;nbsp; &amp;nbsp;I mean how does a functional&amp;nbsp;language help you
call something like Dns.GetHostEntry() any better?"&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p class="MsoNormal"&gt;You’re right. If you need a library function like Dns.GetHostEntry()
who gives a damn if it’s being called from IronPython or C#. It’s there because
people need it, not because of static or dynamic typing.&lt;/p&gt;



&lt;p class="MsoNormal"&gt;I thought his objection to fat libraries was that developers
should think about the problem more, and that given appropriate languages they
can build precisely what they need for their app. themselves without necessarily
modelling every aspect in OO and/or automatically falling back on a large stack
of OO frameworks.&lt;br /&gt;
&lt;br /&gt;
Having said that, I've never really worked with frameworks like Spring or
Hibernate so I don't know how bad the problem is. What are other people's
experiences with these kind of frameworks? Good for technical-publishers or
good for developers?&lt;/p&gt;



&lt;p class="MsoNormal"&gt;In .Net’s case I’d agree that the library weight is muscle,
not fat; it’s there to do work for people – though with time it's naturally going to become more convoluted.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/338772/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments></comments><link></link><pubDate>Fri, 19 Oct 2007 18:05:38 GMT</pubDate><guid isPermaLink="false"></guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/338772/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	


		
				"I mean I think the .Net library is great.&amp;nbsp; It is wide, but&amp;nbsp;does not
really feel fat to me.&amp;nbsp; &amp;nbsp;I mean how does a functional&amp;nbsp;language help you
call something like Dns.GetHostEntry() any better?"
		
		You’re right. If you need a library function like&amp;#8230;</evnet:previewtext><dc:creator>Balclutha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://channel9.msdn.com/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/338772/Trackback.aspx</trackback:ping></item></channel></rss>