<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>What Happens If I... &#187; C#</title>
	<atom:link href="http://blog.arlim.org/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.arlim.org</link>
	<description>Kim Wallmark's Technical Wanderings</description>
	<lastBuildDate>Tue, 20 Jul 2010 05:45:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Javascript is the new C</title>
		<link>http://blog.arlim.org/2009/10/16/javascript-is-the-new-c/</link>
		<comments>http://blog.arlim.org/2009/10/16/javascript-is-the-new-c/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 17:50:54 +0000</pubDate>
		<dc:creator>Kim Wallmark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[lingua franca]]></category>
		<category><![CDATA[prediction]]></category>

		<guid isPermaLink="false">http://blog.arlim.org/?p=74</guid>
		<description><![CDATA[I&#8217;ve become increasingly convinced that Javascript is following the path that C did a generation before. C was the ubiquitous language of its time. It ran on every platform, although each platform had its own interpretation of things like integer size. It was a higher-level, more portable language than was commonly in use at the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve become increasingly convinced that Javascript is following the path that C did a generation before.</p>
<p>C was the ubiquitous language of its time.  It ran on every platform, although each platform had its own interpretation of things like integer size.  It was a higher-level, more portable language than was commonly in use at the time.  It was syntactically fairly simple, with a few key ideas that it used heavily, like macros and pointers.  More than thirty years later, it&#8217;s still the interop language between different technical domains.  Younger, higher-level languages offer the ability to write speedier code in C or to hook into other code written in C.</p>
<p>Javascript is the ubiquitous language of the Web.  After a rocky start, it now runs on every Web browser, although some browsers interpret things differently and many users have configured their browsers differently.[1]  It allows more interactivity than preceding technologies (server-side manipulation and DHTML).  It&#8217;s syntactically quite simple, with a few key ideas that it uses heavily, like prototypes and first-class functions.  It&#8217;s used extremely heavily.  There are a large number of libraries built on it.  Other technologies (like Silverlight) are starting to build out from it.</p>
<p>I think that C and Javascript are both going to be with us forever.  I think that, just as C is increasingly the province of device drivers, compiler back-ends and heavily-optimized inner loops, Javascript is going to move into the background of Web programming, replaced by technologies we probably haven&#8217;t even met yet.  However, despite their spiffiness, the new VirtualSmellX and 4DSpline Web languages will have Javascript modules at their core and will exchange data in JSON.</p>
<p>(Confidential to social historians of the 22nd century: you guys are going to have So Much Fun.  &#8220;Rapid evolutionary change&#8221; doesn&#8217;t <em>begin</em> to cover it.)</p>
<p>[1] I once had to pay for a conference by hand-delivered check.  My idiosyncratic NoScript settings had convinced the registration software that I didn&#8217;t have to pay, and no amount of twiddling on my part would convince it to allow me to pay.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arlim.org/2009/10/16/javascript-is-the-new-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extension methods are so cool</title>
		<link>http://blog.arlim.org/2009/03/25/extension-methods-are-so-cool/</link>
		<comments>http://blog.arlim.org/2009/03/25/extension-methods-are-so-cool/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 05:41:06 +0000</pubDate>
		<dc:creator>Kim Wallmark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[enums]]></category>
		<category><![CDATA[extension methods]]></category>
		<category><![CDATA[language design]]></category>

		<guid isPermaLink="false">http://blog.arlim.org/?p=25</guid>
		<description><![CDATA[Enums in the C-family of languages have always been a little&#8230;anemic. Much better than a handful of ints, but anemic. If you want any actual behavior out of them, you either end up with a bag of functions stashed somewhere &#8220;convenient&#8221;, or rolling your own enum-like behavior in a full-on class. C# 3.0&#8242;s extension methods [...]]]></description>
			<content:encoded><![CDATA[<p>Enums in the C-family of languages have always been a little&#8230;anemic.  Much better than a handful of ints, but anemic.  If you want any actual behavior out of them, you either end up with a bag of functions stashed somewhere &#8220;convenient&#8221;, or rolling your own enum-like behavior in a full-on class.</p>
<p>C# 3.0&#8242;s extension methods bring first-class citizenship to enums, albeit in a way that reminds me more of Haskell&#8217;s modules than of C# classes.  Now we can have member functions for enum values!</p>
<p>(Hey Microsoft, any hope for an EnumOutOfRangeException when someone tries to cast an unsuitable int?  Please?)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arlim.org/2009/03/25/extension-methods-are-so-cool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostly const</title>
		<link>http://blog.arlim.org/2009/03/03/mostly-const/</link>
		<comments>http://blog.arlim.org/2009/03/03/mostly-const/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 07:57:40 +0000</pubDate>
		<dc:creator>Kim Wallmark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[patterns]]></category>

		<guid isPermaLink="false">http://blog.arlim.org/?p=10</guid>
		<description><![CDATA[I&#8217;m writing a simple maze program in Silverlight, as a way of getting used to the platform.  Once the maze is generated, it&#8217;s effectively constant, but while it&#8217;s being generated, there&#8217;s some tricksy interactions.  What I really want is to have an object that&#8217;s modifiable during generation, and locked-down afterward. The Java way to do [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing a simple maze program in Silverlight, as a way of getting used to the platform.  Once the maze is generated, it&#8217;s effectively constant, but while it&#8217;s being generated, there&#8217;s some tricksy interactions.  What I really want is to have an object that&#8217;s modifiable during generation, and locked-down afterward.</p>
<p>The Java way to do this is to have a restricted interface for the locked-down users, and a broader interface/class definition for the generation.  The dynamic language way to do this is to ignore the issue altogether.  I&#8217;m probably going to do this the Java way, but I wonder if there&#8217;s an idiomatic C# way to do this, or if this is another area in which C# and Java are content to be close siblings.  I also wonder if there&#8217;s a language-design way to move this pattern wholely into the responsibility-space of the compiler.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arlim.org/2009/03/03/mostly-const/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

