<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.atalasoft.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rick Minerich's Development Wonderland : C#, fsharp, roundup, mapreduce</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/fsharp/roundup/mapreduce/default.aspx</link><description>Tags: C#, fsharp, roundup, mapreduce</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Let’s Wax Functional 03/06/2009</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx</link><pubDate>Sat, 07 Mar 2009 23:09:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:17631</guid><dc:creator>RickM</dc:creator><slash:comments>2</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/17631.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=17631</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=17631</wfw:comment><description>&lt;p&gt;This week we have MapReduce, WebTools and yet another F# to C# language comparison.&amp;nbsp; I spent yesterday at a &lt;a href="http://www.scrumalliance.org/events/74-scrum-and-team-foundation-seminar"&gt;seminar led by Michael de la Maza&lt;/a&gt;.&amp;nbsp; He, &lt;a href="http://talbottc.spaces.live.com/"&gt;Talbot Crowell&lt;/a&gt; and I will soon be starting a F# user’s group in Boston, Massachusetts.&amp;nbsp; I’m interested in any comments you might have.&amp;nbsp; Please feel free to send me an email if you would like to discuss speaking at it or content you would like to see covered.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h3&gt;Blog - &lt;a href="http://weblogs.asp.net/podwysocki/archive/2009/03/03/exploring-mapreduce-with-f.aspx"&gt;Matthew Podwysocki’s Exploring MapReduce with F#&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Google’s &lt;a href="http://en.wikipedia.org/wiki/MapReduce"&gt;MapReduce&lt;/a&gt; software framework has revolutionized the way software engineers think about processing large data sets.&amp;nbsp; Since it’s introduction at least 15 variants have been developed.&amp;nbsp; Thorough as always, Matthew explores what MapReduce is, how it relates to functional programming and, finally, shows his own light-weight MapReduce implementation.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h3&gt;Software – Thomas Petricek’s &lt;a href="http://www.codeplex.com/fswebtools"&gt;FSharp.WebTools&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;The F# Web Tools augment the F# distribution with tools to author homogeneous client/server/database web applications in one type-checked project. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It does this by generating Javascript from F#.&amp;nbsp; The big advantage here is that you can effectively have statically checked Javascript and so &lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/10/15/anders-hejlsberg-on-the-future-of-programming-languages.aspx"&gt;avoid a whole class of bugs that come along with dynamically typed programming&lt;/a&gt;.&amp;nbsp; While many are &lt;a href="http://clivetong.spaces.live.com/blog/cns%213F21DF299C355E7F%21220.entry"&gt;excited about this prospect&lt;/a&gt;, at least one person seems to have had &lt;a href="http://cid-05f59721c89c5188.profile.live.com/"&gt;trouble getting it to work&lt;/a&gt;.&amp;nbsp; Currently, only the source tree is available and it must be manually compiled.&amp;nbsp; I know I’m not the only one hoping for a tested release in the near future.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h3&gt;Blog – &lt;a href="http://blogs.msdn.com/mpeck/archive/2009/03/03/Solving-Problems-in-CSharp-and-FSharp-Part-1.aspx"&gt;Martin Peck’s Solving Problems in C# and F# – Part 1&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;In this post Martin compares solutions to Project Euler problems 10 and 12 in both C# and F#.&amp;nbsp; In competition with his friend Giles Knap, he wrote his answers in C# while Giles wrote in F#.&amp;nbsp; Afterward, each set of answers is discussed independently.&amp;nbsp; He concludes that the languages were equally readable but the F# implementations were slower.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;I wish Giles had written a rebuttal post as Martin seems to be a die hard C# fan.&amp;nbsp; I don’t agree that they were equally readable.&amp;nbsp; The F# problems lacked much of the syntactic cruft and whitespace found in the C# examples.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;Also, as single core results are fast becoming meaningless, it would be very if they would agree to use asynchronous workflows in F# and compare that with the .NET Parallel Extensions in C#.&amp;nbsp; By constraining the answers to be single thread only, it seems like they avoided much of F#’s inherent benefit in multicore processing.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;I also can’t help wondering how each of their prime generating examples would compare with the &lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2009/02/20/functional-discoveries-in-the-microsoft-sociocosm-02-20-2009.aspx"&gt;memoizing example I mentioned two weeks ago&lt;/a&gt;.&amp;nbsp; I’d be shocked to see a similar C# implementation in anywhere near as little space.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx&amp;amp;;subject=Let%e2%80%99s+Wax+Functional+03%2f06%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx&amp;amp;;title=Let%e2%80%99s+Wax+Functional+03%2f06%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx&amp;amp;title=Let%e2%80%99s+Wax+Functional+03%2f06%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx&amp;amp;;title=Let%e2%80%99s+Wax+Functional+03%2f06%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx&amp;amp;;title=Let%e2%80%99s+Wax+Functional+03%2f06%2f2009&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/03/07/let-s-wax-functional-03-06-2009.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=17631" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx">functional</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/google/default.aspx">google</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/javascript/default.aspx">javascript</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/roundup/default.aspx">roundup</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/web/default.aspx">web</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/csharp/default.aspx">csharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/webtools/default.aspx">webtools</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/mapreduce/default.aspx">mapreduce</category></item></channel></rss>