MRH said:
Hello Group,
I realize this question has been previously asked in different boards,
however, I believe that it is worth asking here owing to the level of
expertise present.
I am a beginner in programming. I have read some fundamental theory
material and mucked around a bit, and now want to move into actually
learning programming and my first language.
Throughout my research into this question, I have seen that the more
credible sources recommend either Python or Ruby, and I am personally
leaning quite heavily toward Ruby, yet I would very much like to read
the thoughts of the group on this question.
I was in the same position as you about a year ago--except I have
experience programming in other languages, and I was leaning the same
way. I read a bunch of articles on Ruby and Python, and I was leaning
towards Ruby. Then I went to the Ruby website, and I did the twenty
minute tutorial, but I found the syntax distasteful. So I did an about
face and began learning Python instead. After spending a year with
Python, which I liked quite a bit, I thought I would learn some Ruby,
which is what I'm doing now.
Ruby people talk about how clean the Ruby syntax is and how Ruby
"doesn't get in your way". But in my opinion, Ruby has barely evolved
beyond Perl as far as ugly syntax goes. A lot of the code posted on
this forum is extremely difficult to decipher. I also find that Ruby
actually gets in my way all the time, and based on the questions posted
in this forum, Ruby seems to get in other people's way too. To be fair,
all computer languages get in your way: there are weird results, quirks,
and edge cases that will stump you when writing programs, but for some
reason the Ruby kool-aid drinkers like to claim that is not the case in
Ruby. Ruby lets you do so many bizarre things that I would guess there
are more quirks and edge cases that will leave you completely bewildered
than in any other language I know.
As far as I can tell, Ruby is a good language for experienced
programmers who don't want to be confined by any rules and don't need
speedy execution. For them, Ruby is an expressive language because they
can write the most bizarre code with it. I also notice that a lot of
Ruby programmers who post on this forum like to cram the equivalent of
ten lines of code into a convoluted one liner whenever they
can--efficiency and clarity be damned.
I suspect that Ruby has more LISPisms than Python.
Either would be good for GUI OS X apps and web apps.
As a beginner, you can pretty much forget about programming GUI apps
with Ruby. Ruby doesn't come with any software that will let you
program GUI apps, so you first have to get some software installed,
which can be a big hassle. Then there is not much documentation or many
tutorials for Ruby GUI programming.
On the other hand, Python includes software that will let you program
GUI apps. It's called Tkinter, and it's simple enough so that beginners
can get their feet wet. The documentation on Tkinter isn't the
greatest, but some python books have sections on Tkinter and there are a
few websites that have decent examples and documentation.
The documentation for the Ruby language and its Standard Library is very
poor. As a result, you need to buy the book Programming Ruby(2nd ed)
just for the documentation section in the second half of the book. As a
beginner, you probably won't use the online docs for reference very
often, so that won't affect you as much. Python's documentation is
better, but I still consider it substandard. php has the best online
documentation I've seen because they allow users to post comments in the
docs. The php users flesh out the descriptions of the functions and
they post examples demonstrating tricky results they encountered. Why
python and ruby don't adopt a similar model for their documentation is
baffling. In essence, the php docs are self documenting, and the php
users create a rich trove of information for free.
Python has a very good beginners book that just came out with a new
edition this year: "Learning Python(3rd ed)".
Based on all of the above, I recommend Python over Ruby. Good luck.