<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Wed, 18 Feb 2004 22:03:52 GMT -->
<rss version="2.0">
	<channel>
		<title>Jon Israelson: Ruby</title>
		<link>http://radio.weblogs.com/0124580/categories/ruby/</link>
		<description>Ruby Programming Language Topics</description>
		<language>en-us</language>
		<copyright>Copyright 2004 Jon Israelson</copyright>
		<lastBuildDate>Wed, 18 Feb 2004 22:03:52 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>jai89@attbi.com</managingEditor>
		<webMaster>jai89@attbi.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>23</hour>
			<hour>0</hour>
			<hour>1</hour>
			<hour>2</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>6</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<description>&lt;A href=&quot;http://www.pragprog.com/pragdave/Tech/Ruby/PoignantGuide.rdoc&quot;&gt;Why&apos;s Poignant Guide&lt;/A&gt;. A few months back, &lt;A href=&quot;http://www.whytheluckystiff.net/&quot;&gt;why the lucky stiff&lt;/A&gt; offered up a great &lt;A href=&quot;http://pragprog.com/pragdave/Practices/SyckWarranty.rdoc&quot;&gt;warranty&lt;/A&gt;. Now he&amp;#146;s at it again, tis time giving us the first glimpse of what looks like a &lt;A href=&quot;http://poignantguide.net/ruby/&quot;&gt;pretty unique approach&lt;/A&gt; to learning a computer language, in this case Ruby. It&amp;#146;s one of those sites that&amp;#146;s hard to stop reading: I hope we can convince him to produce a print version for the Pragmatic Bookshelf. [&lt;A href=&quot;http://www.pragprog.com/pragdave&quot;&gt;PragDave&lt;/A&gt;]</description>
			<guid>http://radio.weblogs.com/0124580/categories/ruby/2004/02/18.html#a123</guid>
			<pubDate>Wed, 18 Feb 2004 22:03:50 GMT</pubDate>
			<source url="http://www.pragprog.com/pragdave/index.rss">PragDave</source>
			<comments>http://radiocomments2.userland.com/comments?u=124580&amp;amp;p=123&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0124580%2F2004%2F02%2F18.html%23a123</comments>
			</item>
		<item>
			<description>&lt;A href=&quot;http://martinfowler.com/bliki/DomainSpecificLanguage.html&quot;&gt;Martin Fowler on Domain Specific Languages&lt;/A&gt;. &lt;A href=&quot;http://martinfowler.com/bliki/DomainSpecificLanguage.html&quot;&gt;Martin Fowler on DSLs&lt;/A&gt;... 
&lt;P&gt;&lt;I&gt;I&apos;ve always used the analogy of creating a DSL to help think about building up a design - developing classes and methods with an eye to making them be a DSL. As much as possible I do this within the language I&apos;m using, but if I can&apos;t I&apos;m very ready to switch to code generation. At ThoughtWorks we&apos;ve used code generation and similar techniques widely on our larger systems. The point at which I pull the separate language DSL lever is clearly different between languages. I never really felt the need in Smalltalk to use a separate language, while it&apos;s quite common in C++/Java/C#.&lt;/I&gt; [&lt;A href=&quot;http://lambda.weblogs.com/&quot;&gt;Lambda the Ultimate&lt;/A&gt;]&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0124580/categories/ruby/2004/02/13.html#a118</guid>
			<pubDate>Fri, 13 Feb 2004 22:31:14 GMT</pubDate>
			<source url="http://lambda.weblogs.com/xml/rss.xml">Lambda the Ultimate</source>
			<comments>http://radiocomments2.userland.com/comments?u=124580&amp;amp;p=118&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0124580%2F2004%2F02%2F13.html%23a118</comments>
			</item>
		<item>
			<description>&lt;A href=&quot;http://weblog.infoworld.com/udell/2004/02/11.html#a915&quot;&gt;Udell: Programs that write programs&lt;/A&gt;. Worth a look.
&lt;P&gt;Jon Bentley in &lt;I&gt;Bumper-Sticker Computer Science&lt;/I&gt; quotes Dick Sites as saying &lt;B&gt;I&apos;d rather write programs to write programs than write programs&lt;/B&gt;.
&lt;P&gt;For some reason I remembered this quote as saying &lt;I&gt;I&apos;d rather write programs to write programs to write programs than write programs to write programs&lt;/I&gt;.
&lt;P&gt;But maybe that&apos;s just me...
&lt;P&gt;[&lt;A href=&quot;http://lambda.weblogs.com/&quot;&gt;Lambda the Ultimate&lt;/A&gt;]&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0124580/categories/ruby/2004/02/13.html#a117</guid>
			<pubDate>Fri, 13 Feb 2004 22:29:27 GMT</pubDate>
			<source url="http://lambda.weblogs.com/xml/rss.xml">Lambda the Ultimate</source>
			<comments>http://radiocomments2.userland.com/comments?u=124580&amp;amp;p=117&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0124580%2F2004%2F02%2F13.html%23a117</comments>
			</item>
		<item>
			<description>&lt;A href=&quot;http://www.artima.com/index.jsp&quot;&gt;artima.com&lt;/A&gt; has posted the second in a series of interviews with Matz, the creator of &lt;A href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/A&gt;, titled &lt;A href=&quot;http://www.artima.com/intv/tuesday.html&quot;&gt;Dynamic Productivity with Ruby&lt;/A&gt;.</description>
			<guid>http://radio.weblogs.com/0124580/categories/ruby/2003/11/19.html#a101</guid>
			<pubDate>Wed, 19 Nov 2003 20:18:12 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=124580&amp;amp;p=101&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0124580%2F2003%2F11%2F19.html%23a101</comments>
			</item>
		<item>
			<description>&lt;A href=&quot;http://www.artima.com/intv/ruby.html&quot;&gt;The Philosophy of Ruby&lt;/A&gt;. &lt;FONT color=blue&gt;&lt;I&gt;Yukihiro Matsumoto, the creator of the Ruby programming language, talks with Bill Venners about Ruby&apos;s design philosophy, including design imperfection, the danger of orthogonality, and the importance of the human in computer endeavors.&lt;/I&gt;&lt;/FONT&gt; 
&lt;P&gt;Rather than discussing Ruby features in particular, Yukihiro Matsumoto explains the principles that guided him in the design of Ruby. Interestingly OO is never mentioned (perhaps it&apos;s taken for granted). 
&lt;P&gt;An interesting quote: 
&lt;P&gt;&lt;I&gt;Yukihiro Matsumoto: Language designers want to design the perfect language. They want to be able to say, &quot;My language is perfect. It can do everything.&quot; But it&apos;s just plain impossible to design a perfect language, because there are two ways to look at a language. One way is by looking at what can be done with that language. The other is by looking at how we feel using that language-how we feel while programming. 
&lt;P&gt;Because of the Turing completeness theory, everything one Turing-complete language can do can theoretically be done by another Turing-complete language, but at a different cost. ... 
&lt;P&gt;Instead of emphasizing the what, I want to emphasize the how part: how we feel while programming. That&apos;s Ruby&apos;s main difference from other language designs. I emphasize the feeling, in particular, how I feel using Ruby. I didn&apos;t work hard to make Ruby perfect for everyone, because you feel differently from me. No language can be perfect for everyone. I tried to make Ruby perfect for me, but maybe it&apos;s not perfect for you. The perfect language for Guido van Rossum is probably Python.&lt;/I&gt; 
&lt;P&gt;and also: 
&lt;P&gt;&lt;I&gt;Yukihiro Matsumoto: Ruby inherited the Perl philosophy of having more than one way to do the same thing. I inherited that philosophy from Larry Wall, who is my hero actually.&lt;/I&gt; [&lt;A href=&quot;http://lambda.weblogs.com/&quot;&gt;Lambda the Ultimate&lt;/A&gt;]
&lt;P&gt;&lt;FONT color=darkslategray&gt;I&apos;m a big fan of Ruby and this provides a view of the language from the perspective of its designer.&lt;/FONT&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0124580/categories/ruby/2003/10/17.html#a88</guid>
			<pubDate>Sat, 18 Oct 2003 00:23:07 GMT</pubDate>
			<source url="http://lambda.weblogs.com/xml/rss.xml">Lambda the Ultimate</source>
			<comments>http://radiocomments2.userland.com/comments?u=124580&amp;amp;p=88&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0124580%2F2003%2F10%2F17.html%23a88</comments>
			</item>
		<item>
			<description>&lt;A href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/A&gt; 1.8.0 is out!&amp;nbsp; Sources are ready for &lt;A href=&quot;http://www.ruby-lang.org/download-1.8.0.rbx&quot;&gt;download&lt;/A&gt;&amp;nbsp;as is&amp;nbsp;the list of &lt;A href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/1.8/changes.1.8.0&quot;&gt;changes&lt;/A&gt; since 1.6.x.&amp;nbsp; Binaries, including the Prag Programmer&apos;s &lt;A href=&quot;http://sourceforge.net/project/showfiles.php?group_id=67007&quot;&gt;Windows installer&lt;/A&gt;, should be available soon.</description>
			<guid>http://radio.weblogs.com/0124580/categories/ruby/2003/08/04.html#a66</guid>
			<pubDate>Tue, 05 Aug 2003 03:28:32 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=124580&amp;amp;p=66&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0124580%2F2003%2F08%2F04.html%23a66</comments>
			</item>
		<item>
			<description>&lt;P&gt;There were several good discussions on c.l.r today.&amp;nbsp; First up is &lt;A href=&quot;http://groups.google.com/groups?dq=&amp;amp;hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;safe=off&amp;amp;selm=3F28255C.6060500%40neurogami.com&amp;amp;rnum=1&quot;&gt;this one&lt;/A&gt; on Message-Object-Oriented compared to Function-Object-Oriented.&amp;nbsp; I was reading the originating article &lt;A href=&quot;http://radio.weblogs.com/0124580/2003/07/23.html#a59&quot;&gt;just the other day&lt;/A&gt;.&amp;nbsp; Anyway, the guy, James, that started the thread on c.l.r came up with a way to make Ruby syntax more like MOO.&amp;nbsp; It&apos;s ugly, but it shows how easy it is to manipulate Ruby.&amp;nbsp; Here&apos;s the magic:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=maroon&gt;&lt;EM&gt;I set about finding a way to do it in Ruby, and came up with an addition to the Symbol class. I wasn&apos;t sure if I wanted to have a full-blown Message class; I liked the idea that one could just type the message to send without having to go create a special object for it. The Symbol syntax makes this very natural&lt;BR&gt;&lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&lt;FONT color=teal&gt;class Symbol&lt;BR&gt;&amp;nbsp;&amp;nbsp; def &amp;gt;&amp;gt;( *args )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ary = []&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arglist&amp;nbsp; = (block_given? ? yield&amp;nbsp; : nil )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.each{ |obj|&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ary &amp;lt;&amp;lt; dispatch( obj, arglist&amp;nbsp; )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rescue Exception&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ary &amp;lt;&amp;lt; $!.clone&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ary&lt;BR&gt;&amp;nbsp;&amp;nbsp; end&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; def dispatch( obj, arglist&amp;nbsp; )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return obj.send(self.to_s, *arglist) if arglist &amp;amp;&amp;amp; (arglist.size&amp;gt;0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj.send( self.to_s )&lt;BR&gt;&amp;nbsp;&amp;nbsp; end&lt;BR&gt;end&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;This allows expressions like:&lt;BR&gt;&lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=maroon&gt;&lt;EM&gt;&lt;FONT color=teal&gt;:some_message.&amp;gt;&amp;gt; obj&lt;BR&gt;:some_message.&amp;gt;&amp;gt;( obj1, obj2 )&lt;BR&gt;:some_message.&amp;gt;&amp;gt;( obj1, obj2 ){&amp;nbsp; [ arg1, arg2, arg3]&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;Any message string, instantiated as a Symbol, can be dispatched to a list of objects, along with a set of message arguments.&amp;nbsp; The results come back as an array.&lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=black&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=black&gt;The second thread is about implementing &lt;A href=&quot;http://groups.google.com/groups?dq=&amp;amp;hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;safe=off&amp;amp;threadm=oprs46i4vjoglyup%40mail1.telia.com&amp;amp;prev=/groups%3Fhl%3Den%26lr%3D%26safe%3Doff%26group%3Dcomp.lang.ruby&quot;&gt;Ruby in Ruby&lt;/A&gt;.&amp;nbsp; This is the same idea demonstrated by creating a Lisp interpreter in Lisp.&amp;nbsp; &lt;A href=&quot;http://www.sidhe.org/~dan/blog/&quot;&gt;Dan Sugalski&lt;/A&gt; (of Parrot fame) started an interesting &lt;A href=&quot;http://groups.google.com/groups?dq=&amp;amp;hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;safe=off&amp;amp;threadm=oprs46i4vjoglyup%40mail1.telia.com&amp;amp;prev=/groups%3Fhl%3Den%26lr%3D%26safe%3Doff%26group%3Dcomp.lang.ruby&quot;&gt;thread&lt;/A&gt;.&amp;nbsp; See &lt;A href=&quot;http://www.ce.chalmers.se/~feldt/ruby/ideas/rubyvm/&quot;&gt;this&lt;/A&gt; for more along those lines.&lt;/FONT&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0124580/categories/ruby/2003/07/30.html#a61</guid>
			<pubDate>Thu, 31 Jul 2003 03:41:50 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=124580&amp;amp;p=61&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0124580%2F2003%2F07%2F30.html%23a61</comments>
			</item>
		</channel>
	</rss>

