Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > "Real" Differences Between Python & Ruby

Reply
Thread Tools

"Real" Differences Between Python & Ruby

 
 
Max Cantor
Guest
Posts: n/a
 
      05-08-2008
I have a question about the difference(s) between Python and Ruby. I
have been working with both languages for about one year each now, and I
keep finding differences that turn out to be just syntactical. I will
elaborate, but this is the gist of my question:

What can Python do that Ruby can't? What can Ruby do that Python can't?
What does Ruby gain from its syntactic quirks, other than easier DSL
implementation?

I recognize that this is potentially a very "religious" question, so I'd
like to specifically note that I'm not talking about whether one
language is "better" or faster or easier to use. I'm just trying to
grok the real differences between Ruby and Python, and the reasons
behind the design decisions that created them as they are today.

For my comments below, please refer to the attached rar.

One example: A simple Python closure technique can be seen in clos.py.
This leverages Python's simple first-class function support. However,
with very little effort, we can replicate the technique in clos.rb with
a lambda and the call() method.

Conversely, we can look at a good usage of Ruby's block/yield
functionality in iter.rb. Again, with only a little bit of
head-scratching, we can translate this rather directly to Python using
UserList and, again, Python's first-class function capabilities.

Even in terms of real closures, like the example in clos2.rb and
clos2.py, which I shamelessly stole from Google, Ruby and Python fail to
really outpace each other.

So, how do blocks in Ruby REALLY differ from lambdas in Python? Is
there anything you can do in one language that some fancy footwork can't
achieve in the other, or is that the point of their differences? I know
all of the knee-jerk reactions: Multiple inheritance, syntactical
indentation, keyword arguments, regex literals... those are all either
matters of taste or easily simulated. What are the "real" differences,
if any? Was Matz's intention in creating Ruby to approach existing
functionality with a new syntax, or are there things I'm not seeing?

Thanks so much in advance for all of your thoughts and comments. I'm
looking forward to seeing what everyone says, and solving this mystery!

Attachments:
http://www.ruby-forum.com/attachment/1872/rbpy.rar

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Martin DeMello
Guest
Posts: n/a
 
      05-08-2008
On Wed, May 7, 2008 at 5:23 PM, Max Cantor <> wrote:
> I have a question about the difference(s) between Python and Ruby. I
> have been working with both languages for about one year each now, and I
> keep finding differences that turn out to be just syntactical. I will
> elaborate, but this is the gist of my question:
>
> What can Python do that Ruby can't? What can Ruby do that Python can't?
> What does Ruby gain from its syntactic quirks, other than easier DSL
> implementation?


One often-overlooked point is the design of the standard library. For
example, one of ruby's major design decisions is the syntactically
convenient and addition of one free closure to every method, with a
lightweight, performant way to invoke it. That led to things like a
collection interface built around the concept of internal iterators,
the pervasive use of the open resource/ yield to caller/ close
resource pattern, and an avoidance of higher-order-functions and
patterns that would have required *two* lambdas passed in. Python both
makes inline anonymous closures highly inconvenient, and provides
cheap generators (something hard to do in ruby without a large
performance hit), leading to the more pervasive use of external
iterators. Also, rubyists like method chaining, and pythonists don't,
which is why several methods in the python stdlib return None if they
are being called for their side effects, where a ruby method would
tend to return self.

martin

 
Reply With Quote
 
 
 
 
Avdi Grimm
Guest
Posts: n/a
 
      05-08-2008
On Wed, May 7, 2008 at 8:23 PM, Max Cantor <> wrote:
> What can Python do that Ruby can't? What can Ruby do that Python can't?
> What does Ruby gain from its syntactic quirks, other than easier DSL
> implementation?
>
> So, how do blocks in Ruby REALLY differ from lambdas in Python? Is
> there anything you can do in one language that some fancy footwork can't
> achieve in the other, or is that the point of their differences? I know
> all of the knee-jerk reactions: Multiple inheritance, syntactical
> indentation, keyword arguments, regex literals... those are all either
> matters of taste or easily simulated. What are the "real" differences,
> if any? Was Matz's intention in creating Ruby to approach existing
> functionality with a new syntax, or are there things I'm not seeing?


First of all, you seem to be coming at it from the assumption that
Ruby is a response to Python, or vice-versa. Both Ruby and Python
are far more influenced by their shared ancestors - Lisp, Smalltalk,
Perl, Modula, C, to name just a few - than they are by each other.
BOTH languages are "nothing new" in the sense that Lisp, Smalltalk,
Perl et al already had full fledged closure semantics when Ruby and
Python arrived on the scene. So yes, in that sense it's just a matter
of syntax.

If you are interested in a closure-related feature that DOES
differentiate the two languages, look at continuations
(Kernel#callcc). Python, with the possible exception of the
Guido-disowned Stackless variant, does not support continuations. Of
course, with JRuby not supporting continuations and MRI 1.9 apparently
moving to Fibers, this may cease to be a point of differentiation in
the future. A prospect that I personally find disappointing.

--
Avdi

Home: http://avdi.org
Developer Blog: http://avdi.org/devblog/
Twitter: http://twitter.com/avdi
Journal: http://avdi.livejournal.com

 
Reply With Quote
 
globalrev
Guest
Posts: n/a
 
      05-08-2008
On 8 Maj, 04:09, Phlip <phlip2...@gmail.com> wrote:
> Max Cantor wrote:
> > What can Python do that Ruby can't? What can Ruby do that Python can't?
> > What does Ruby gain from its syntactic quirks, other than easier DSL
> > implementation?

>
> Python's DSL support is pitiful. What you call a "quirk" is instead
> the ability to make coding _all_about_ those silly fringe quirky DSLs.
>
> --
> self.Phlip


dsl as in?
 
Reply With Quote
 
Phillip Gawlowski
Guest
Posts: n/a
 
      05-08-2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

globalrev wrote:

|> Python's DSL support is pitiful. What you call a "quirk" is instead
|> the ability to make coding _all_about_ those silly fringe quirky DSLs.
|>
|> --
|> self.Phlip
|
| dsl as in?

Domain Specific Language.
Rake, Rails, RSpec, Adhearsion..

- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan
Blog: http://justarubyist.blogspot.com

~ - You know you've been hacking too long when...
...your friends who aren't hackers wonder what happened to you.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkgjir0ACgkQbtAgaoJTgL/V5QCgjYPKRNq17Ko/wHMVLahyLBp8
7QAAoJPB1pwy9dZKEox0hg0U1FLtZW72
=ea7W
-----END PGP SIGNATURE-----

 
Reply With Quote
 
Marc Heiler
Guest
Posts: n/a
 
      05-09-2008
I was about to comment on something but when i read this:
> What does Ruby gain from its syntactic quirks

I could not really continue.
It reminds me of the terminology "monkeypatching".
I dont really want to comment towards derogative terminology. (To me, a
quirk implies something derogative. Same as monkey-patching implies to
me as a "not good patch" that was applied under speed pressure, very
quickly and without much thought etc but using a derogative term for it
..).

> I recognize that this is potentially a very "religious" question


I dont really think it is per se. But one maybe has to be careful
which words he uses. Unless that guy in question does not care
anyway maybe (mister "rails is a ghetto")

However, the python vs ruby comparison is, IMHO, really not such a
huge difference, because both share many goals. It is much more a
beneficial competition between the two.
With perl biting the dust (I could not resist ... ;> )

One example - is that in speed comparisons, python outperforms ruby,
but I never understood why anyone who uses such "slow" languages
would care about speed anyway.

DSL is also a "difficult" term, because I have seen about 6 different
definitions of a DSL. It would be much better if people could all
agree about a DSL. And most importantly, if a DSL is a real language
*WITHIN* that language, or whether it is not.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Robert Dober
Guest
Posts: n/a
 
      05-09-2008
> However, the python vs ruby comparison is, IMHO, really not such a
> huge difference, because both share many goals. It is much more a
> beneficial competition between the two.

Really? Python just stands all the time in my way, ok it is the Ruby
way I am used to I have to admit. But I know enough Python to know
which one is easier on my fingers and my eyes.
Do not forget that Ruby's design gool was to please Matz, we should
check with Guido if this was his design goal too .

> With perl biting the dust (I could not resist ... ;> )

Those been told dead live longest, and this might as well not be the
exception confirming the rule.
<snip>
Robert

 
Reply With Quote
 
David A. Black
Guest
Posts: n/a
 
      05-09-2008
Hi --

On Sat, 10 May 2008, Marc Heiler wrote:

> I was about to comment on something but when i read this:
>> What does Ruby gain from its syntactic quirks

> I could not really continue.
> It reminds me of the terminology "monkeypatching".
> I dont really want to comment towards derogative terminology. (To me, a
> quirk implies something derogative. Same as monkey-patching implies to
> me as a "not good patch" that was applied under speed pressure, very
> quickly and without much thought etc but using a derogative term for it
> ..).


Also, a quirk can only be measured in relation to something non-quirky
-- in this case, I guess, the syntax of other languages. (I don't mean
to lay this at the feet of the OP of this thread; it's a pretty
constant theme.) The sense that Ruby is uniquely accountable for the
ways in which it differs from other languages is very persistent. I'm
not sure why, especially now that it's got such a large usership. Or
maybe that has something to do with it; I don't know. It's all very
meta-meta

>> I recognize that this is potentially a very "religious" question

>
> I dont really think it is per se. But one maybe has to be careful
> which words he uses. Unless that guy in question does not care
> anyway maybe (mister "rails is a ghetto")
>
> However, the python vs ruby comparison is, IMHO, really not such a
> huge difference, because both share many goals. It is much more a
> beneficial competition between the two.


I remember hearing an intro presentation about Python where you could
have crossed out Python and put in Ruby and it would have been
*exactly* what people say all the time about Ruby: concise, elegant,
OO, doesn't get in your way, etc. etc. The two languages definite
share many goals, and appear to have succeeded at them. (I'm not
interested in Python myself, but I do take Python programmers at their
word about what they love about it.)

> With perl biting the dust (I could not resist ... ;> )
>
> One example - is that in speed comparisons, python outperforms ruby,
> but I never understood why anyone who uses such "slow" languages
> would care about speed anyway.
>
> DSL is also a "difficult" term, because I have seen about 6 different
> definitions of a DSL. It would be much better if people could all
> agree about a DSL. And most importantly, if a DSL is a real language
> *WITHIN* that language, or whether it is not.


It's all about the 'L'

http://dablog.rubypal.com/2007/4/17/...gue-ou-langage


David

--
Rails training from David A. Black and Ruby Power and Light:
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
INTRO TO RAILS June 24-27 London (Skills Matter)
See http://www.rubypal.com for details and updates!

 
Reply With Quote
 
Max Cantor
Guest
Posts: n/a
 
      05-09-2008
On Fri, May 9, 2008 at 12:23 PM, Marc Heiler <> wrote:
> I was about to comment on something but when i read this:
>> What does Ruby gain from its syntactic quirks

> I could not really continue.
> It reminds me of the terminology "monkeypatching".
> I dont really want to comment towards derogative terminology. (To me, a
> quirk implies something derogative...


My usage of the term "quirk" was never intended to be derogatory. To
me, a "quirk" is simply an idiosyncrasy: something unique to a
particular group or idiomatic context. For example: No matter which
way you slice it, "arr.each { |item| item.foo }" and its underlying
implementation is unique to Ruby, and I'm really interested to see
why, specifically, Matz decided to do it that way, for that and other
decisions. Maybe a different spin on my question could be, "What
problems did Ruby solve, as a new language?"

- M

 
Reply With Quote
 
Avdi Grimm
Guest
Posts: n/a
 
      05-09-2008
On Fri, May 9, 2008 at 1:13 PM, Max Cantor <> wrote:
> For example: No matter which
> way you slice it, "arr.each { |item| item.foo }" and its underlying
> implementation is unique to Ruby


It is?

--
Avdi

Home: http://avdi.org
Developer Blog: http://avdi.org/devblog/
Twitter: http://twitter.com/avdi
Journal: http://avdi.livejournal.com

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
DEVELOP THE WINNING EDGE, SMALL DIFFERENCES IN YOUR PERFORMANCE CANLEAD TO LARGE DIFFERENCES IN YOUR RESULTS Home_Job_opportunity C Programming 0 01-14-2009 03:51 PM
DEVELOP THE WINNING EDGE, SMALL DIFFERENCES IN YOUR PERFORMANCE CANLEAD TO LARGE DIFFERENCES IN YOUR RESULTS Home_Job_opportunity C Programming 0 01-08-2009 04:31 PM
What are the differences between c++ and Ruby? duddilla's Ruby 12 12-06-2007 02:35 PM
Encode differences between idle python and python pretoriano_2001@hotmail.com Python 4 10-11-2006 12:40 PM
urlopen differences between python 2.3.3 and python 2.2??? Chris Python 0 04-14-2004 06:46 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57