<?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>thinking in geek &#187; smalltalk</title>
	<atom:link href="http://joshrobb.com/blog/category/smalltalk/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshrobb.com/blog</link>
	<description>tagline's are so web2.0</description>
	<lastBuildDate>Wed, 02 Jun 2010 14:47:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Turtles all the way down and the CLR (or JVM)</title>
		<link>http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/</link>
		<comments>http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/#comments</comments>
		<pubDate>Wed, 18 Apr 2007 17:24:25 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[smalltalk]]></category>

		<guid isPermaLink="false">http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/</guid>
		<description><![CDATA[Avi makes some comments here about the differences between scripting languages and &#8220;real&#8221; languages. His main point is that real languages (or maybe their VM&#8217;s) are fast enough to be extended in themselves. Now while I think I understand his underlying point &#8211; which is to attempt to clarify why smalltalk rocks (which it does) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://smallthought.com/avi/">Avi</a> makes some comments <a href="http://smallthought.com/avi/?p=20">here</a> about the differences between scripting languages and &#8220;real&#8221; languages.  His main point is that real languages (or maybe their VM&#8217;s) are fast enough to be extended in themselves. Now while I think I understand his underlying point &#8211; which is to attempt to clarify why smalltalk rocks (which it does) &#8211; I&#8217;m not sure I agree with his analysis.</p>
<p>As far as I&#8217;m aware &#8211; there&#8217;s no C <em>required</em> to run ruby on rails applications<sup>1</sup>. Rails is 100% ruby &#8211; aka Ruby extended in Ruby. It might be that thats not the kind of extension he&#8217;s talking about  &#8211; and in fact it&#8217;s not &#8211; he gives a Ruby example of the problem he&#8217;s talking about &#8211; creating a custom array subclass. Here&#8217;s an example of his code in C#.<br />
<code><br />
public class MyArray : Array {} //error CS0644: 'MyArray' cannot derive from special class 'System.Array'<br />
</code></p>
<ul>
<li>You can&#8217;t extend C# (or Java) in the way he&#8217;s trying to in Ruby.</li>
<li>You can&#8217;t add methods to java.lang.Object or System.Object &#8211; although extension methods in C# 3.0 will let you add behaviour &#8211; but not state.</li>
<li>You can&#8217;t modify the language syntax, add keywords etc&#8230; (no macro like features) the way you can in LISP or smalltalk.</li>
</ul>
<p>Conclusion: C#/Java (well &#8211; the JVM/CLR) are not turtles all the way down. In fact &#8211; Ruby is more deep turtle wise than C# or Java (ruby supports modules/mixins which are somewhat like extension methods in C# 3.0).</p>
<p><strong>Update:</strong> <a href="http://ayende.com/Blog/archive/2007/04/15/A-good-definition-of-scripting-languages.aspx">Ayende likes</a> what Avi says &#8211; looks like we might not agree on this.</p>
<ol class="footnotes"><li id="footnote_0_6" class="footnote">I&#8217;m aware <a href="http://mongrel.rubyforge.org/">mongrel</a> &#8211; a http server which is used for serving rails apps &#8211; has pieces written in C. This is equivalent to IIS for ASP.NET apps (and webrick == casinni &#8211; the VS.NET built in webserver vs Ruby&#8217;s pure Ruby webserver).</li></ol>]]></content:encoded>
			<wfw:commentRss>http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
