<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.1.3" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: D vs Ruby</title>
	<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/</link>
	<description>Thoughts about high architecture and sheer speed.</description>
	<pubDate>Fri, 30 Jul 2010 10:24:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>

	<item>
		<title>By: pico</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-54</link>
		<author>pico</author>
		<pubDate>Fri, 17 Aug 2007 06:40:15 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-54</guid>
					<description>A couple of disagreements with your Ruby data, in the interest of fairness...

Architecture:  The comment about Ruby and interfaces.  I don't know any Ruby developers who use interfaces, or any kind of hackish restrictions on class implementations like you mention.  Ruby developers use "duck typing", i.e. if it walks like a duck and talks like a duck, it must be a duck.  It's more classes by contract:  I expect this class to implement this method.  If it doesn't, I'm going to throw an exception.  Not sure what Ruby developers you're talking to, but they're not hard-core Ruby coders if they're using interfaces.  Interfaces are irrelevant in a dynamic language.

Extensibility:  It's pretty easy and very well documented how to write a C-library interface in Ruby or use SWIG to wrap C libraries.  Check out RMagick and Ferret as examples.

Licensing:  Not sure where you're getting your information about Ruby...  Ruby is licensed under the MIT license, and Rails and most other Ruby libraries under the Ruby License, which is fairly close to the MIT license.  Both allow you to use both the language and the libraries in a closed-source commercial application with no penalty or licensing fee.

Libraries:  Most Ruby developers use the rubygems packaging system, which supports library versioning.  

Cross-platform:  D is miserable at cross-platform.  GDC still feels very rough compared to the D compiler.

That said, I like D a lot, but I found the point about libraries to be a huge drawback.  There were some seriously necessary libraries I needed in D, such as database drivers, that just weren't there, were buggy, or would compile differently on OS X and Linux under GDC versus Windows D compiler if at all.  Kind of outweighed the others enough that I used C and Python instead of D for the project I was looking at.

Ruby is an awesome language for its metaprogramming/DSL ability.  Rails is a great example of translating your business needs into a language to simplify the repetitive work (like creating DB model APIs).  There is some serious power there.</description>
		<content:encoded><![CDATA[<p>A couple of disagreements with your Ruby data, in the interest of fairness&#8230;</p>
<p>Architecture:  The comment about Ruby and interfaces.  I don&#8217;t know any Ruby developers who use interfaces, or any kind of hackish restrictions on class implementations like you mention.  Ruby developers use &#8220;duck typing&#8221;, i.e. if it walks like a duck and talks like a duck, it must be a duck.  It&#8217;s more classes by contract:  I expect this class to implement this method.  If it doesn&#8217;t, I&#8217;m going to throw an exception.  Not sure what Ruby developers you&#8217;re talking to, but they&#8217;re not hard-core Ruby coders if they&#8217;re using interfaces.  Interfaces are irrelevant in a dynamic language.</p>
<p>Extensibility:  It&#8217;s pretty easy and very well documented how to write a C-library interface in Ruby or use SWIG to wrap C libraries.  Check out RMagick and Ferret as examples.</p>
<p>Licensing:  Not sure where you&#8217;re getting your information about Ruby&#8230;  Ruby is licensed under the MIT license, and Rails and most other Ruby libraries under the Ruby License, which is fairly close to the MIT license.  Both allow you to use both the language and the libraries in a closed-source commercial application with no penalty or licensing fee.</p>
<p>Libraries:  Most Ruby developers use the rubygems packaging system, which supports library versioning.  </p>
<p>Cross-platform:  D is miserable at cross-platform.  GDC still feels very rough compared to the D compiler.</p>
<p>That said, I like D a lot, but I found the point about libraries to be a huge drawback.  There were some seriously necessary libraries I needed in D, such as database drivers, that just weren&#8217;t there, were buggy, or would compile differently on OS X and Linux under GDC versus Windows D compiler if at all.  Kind of outweighed the others enough that I used C and Python instead of D for the project I was looking at.</p>
<p>Ruby is an awesome language for its metaprogramming/DSL ability.  Rails is a great example of translating your business needs into a language to simplify the repetitive work (like creating DB model APIs).  There is some serious power there.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: IronRuby</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-55</link>
		<author>IronRuby</author>
		<pubDate>Fri, 17 Aug 2007 07:11:12 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-55</guid>
					<description>Hi,

Nice blog here, comparing D with Ruby. 

Ruby has now matured as Jruby (Version -1) and IronRuby (pre-alpha) and both have taken measures to make Ruby As faster as they can.

The performance problem is solved now at least in IronRuby. Now IronRuby gets the touch of DotNet Platform with many newly added advantages.

You should compare this in future with Jruby and IronRuby.

Just my Opinion.</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>Nice blog here, comparing D with Ruby. </p>
<p>Ruby has now matured as Jruby (Version -1) and IronRuby (pre-alpha) and both have taken measures to make Ruby As faster as they can.</p>
<p>The performance problem is solved now at least in IronRuby. Now IronRuby gets the touch of DotNet Platform with many newly added advantages.</p>
<p>You should compare this in future with Jruby and IronRuby.</p>
<p>Just my Opinion.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-56</link>
		<author>Valeriu Paloş</author>
		<pubDate>Fri, 17 Aug 2007 07:29:47 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-56</guid>
					<description>Ok, first of all, please keep in mind that I do not want to turn this thread into a flame-war about which is a better language: D or Ruby! (see the footnote of the post). I think such an endeavour is pointless especially considering the project at hand! You can think of this post as another perspective on the issue.

However, that being said I still *do* stand behind what I said (mostly).

&lt;em&gt;&gt; "...I don’t know any Ruby developers who use interfaces, or any kind of hackish restrictions on class implementations like you mention. Ruby developers use “duck typing”, i.e. if it walks like a duck and talks like a duck, it must be a duck. It’s more classes by contract: I expect this class to implement this method. If it doesn’t, I’m going to throw an exception..."&lt;/em&gt;

Here's a discussion about implementing interfaces in Ruby &lt;a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/60616" rel="nofollow"&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/60616&lt;/a&gt;.

So, my argument was that in *large* architectures (especially, although not only) interfaces (or any kind of pure virtual prototypes) are a *very* useful feature that helps a lot when a bunch of programmers have to extend / improve / debug / etc. the software at hand. It is true that duck typing is characteristic to dynamic languages but that does *not* mean that it is an entirely better solution than interfaces and that it could replace interfaces.

Also, at least to me, it seems unfeasible to rely on the fact that your host source code calls the right methods and the guest source implements the right methods all that being let at the hands of exceptions being thrown (although, as I said, this could turn into a productive benefit, but only if working on smaller scale projects).

Having a common denominator (an interface) between the host and guest source codes is a huge benefit when the application architecture grows considerably (at the cost of one being required to write the interfaces). This leads to more harmonious code interactions, and it is less error prone.

&lt;em&gt;&gt; "It’s pretty easy and very well documented how to write a C-library interface in Ruby or use SWIG to wrap C libraries. Check out RMagick and Ferret as examples."&lt;/em&gt;

I'm not sure how *easy* it is since you yourself said that one needs to *wrap* C libraries with SWIG and such or to write interfaces to C libraries. Of course Ruby can be extended through C, but that does not mean it's *anything* like what D does. Also, the entire issue of connecting from D/Ruby to C/C++ libraries is much broader and (I repeat) writing C extensions for Ruby in a way disconnects your C code from your Ruby code in your application, because Ruby extensions were essentially designed to extend *the Ruby language* and *not* your applications (even though this can be done).

&lt;em&gt;&gt; "Not sure where you’re getting your information about Ruby… Ruby is licensed under the MIT license, and Rails and most other Ruby libraries under the Ruby License, which is fairly close to the MIT license. Both allow you to use both the language and the libraries in a closed-source commercial application with no penalty or licensing fee."&lt;/em&gt;

I have to agree with you here. You are totally correct. I don't know what was wrong with me, but I know I was really tired. I mixed up some licenses and didn't realize it. Thanks for correcting this, I'll do an edit of the post.

&lt;em&gt;&gt; "Most Ruby developers use the rubygems packaging system, which supports library versioning."&lt;/em&gt;

True, but what I was hoping for was a way to add C extensions to Ruby and have them versioned (and possibly attach other information as well).

&lt;em&gt;&gt; "D is miserable at cross-platform. GDC still feels very rough compared to the D compiler."
&gt; "There were some seriously necessary libraries I needed in D, such as database drivers, that just weren’t there, were buggy, or would compile differently on OS X and Linux under GDC versus Windows D compiler if at all."&lt;/em&gt;

I agree that D is lower on tha scale of cross-platform-ness than Ruby but as I said there are compilers for the major operating systems and I have to say that I didn't run into the problems you talk about. the DBI database interaction layer worked very well for me. Also the GDC compiler has made great improvements, especially since the DMD compiler reached version 1.0 which marked the end of significant changes in language design. GDC is pretty cool.

Also I agree that the D community and library collection is rather limited at the moment (hence the grade). I would also like to see an ORM implementation for D (I *have* seen one project that begun this but I can't remember the name).

&lt;em&gt;&gt; "Ruby is an awesome language for its metaprogramming/DSL ability. Rails is a great example of translating your business needs into a language to simplify the repetitive work (like creating DB model APIs). There is some serious power there."&lt;/em&gt;

Of course that's true, but that's not what I'm after here. Remember, the target is a new (4th generation) programming language.

Cheers! :)</description>
		<content:encoded><![CDATA[<p>Ok, first of all, please keep in mind that I do not want to turn this thread into a flame-war about which is a better language: D or Ruby! (see the footnote of the post). I think such an endeavour is pointless especially considering the project at hand! You can think of this post as another perspective on the issue.</p>
<p>However, that being said I still *do* stand behind what I said (mostly).</p>
<p><em>> &#8220;&#8230;I don’t know any Ruby developers who use interfaces, or any kind of hackish restrictions on class implementations like you mention. Ruby developers use “duck typing”, i.e. if it walks like a duck and talks like a duck, it must be a duck. It’s more classes by contract: I expect this class to implement this method. If it doesn’t, I’m going to throw an exception&#8230;&#8221;</em></p>
<p>Here&#8217;s a discussion about implementing interfaces in Ruby <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/60616" rel="nofollow">http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/60616</a>.</p>
<p>So, my argument was that in *large* architectures (especially, although not only) interfaces (or any kind of pure virtual prototypes) are a *very* useful feature that helps a lot when a bunch of programmers have to extend / improve / debug / etc. the software at hand. It is true that duck typing is characteristic to dynamic languages but that does *not* mean that it is an entirely better solution than interfaces and that it could replace interfaces.</p>
<p>Also, at least to me, it seems unfeasible to rely on the fact that your host source code calls the right methods and the guest source implements the right methods all that being let at the hands of exceptions being thrown (although, as I said, this could turn into a productive benefit, but only if working on smaller scale projects).</p>
<p>Having a common denominator (an interface) between the host and guest source codes is a huge benefit when the application architecture grows considerably (at the cost of one being required to write the interfaces). This leads to more harmonious code interactions, and it is less error prone.</p>
<p><em>> &#8220;It’s pretty easy and very well documented how to write a C-library interface in Ruby or use SWIG to wrap C libraries. Check out RMagick and Ferret as examples.&#8221;</em></p>
<p>I&#8217;m not sure how *easy* it is since you yourself said that one needs to *wrap* C libraries with SWIG and such or to write interfaces to C libraries. Of course Ruby can be extended through C, but that does not mean it&#8217;s *anything* like what D does. Also, the entire issue of connecting from D/Ruby to C/C++ libraries is much broader and (I repeat) writing C extensions for Ruby in a way disconnects your C code from your Ruby code in your application, because Ruby extensions were essentially designed to extend *the Ruby language* and *not* your applications (even though this can be done).</p>
<p><em>> &#8220;Not sure where you’re getting your information about Ruby… Ruby is licensed under the MIT license, and Rails and most other Ruby libraries under the Ruby License, which is fairly close to the MIT license. Both allow you to use both the language and the libraries in a closed-source commercial application with no penalty or licensing fee.&#8221;</em></p>
<p>I have to agree with you here. You are totally correct. I don&#8217;t know what was wrong with me, but I know I was really tired. I mixed up some licenses and didn&#8217;t realize it. Thanks for correcting this, I&#8217;ll do an edit of the post.</p>
<p><em>> &#8220;Most Ruby developers use the rubygems packaging system, which supports library versioning.&#8221;</em></p>
<p>True, but what I was hoping for was a way to add C extensions to Ruby and have them versioned (and possibly attach other information as well).</p>
<p><em>> &#8220;D is miserable at cross-platform. GDC still feels very rough compared to the D compiler.&#8221;<br />
> &#8220;There were some seriously necessary libraries I needed in D, such as database drivers, that just weren’t there, were buggy, or would compile differently on OS X and Linux under GDC versus Windows D compiler if at all.&#8221;</em></p>
<p>I agree that D is lower on tha scale of cross-platform-ness than Ruby but as I said there are compilers for the major operating systems and I have to say that I didn&#8217;t run into the problems you talk about. the DBI database interaction layer worked very well for me. Also the GDC compiler has made great improvements, especially since the DMD compiler reached version 1.0 which marked the end of significant changes in language design. GDC is pretty cool.</p>
<p>Also I agree that the D community and library collection is rather limited at the moment (hence the grade). I would also like to see an ORM implementation for D (I *have* seen one project that begun this but I can&#8217;t remember the name).</p>
<p><em>> &#8220;Ruby is an awesome language for its metaprogramming/DSL ability. Rails is a great example of translating your business needs into a language to simplify the repetitive work (like creating DB model APIs). There is some serious power there.&#8221;</em></p>
<p>Of course that&#8217;s true, but that&#8217;s not what I&#8217;m after here. Remember, the target is a new (4th generation) programming language.</p>
<p>Cheers! :)</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-57</link>
		<author>Valeriu Paloş</author>
		<pubDate>Fri, 17 Aug 2007 07:50:17 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-57</guid>
					<description>&lt;em&gt;&gt; "You should compare this in future with Jruby and IronRuby."&lt;/em&gt;

Nice suggestion. However, I dont think that I am the right person for such a comparison mainly because I'm not familiar with these implementations since I was not interested in a Java or .NET implementation in the first place. I will not go into my reasoning now since it is beside the point (although I think it is very good that the Ruby language is ported into as many programming "circles" as possible - everyone can benefit).

Still, I would love to see someone else try this (and maybe post a link here, on this blog). Really!, that would be a very cool thing to study.</description>
		<content:encoded><![CDATA[<p><em>> &#8220;You should compare this in future with Jruby and IronRuby.&#8221;</em></p>
<p>Nice suggestion. However, I dont think that I am the right person for such a comparison mainly because I&#8217;m not familiar with these implementations since I was not interested in a Java or .NET implementation in the first place. I will not go into my reasoning now since it is beside the point (although I think it is very good that the Ruby language is ported into as many programming &#8220;circles&#8221; as possible - everyone can benefit).</p>
<p>Still, I would love to see someone else try this (and maybe post a link here, on this blog). Really!, that would be a very cool thing to study.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Joao Pedrosa</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-59</link>
		<author>Joao Pedrosa</author>
		<pubDate>Fri, 17 Aug 2007 11:35:12 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-59</guid>
					<description>I'm a Ruby and JavaScript programmer, but I once gave D a look as well. I didn't like it as much as I like Ruby, so D never had a chance with me. At the time I took a look at some GUI libraries for D, and I even came across the "D SourceForge-like" site. Cool stuff! I could see that D had some momentum, some well deserved momentum perhaps. But for the things I was doing, Ruby had become much better for me than most languages, so other languages never had a choice with me.

This year I started using JavaScript for pragmatic purposes, and now I am a little less enthusiast about Ruby than before as I have to work with both languages which made me more confident in Ruby and in myself.

BTW, if the difference is mostly speed, the 7 points of the difference are pretty irrelevant if the person finds Ruby fast enough, which is the case many times. For example, I have my own Web Framework which uses Mongrel and Nginx for the server and with careful algorithms and architecture, I'm happy with the performance I get. And I am happy that Ruby is being supported in Java and .NET so in the future, should I need something else, I will be able to keep current by using Ruby. :-)

Cheers.</description>
		<content:encoded><![CDATA[<p>I&#8217;m a Ruby and JavaScript programmer, but I once gave D a look as well. I didn&#8217;t like it as much as I like Ruby, so D never had a chance with me. At the time I took a look at some GUI libraries for D, and I even came across the &#8220;D SourceForge-like&#8221; site. Cool stuff! I could see that D had some momentum, some well deserved momentum perhaps. But for the things I was doing, Ruby had become much better for me than most languages, so other languages never had a choice with me.</p>
<p>This year I started using JavaScript for pragmatic purposes, and now I am a little less enthusiast about Ruby than before as I have to work with both languages which made me more confident in Ruby and in myself.</p>
<p>BTW, if the difference is mostly speed, the 7 points of the difference are pretty irrelevant if the person finds Ruby fast enough, which is the case many times. For example, I have my own Web Framework which uses Mongrel and Nginx for the server and with careful algorithms and architecture, I&#8217;m happy with the performance I get. And I am happy that Ruby is being supported in Java and .NET so in the future, should I need something else, I will be able to keep current by using Ruby. :-)</p>
<p>Cheers.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jarrett Billingsley</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-60</link>
		<author>Jarrett Billingsley</author>
		<pubDate>Fri, 17 Aug 2007 15:16:29 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-60</guid>
					<description>In your article you mention that MiniD is "interpreted D"; this isn't quite right.  It's an entirely separate language, based more on Lua than anything else.

But I'm still very happy that you saw my language :D</description>
		<content:encoded><![CDATA[<p>In your article you mention that MiniD is &#8220;interpreted D&#8221;; this isn&#8217;t quite right.  It&#8217;s an entirely separate language, based more on Lua than anything else.</p>
<p>But I&#8217;m still very happy that you saw my language :D</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Anders Bergh</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-61</link>
		<author>Anders Bergh</author>
		<pubDate>Fri, 17 Aug 2007 15:25:17 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-61</guid>
					<description>Remember that Ruby has to be ported to every platform that you want to run it on. I think there's very little difference between D / Ruby when it comes to cross-platform compatibility, unless all of Ruby is written in ANSI C like Lua.</description>
		<content:encoded><![CDATA[<p>Remember that Ruby has to be ported to every platform that you want to run it on. I think there&#8217;s very little difference between D / Ruby when it comes to cross-platform compatibility, unless all of Ruby is written in ANSI C like Lua.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-62</link>
		<author>Valeriu Paloş</author>
		<pubDate>Fri, 17 Aug 2007 16:09:56 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-62</guid>
					<description>&lt;em&gt;&gt; "In your article you mention that MiniD is “interpreted D”; this isn’t quite right. It’s an entirely separate language, based more on Lua than anything else."&lt;/em&gt;

You're quite right. I'm glad you took the time to correct this. I'll edit the post so that others won't be induced in error. Anyway, keep up the very good work. :)</description>
		<content:encoded><![CDATA[<p><em>> &#8220;In your article you mention that MiniD is “interpreted D”; this isn’t quite right. It’s an entirely separate language, based more on Lua than anything else.&#8221;</em></p>
<p>You&#8217;re quite right. I&#8217;m glad you took the time to correct this. I&#8217;ll edit the post so that others won&#8217;t be induced in error. Anyway, keep up the very good work. :)</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-63</link>
		<author>Valeriu Paloş</author>
		<pubDate>Fri, 17 Aug 2007 16:21:47 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-63</guid>
					<description>In reply to Joao Pedrosa:

I agree, but the final conclusion is heavily weighted on what you need. If you are involved in projects that rely on dynamic script-like programming (maybe web oriented) then Ruby is very hard to beat (even considering its speed issues). I also admit that the mind-boggling speed of web-servers like Nginx somewhat compensates for Ruby's drawbacks.

A propos, I would *very* much like to see some simple speed tests between Ruby and D against Nginx and see the results (regardless of the fact that benchmarks are generally inaccurate and more subjective than anyone might whish).</description>
		<content:encoded><![CDATA[<p>In reply to Joao Pedrosa:</p>
<p>I agree, but the final conclusion is heavily weighted on what you need. If you are involved in projects that rely on dynamic script-like programming (maybe web oriented) then Ruby is very hard to beat (even considering its speed issues). I also admit that the mind-boggling speed of web-servers like Nginx somewhat compensates for Ruby&#8217;s drawbacks.</p>
<p>A propos, I would *very* much like to see some simple speed tests between Ruby and D against Nginx and see the results (regardless of the fact that benchmarks are generally inaccurate and more subjective than anyone might whish).</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Kashia</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-64</link>
		<author>Kashia</author>
		<pubDate>Fri, 17 Aug 2007 16:50:47 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-64</guid>
					<description>Btw, Ares (from sean_k, a low level D standard library replacement) is the predecessor to Tango (together with Mango from Kris, a general purpose library), not something seperate or new to come.  The only other stdlib I know is being developed is libd (very low level, from maide I think).

To nginx performance, that only helps when used as a proxy + static file serving with several backends.  Watch out for Swiftiply for 'almost exclusivly dynamic'-webapps.

Oh btw, you can even bridge D to Ruby, I did that as an exercise, works like a charm and you get the best of two worlds.  Now, if coding C once in a while wouldn't make so much fun.  :P</description>
		<content:encoded><![CDATA[<p>Btw, Ares (from sean_k, a low level D standard library replacement) is the predecessor to Tango (together with Mango from Kris, a general purpose library), not something seperate or new to come.  The only other stdlib I know is being developed is libd (very low level, from maide I think).</p>
<p>To nginx performance, that only helps when used as a proxy + static file serving with several backends.  Watch out for Swiftiply for &#8216;almost exclusivly dynamic&#8217;-webapps.</p>
<p>Oh btw, you can even bridge D to Ruby, I did that as an exercise, works like a charm and you get the best of two worlds.  Now, if coding C once in a while wouldn&#8217;t make so much fun.  :P</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Lars Ivar Igesund</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-65</link>
		<author>Lars Ivar Igesund</author>
		<pubDate>Fri, 17 Aug 2007 18:13:45 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-65</guid>
					<description>On standard libraries; Ares is no longer developed as it is now the core in Tango (together with large parts of the old Mango, although it still has features not in Tango).</description>
		<content:encoded><![CDATA[<p>On standard libraries; Ares is no longer developed as it is now the core in Tango (together with large parts of the old Mango, although it still has features not in Tango).</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: jh</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-66</link>
		<author>jh</author>
		<pubDate>Sat, 18 Aug 2007 04:15:59 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-66</guid>
					<description>I think you left out a reasonable candidate language in your initial comparison: OCaml. It isn't as well-known outside of language research circles, but the ML family of languages were made to assist in algorithm provability: as an indirect result, they optimize well and catch a lot of errors at compile time - many more than C-style languages, including D.

OCaml allows C function calls and has mature libraries in several categories - better than the D ones the last time I checked. It's the most popular ML right now, and has been used on a few commercial projects as well as in academia. It is considered a good choice for new compilers; the haXe language, for example, uses OCaml for its compiler. (also see: http://compilers.iecc.com/comparch/article/98-07-220 )

It has type inference, which means that in a lot of situations the syntax can look breezy like Ruby or Python code, but the compiler can still tell you when something looks wrong. This, along with the functional programming features, gives it a fairly large subset of the things that are mostly associated with interpreted languages.

If nothing else, this will give you something to chew on.</description>
		<content:encoded><![CDATA[<p>I think you left out a reasonable candidate language in your initial comparison: OCaml. It isn&#8217;t as well-known outside of language research circles, but the ML family of languages were made to assist in algorithm provability: as an indirect result, they optimize well and catch a lot of errors at compile time - many more than C-style languages, including D.</p>
<p>OCaml allows C function calls and has mature libraries in several categories - better than the D ones the last time I checked. It&#8217;s the most popular ML right now, and has been used on a few commercial projects as well as in academia. It is considered a good choice for new compilers; the haXe language, for example, uses OCaml for its compiler. (also see: <a href="http://compilers.iecc.com/comparch/article/98-07-220" rel="nofollow">http://compilers.iecc.com/comparch/article/98-07-220</a> )</p>
<p>It has type inference, which means that in a lot of situations the syntax can look breezy like Ruby or Python code, but the compiler can still tell you when something looks wrong. This, along with the functional programming features, gives it a fairly large subset of the things that are mostly associated with interpreted languages.</p>
<p>If nothing else, this will give you something to chew on.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-67</link>
		<author>Valeriu Paloş</author>
		<pubDate>Sat, 18 Aug 2007 04:48:59 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-67</guid>
					<description>Quite an interesting point, I agree. Thanks for the insight jh.

I have to admit that I am not at all familiarized with OCaml (although I seem to hear about it quite a bit lately).

I'm intrigued... I'll have a look.</description>
		<content:encoded><![CDATA[<p>Quite an interesting point, I agree. Thanks for the insight jh.</p>
<p>I have to admit that I am not at all familiarized with OCaml (although I seem to hear about it quite a bit lately).</p>
<p>I&#8217;m intrigued&#8230; I&#8217;ll have a look.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: she</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-68</link>
		<author>she</author>
		<pubDate>Sat, 18 Aug 2007 12:48:44 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-68</guid>
					<description>I think the biggest problem is comparing static code to interpreted one. You know that people who choose ruby dont do so because of the speed, right? :)

And ruby code is still a lot easier to read and understand than any of the has-to-compile versions, be it java c# c++ or D</description>
		<content:encoded><![CDATA[<p>I think the biggest problem is comparing static code to interpreted one. You know that people who choose ruby dont do so because of the speed, right? :)</p>
<p>And ruby code is still a lot easier to read and understand than any of the has-to-compile versions, be it java c# c++ or D</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: It&#8217;s perfectly acceptable to compare compiled and interpreted programming languages.</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-69</link>
		<author>It&#8217;s perfectly acceptable to compare compiled and interpreted programming languages.</author>
		<pubDate>Sat, 18 Aug 2007 15:03:22 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-69</guid>
					<description>[...] useless to compare compiled and interpreted programming languages. The target of his wrath is this comparison of D and Ruby, with it claimed that it is &#8220;comparing apples to [...] (&lt;a href="http://pinderkent.blogsavy.com/archives/106" rel="nofollow"&gt;read the rest&lt;/a&gt;)</description>
		<content:encoded><![CDATA[<p>[&#8230;] useless to compare compiled and interpreted programming languages. The target of his wrath is this comparison of D and Ruby, with it claimed that it is &#8220;comparing apples to [&#8230;] (<a href="http://pinderkent.blogsavy.com/archives/106" rel="nofollow">read the rest</a>)</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-70</link>
		<author>Valeriu Paloş</author>
		<pubDate>Sat, 18 Aug 2007 15:31:33 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-70</guid>
					<description>Well put!, Thanks.

I would also like to add that there are many languages that make use of compiled or interpreted code and all are still called "all-purpose". Moreover there are languages that further dissipate the separation line between these two concepts by actually using a mixture of them (like Java uses precompiled bytecode).

So I agree with the concept that this all a matter of perspective.

Also, I think *any* comparison between two (or more) languages *has* to be made in the relative context of a certain goal (some type of project). This would give meaning to the comparison, since most languages were created in a certain (different) way, to achieve a certain something that others can not (or can but with difficulties).

Cheers :)</description>
		<content:encoded><![CDATA[<p>Well put!, Thanks.</p>
<p>I would also like to add that there are many languages that make use of compiled or interpreted code and all are still called &#8220;all-purpose&#8221;. Moreover there are languages that further dissipate the separation line between these two concepts by actually using a mixture of them (like Java uses precompiled bytecode).</p>
<p>So I agree with the concept that this all a matter of perspective.</p>
<p>Also, I think *any* comparison between two (or more) languages *has* to be made in the relative context of a certain goal (some type of project). This would give meaning to the comparison, since most languages were created in a certain (different) way, to achieve a certain something that others can not (or can but with difficulties).</p>
<p>Cheers :)</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: jk</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-71</link>
		<author>jk</author>
		<pubDate>Sat, 18 Aug 2007 17:30:10 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-71</guid>
					<description>In terms of improving Ruby speed you could also throw a look at rocaml, see http://www.rubyinside.com/rocaml-write-ruby-extensions-in-ocaml-544.html for more information.</description>
		<content:encoded><![CDATA[<p>In terms of improving Ruby speed you could also throw a look at rocaml, see <a href="http://www.rubyinside.com/rocaml-write-ruby-extensions-in-ocaml-544.html" rel="nofollow">http://www.rubyinside.com/rocaml-write-ruby-extensions-in-ocaml-544.html</a> for more information.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: 고감자</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-72</link>
		<author>고감자</author>
		<pubDate>Sun, 19 Aug 2007 05:38:39 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-72</guid>
					<description>I have been using both programming language. 

D was developed aimed to system programming, but Ruby was aimed to joy of programming. 
they have difffenent aim, so it's difficult to compare.  

I think, It's important  to think of your aim what you programming for. 

System programming or Web Programming?</description>
		<content:encoded><![CDATA[<p>I have been using both programming language. </p>
<p>D was developed aimed to system programming, but Ruby was aimed to joy of programming.<br />
they have difffenent aim, so it&#8217;s difficult to compare.  </p>
<p>I think, It&#8217;s important  to think of your aim what you programming for. </p>
<p>System programming or Web Programming?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Yauheni Akhotnikau</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-73</link>
		<author>Yauheni Akhotnikau</author>
		<pubDate>Sun, 19 Aug 2007 08:55:12 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-73</guid>
					<description>You forgot about dynamic code updates in Ruby. In Ruby you can replace any class/module/method implementation on the fly. It means that you can fix bugs or upload new features into 24x7 systems without stopping it.

Ruby is very mature language. Even with development 1.9 which introduces some incompatible language changes Ruby 1.8 remains stable and widespreaded platform. D in not mature, even more -- D2.0 is not compatible with D1.0 and D1.0 has no significant addoption.</description>
		<content:encoded><![CDATA[<p>You forgot about dynamic code updates in Ruby. In Ruby you can replace any class/module/method implementation on the fly. It means that you can fix bugs or upload new features into 24&#215;7 systems without stopping it.</p>
<p>Ruby is very mature language. Even with development 1.9 which introduces some incompatible language changes Ruby 1.8 remains stable and widespreaded platform. D in not mature, even more -- D2.0 is not compatible with D1.0 and D1.0 has no significant addoption.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-74</link>
		<author>Valeriu Paloş</author>
		<pubDate>Sun, 19 Aug 2007 09:38:51 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-74</guid>
					<description>&lt;em&gt;&gt; "I think, It’s important to think of your aim what you programming for."&lt;/em&gt;

I agree.</description>
		<content:encoded><![CDATA[<p><em>> &#8220;I think, It’s important to think of your aim what you programming for.&#8221;</em></p>
<p>I agree.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-75</link>
		<author>Valeriu Paloş</author>
		<pubDate>Sun, 19 Aug 2007 09:45:20 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-75</guid>
					<description>&lt;em&gt;&gt; "In Ruby you can replace any class/module/method implementation on the fly."&lt;/em&gt;

I agree this is a major plus for Ruby (hence the higher grade for ruby architecture), however, I did not forget it! It just seemed to me that this feature is more appropriate for use when dealing with enterprise or web oriented applications (the end result) and not my project.

As far as being able to replace/update/improve the software without stopping it, that can be done beautifully with D by using DDL plugin architecture. In fact this very concept is something that I really want in my code: the ability to upgrade pieces of the program on the fly.</description>
		<content:encoded><![CDATA[<p><em>> &#8220;In Ruby you can replace any class/module/method implementation on the fly.&#8221;</em></p>
<p>I agree this is a major plus for Ruby (hence the higher grade for ruby architecture), however, I did not forget it! It just seemed to me that this feature is more appropriate for use when dealing with enterprise or web oriented applications (the end result) and not my project.</p>
<p>As far as being able to replace/update/improve the software without stopping it, that can be done beautifully with D by using DDL plugin architecture. In fact this very concept is something that I really want in my code: the ability to upgrade pieces of the program on the fly.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Christopher Nicholson-Sauls</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-76</link>
		<author>Christopher Nicholson-Sauls</author>
		<pubDate>Sun, 19 Aug 2007 17:47:03 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-76</guid>
					<description>Some interesting points, and I would like to point out to some people that it was afterall just 7 little points that let D when for your project.  Hardly a landslide.  :)

I count myself both a D developer and a Ruby developer, going through trains of thought much like your own when deciding what to use for something.  There are just some times when Ruby has inescapable advantages -- in one case I needed a simple program to do a task, and needed it very fast... it ended up being all of two lines in Ruby.  (Granted, they were two convoluted lines.)

One last thing: in the area of scripting, don't forget PyD, the Python binding.  Its been a highly inspirational project at the least.</description>
		<content:encoded><![CDATA[<p>Some interesting points, and I would like to point out to some people that it was afterall just 7 little points that let D when for your project.  Hardly a landslide.  :)</p>
<p>I count myself both a D developer and a Ruby developer, going through trains of thought much like your own when deciding what to use for something.  There are just some times when Ruby has inescapable advantages -- in one case I needed a simple program to do a task, and needed it very fast&#8230; it ended up being all of two lines in Ruby.  (Granted, they were two convoluted lines.)</p>
<p>One last thing: in the area of scripting, don&#8217;t forget PyD, the Python binding.  Its been a highly inspirational project at the least.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-77</link>
		<author>Valeriu Paloş</author>
		<pubDate>Mon, 20 Aug 2007 02:45:39 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-77</guid>
					<description>&lt;em&gt;&gt; "...it was afterall just 7 little points that let D when for your project. Hardly a landslide. :)"&lt;/em&gt;

Correct! However, (as I already stated somewhere else) depending on what are the priorities of your project and your personal preferences those 7 points may weigh more or less (weird I know, but real!). In my case, in the end, the speed benefits of D weighted more.

&lt;em&gt;&gt; "There are just some times when Ruby has inescapable advantages."
&lt;/em&gt;
Of course!, and I tried to show this through the grades, especially for productivity! I was close to giving Ruby a full 10 at this point.

&lt;em&gt;&gt; "...don’t forget PyD, the Python binding. Its been a highly inspirational project at the least."&lt;/em&gt;

I am very glad when other people recommend different software implementations on the side of the subject.
&lt;a href="http://pyd.dsource.org/" rel="nofollow"&gt;Here's a link&lt;/a&gt; to PyD for the interested.


This is great, thanks!</description>
		<content:encoded><![CDATA[<p><em>> &#8220;&#8230;it was afterall just 7 little points that let D when for your project. Hardly a landslide. :)&#8221;</em></p>
<p>Correct! However, (as I already stated somewhere else) depending on what are the priorities of your project and your personal preferences those 7 points may weigh more or less (weird I know, but real!). In my case, in the end, the speed benefits of D weighted more.</p>
<p><em>> &#8220;There are just some times when Ruby has inescapable advantages.&#8221;<br />
</em><br />
Of course!, and I tried to show this through the grades, especially for productivity! I was close to giving Ruby a full 10 at this point.</p>
<p><em>> &#8220;&#8230;don’t forget PyD, the Python binding. Its been a highly inspirational project at the least.&#8221;</em></p>
<p>I am very glad when other people recommend different software implementations on the side of the subject.<br />
<a href="http://pyd.dsource.org/" rel="nofollow">Here&#8217;s a link</a> to PyD for the interested.</p>
<p>This is great, thanks!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Jon Harrop</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-78</link>
		<author>Jon Harrop</author>
		<pubDate>Fri, 24 Aug 2007 09:01:12 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-78</guid>
					<description>I think you'll find OCaml or F# beat both D and Ruby hands down in almost every respect. Particularly, OCaml for performance and F# for web programming.</description>
		<content:encoded><![CDATA[<p>I think you&#8217;ll find OCaml or F# beat both D and Ruby hands down in almost every respect. Particularly, OCaml for performance and F# for web programming.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Valeriu Paloş</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-79</link>
		<author>Valeriu Paloş</author>
		<pubDate>Fri, 24 Aug 2007 09:20:50 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-79</guid>
					<description>&lt;em&gt;&gt; "OCaml or F# beat both D and Ruby hands down in almost every respect."&lt;/em&gt;

That's insane! I don't understand how you can say that F# is better than Ruby for web programming: think about the cross-platform compatibility implications, the architectural advantages of Ruby (like advanced meta-programming), and there are so many other things to say here.

Also, what were they thinking when they made a language where you can still see something like the "let" statement? Now, I have no doubt that F#, being a functional language has its advantages but even so, it would be impossible to beat Ruby "in every respect". Again, I don't think two languages should be compared out of the context of a target project.

As for the OCaml part, I still don't see how it could beat D for &lt;a href="http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&#038;lang=dlang&#038;lang2=ocaml" rel="nofollow"&gt;sheer speed&lt;/a&gt;, what I think that OCaml truly has got over D is its maturity level (which in time becomes relative)!

PS: Also, F# and OCaml syntaxes are not as naturally intuitive for C/C++/Java/PHP progammers as D's or even Ruby's syntax.</description>
		<content:encoded><![CDATA[<p><em>> &#8220;OCaml or F# beat both D and Ruby hands down in almost every respect.&#8221;</em></p>
<p>That&#8217;s insane! I don&#8217;t understand how you can say that F# is better than Ruby for web programming: think about the cross-platform compatibility implications, the architectural advantages of Ruby (like advanced meta-programming), and there are so many other things to say here.</p>
<p>Also, what were they thinking when they made a language where you can still see something like the &#8220;let&#8221; statement? Now, I have no doubt that F#, being a functional language has its advantages but even so, it would be impossible to beat Ruby &#8220;in every respect&#8221;. Again, I don&#8217;t think two languages should be compared out of the context of a target project.</p>
<p>As for the OCaml part, I still don&#8217;t see how it could beat D for <a href="http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&#038;lang=dlang&#038;lang2=ocaml" rel="nofollow">sheer speed</a>, what I think that OCaml truly has got over D is its maturity level (which in time becomes relative)!</p>
<p>PS: Also, F# and OCaml syntaxes are not as naturally intuitive for C/C++/Java/PHP progammers as D&#8217;s or even Ruby&#8217;s syntax.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: ZZZzzz</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-170</link>
		<author>ZZZzzz</author>
		<pubDate>Sat, 08 Sep 2007 21:30:36 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-170</guid>
					<description>I haven't been using D programming language that much, i know little about it, but i have been playing around with Ruby. 

I just think that the support of the Ruby/D comunity matters much more, in wich case ruby wins.

And as your project grows you could use alot the help of the open comunity.

PS: Great blog!</description>
		<content:encoded><![CDATA[<p>I haven&#8217;t been using D programming language that much, i know little about it, but i have been playing around with Ruby. </p>
<p>I just think that the support of the Ruby/D comunity matters much more, in wich case ruby wins.</p>
<p>And as your project grows you could use alot the help of the open comunity.</p>
<p>PS: Great blog!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Cristian</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-249</link>
		<author>Cristian</author>
		<pubDate>Wed, 14 Nov 2007 21:25:52 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-249</guid>
					<description>Version 2.0 of the D language has better support for interfacing with C++: extern(C++) assume C++ vtable layouts and mangling.

Nice writeup!</description>
		<content:encoded><![CDATA[<p>Version 2.0 of the D language has better support for interfacing with C++: extern(C++) assume C++ vtable layouts and mangling.</p>
<p>Nice writeup!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: doru</title>
		<link>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-434</link>
		<author>doru</author>
		<pubDate>Tue, 02 Sep 2008 07:37:15 +0000</pubDate>
		<guid>http://codeblog.palos.ro/2007/08/10/d-vs-ruby/#comment-434</guid>
					<description>ruby + postgres = headache</description>
		<content:encoded><![CDATA[<p>ruby + postgres = headache</p>
]]></content:encoded>
				</item>
</channel>
</rss>
