As far as Ruby vs. Python features go:

1) code blocks. Ruby lets you pass code blocks around. Sounds pretty dull, eh? But in fact it's what makes it possible to create Domain Specific Languages in Ruby quite easily without needing to create a special parser. In many ways Rails can be thought of as a domain specific language built on Ruby.

I'm not sure how this is different to passing function-pointers/coderefs/callables around. Certainly the flexbility of Python, with extensible and substitutable types and operators, could lead one to implement different semantics for most expressions than those prepackaged. Harder to get around the whitespace-is-syntax feature though. If someone can expand on the difference w.r.t. Ruby please do.

2) classes are always open in Ruby(including the Class class). By 'open' I mean you can always add new methods to a class (or even a particular object). Another feature that makes it easy to create DSLs

AFAIK this is also the case for Python and Perl. In Python you can think of every object (and classes are objects) as a hash, with attributes you can diddle at your leisure (and peril?). Perl's blessed references and package symbol tables might be a little less flexible, in that I think adding a method to an object would involve putting it in the package symbol table, thus adding it to every object of that class. (please correct me if I'm wrong on this)

3) continuations. (Not that Rails makes use of them, but some other Ruby-based web programming frameworks do)

Python (2.4) has generators that 'yield' values to the caller and when called again continue from the line after the last yield.

4) Ruby has true lambdas. AFAIK Python's lambdas are pretty limited (limited to one expression?)

Limited to a list of expressions, no statements allowed. IMHO this is a notable shortcoming of Python, its also easier to create anonymous subs in Perl. Python requires you to take a reference of a named function, or write a named function that returns a code reference. But that's not a show-stopper.

Thanks for your post, I'm often reading this or that about different languages and enjoy comparing them. Perl is my job, Python is a hobby and Ruby a mystery.

To answer your question about embedding Python in HTML, its not so bad. Breaking up long lines of HTML+Embedded code is a good idea. Check out Poor Man's Zope for instance.

Update: I reread the node and see what is meant by passing blocks of code around. Sorta :)


In reply to Re: Perl 6 and Ruby on Rails by Akhasha
in thread Perl 6 and Ruby on Rails by mattr

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.