<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Tom Moertel's Weblog: It's official: I like Ruby</title>
    <link>http://blog.moertel.com/articles/2005/04/08/its-official-i-like-ruby</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Quality rants on programming theory and stuff geeks like</description>
    <item>
      <title>It's official: I like Ruby</title>
      <description>&lt;p&gt;Recently, I decided to spend some quality time with &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;. Two weeks of coding later, I&amp;#8217;m a happy man. Ruby is fun.&lt;/p&gt;


	&lt;p&gt;Did you hear that? &lt;em&gt;Ruby is fun.&lt;/em&gt; It made my list of Legitimately Fun Programming Languages and, if I am being honest, even edged out Perl:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Haskell&lt;/li&gt;
		&lt;li&gt;Ruby&lt;/li&gt;
		&lt;li&gt;Perl&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;(&lt;a href="http://www.haskell.org/"&gt;Haskell&lt;/a&gt; is still tops, but you knew that, right?)&lt;/p&gt;


	&lt;p&gt;Languages that don&amp;#8217;t thrill me anymore include C, C++, C#, and Java. Sorry guys, you&amp;#8217;re tedious. Hell, you don&amp;#8217;t even &lt;em&gt;listen&lt;/em&gt; to me. When I assign a string to a variable, why do you make me &lt;em&gt;tell you again&lt;/em&gt; that the variable is a string? Couldn&amp;#8217;t you figure that out for yourselves? It&amp;#8217;s like the left hand side doesn&amp;#8217;t know what the right hand side is doing! Yeeeesh!&lt;/p&gt;


	&lt;p&gt;Anyhoo, Ruby doesn&amp;#8217;t make me repeat myself. Ruby also supports many of my favorite functional programming idioms. For instance, the &lt;em&gt;inject&lt;/em&gt; method, available on all Enumerable objects, is actually my functional friend &lt;em&gt;foldl&lt;/em&gt;:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;foldl ( \x y -&amp;gt; ... ) z list   -- Haskell
list.inject(z) { |x,y| ... }   #  Ruby
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;And Ruby has &lt;em&gt;lambda&lt;/em&gt;, &lt;em&gt;callcc&lt;/em&gt;, and the strangely wonderful &lt;em&gt;binding&lt;/em&gt;. (But sadly no tail-call optimization.) Meta-programming is well supported and seems to be fairly commonplace in Ruby culture. I like that.&lt;/p&gt;


	&lt;p&gt;If you haven&amp;#8217;t tried Ruby, what&amp;#8217;s holding you back? Give it a test drive. You never know, you might actually have fun.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Apr 2005 12:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:9e1d680aae6e3c335632bc7ee217cb1c</guid>
      <author>Tom Moertel</author>
      <link>http://blog.moertel.com/articles/2005/04/08/its-official-i-like-ruby</link>
      <category>programming languages</category>
      <category>ruby</category>
      <trackback:ping>http://blog.moertel.com/articles/trackback/40</trackback:ping>
    </item>
  </channel>
</rss>
