If we take a look at the very first code example from the talk it looks like this:

account.people.each do |person|
     puts person.name
end

You could translate this in two ways when translating into D.
First way:

foreach (person ; account.people)
     writeln(person.name);

Am i alone thinking D one better here?

If we have a look at the next code example from the talk there is no clear and natural way to translate it into D, first the Ruby code:

class PeopleController < ActionController::Base
     before_filter :authenticate

     def index
         @people = Person.where("age > 30").order("name DESC")

         respond_to do |format|
             format.html
             format.xml { render :xml => @people.to_xml }
         end
     end
end

And then the translated D code:

class PeopleController : ActionController.Base
{
     Person[] people;

     mixin before_filter!(authenticate);

     void index ()
     {
         people = Person.where("age > 30").order("name DESC");

         respond_to((Format format) {
             format.html;
             format.xml({
                 render(["xml" : people.to_xml]);
             });
         });
     }
}

class PeopleController : ActionController.Base
{
     Person[] people;

     mixin before_filter!(authenticate);

     void index ()
     {
         people = Person.where("age > 30").order("name DESC");

         respond_to(format) {
             format.html;
             format.xml {
                 render(["xml" : people.to_xml]);
             }
         }
     }
}

D here could use some help at respond_to, but overall i still prefer D way.
Maybe it is just me, i like flexibility of C like languages, and D examples here also adds beauty to it.

--
Using Opera's revolutionary email client: http://www.opera.com/mail/

Reply via email to