I would choose python.

1)
>a clean (probably one of the cleanest) object oriented design, example:
<snip>

Convert the number 12 to a string:

ruby: my_str = 12.to_s

python: my_str = str(12)

I have a hard time understanding how either method has an advantage over 
the other.  It's totally irrelevant in my opinion.  Personally, I think 
using a number to call a method looks ugly.  But I can adapt pretty 
easily.

2)
- a simpler (not simple by any means, but simpler) Inheritance Model

I have never studied a simple inheritance model.  I don't have enough 
experience with Ruby's inheritance model yet to know which is simpler. 
Once again, I think trying to decide which is simpler is totally 
irrelevant--especially for a beginner who has never programmed in any 
language before.

3)
- a little bit less esotheric (syntax and metraprogramming) thus what
you learn about Ruby will be more usable for other languages e.g.
Smalltalk

I think ruby's syntax looks like chicken scratchings, and I have a C++ 
background. C++ has the most difficult syntax I have seen--except maybe 
perl's.  In my opinion, python's syntax is much more human readable than 
ruby's.  I guess if you are coming from perl, then ruby's syntax would 
seem incredibly clear.  Of course, if you know a language well, it's 
easy to read.  I think the test is whether someone who doesn't know a 
language well can make heads or tails out of what is going on in some 
basic code. I don't think ruby is ever going to be readable in that way.

Ruby also relies heavily on regex's, and regex's are never going to be 
easy to read for anyone.  regex's are not beginner friendly, and that 
might be a big barrier for a beginner trying to learn ruby.  There are 
lots of people who just can't learn regex's.


4)
- simpler, Python got very, very powerful but at the cost of advanced
techniques, the Ruby learning curve will be much flatter.

I doubt that Ruby's learning curve is flatter.  I think python and ruby 
are close neighbors as far as languages go.  In fact, there are some 
similarities that it will make you wonder who copied who with regard to 
certain features.  However, I would guess that python's learning curve 
is easier for beginners because the subject of classes doesn't come up 
until about the middle of a python book.  python is a language that can 
be used effectively without classes if the concept of classes is too 
difficult for a beginner to grasp.

Overall, I think python's online documentation is pretty poor, but I 
think ruby's is worse.  In my opinion, only php got it right.  They 
opened up the online documentation to user comments, and now every 
single issue that has ever been encountered with any function is 
discussed in the comments to the documentation.  That is incredibly 
valuable information.  If ruby wanted to take a significant step forward 
in its online documentation relative to python, I think they should copy 
the php model.  One solution to the poor online docs for both ruby and 
python is to buy a good book.

There is also more information about python available on the web since 
the python community is much larger.

5)
- and this is my favorite: "Code Blocks", learning to use code blocks
is probably the single greatest benefit from learning Ruby, Python
just will not give this to you.

I don't know what "code blocks" are and the subject isn't in the 
appendix of ruby's bible: pickaxe2, so I can't comment on that.

6) I find tracking down errors is more difficult in ruby than python. 
python has better error messages.  For instance, in ruby if you forget 
one 'end' in your code somewhere('end' is used to terminate a section of 
code), the error message will say that there is an  error on the last 
line of your program.  As a result, you have to go hunting through your 
whole program to figure out where you forgot an 'end'.  That's 
aggravating.

7) There are some really nice little touches that python implements, 
which make programming less aggravating.  I'll highlight one.

Both ruby and python have string formatting, which requires more typing 
as well as typing harder to reach characters on the keyboard in order to 
output some information to the screen.  But let's say you just want to 
quickly display something to the screen with minimal typing.  In ruby, 
you can use the method: puts.   For instance,

val1 = 10
val2 = 20

puts val1, val2

puts adds a newline after each value, so the output is:

10
20

But, what if you want to print two things on the same line.  Ruby also 
has a print method:

print val1, val2

but the output will be: 1020.  To get some separation, you have to do 
this:

print val1, " ", val2

and then the output will be: 10 20.  Having to include the quoted space 
in there is almost not worth the effort--you might be swayed to use the 
more laborious string formatting instead.  In addition, print does not 
add a newline at the end, so to keep any subsequent output from 
displaying on the same line, you need to write:

print val1, " ", val2, "\n"

That's just too much of a hassle.  Using puts with string formatting is 
probably no harder to type:

puts "#{val1} #{val2}"

So much for being able to type something quickly that displays a few 
values to the screen.

In python, the print command is like the puts method in ruby.  However, 
it works a little bit differently.  The statement:

print val1, val2

works differently in two ways:

1) print adds a newline after all the output--not after each variable
2) print automatically adds a space between each variable

So this code:

val1 = 10
val2 = 20

print val1, val2

produces the output: 10 20, and since print automatically adds a newline 
after all the output, the next print statement won't display output on 
the same line.  As a result, python's print statement is incredibly 
handy and easy to use.  I think it shows how much thought is put into 
the details of the language.

8) Then there are the well documented major shortcomings of Ruby---it is 
slow.  Rubyists will say, "Who cares?!  I'm in no rush to get the 
results of my programs."  That's well and good, but it's nice to have 
more speed if you need it.  Rubyists will counter, "If I need the speed, 
I'll program in C."  That's great if you know C, but what if you only 
know ruby?  python executes much faster than ruby, and just like ruby, 
you can program the slow parts in C if you need even more speed.

Good luck with your choice.

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