I'm trying to get a feel for the philosophical differences between Smalltalk, 
Ruby and Python.  I realize that many of the technical differences are only 
going to come from hands on experience.  And, I'm sure they all have their 
good and bad points.  I'm just trying to get some idea of why some people 
choose one of these languages over the other.

Without any point of reference, this could be a difficult question to answer.   
Therefore, I thought it might be more helpful if I gave a little background 
info on my experience with those languages and my level of experience in 
general.

First, let me say that I am a 4th year CS student (with 3 classes left).  I've 
taken classes in C, C++, Ada and Smalltalk.  I have done just enough C++ to 
come to the conclusion that I don't like it.  Ada is OK (until I get to 
generics), if I have to compile something.  But, Smalltalk seems to make the 
most sense to me out of the languages that I've been exposed to so far.  

Regarding the 3 languages in question, here is how I summarize them:

Smalltalk.  I like it.  Smalltalk feels "natural".  It seems very intuitive, 
consistent and predictable.  After learning the basics, I could often guess 
how to do stuff.  But, I get the impression that the Smalltalk community is 
shrinking (or at least, stagnate).  

In class, we used Cincom's VisualWorks.  VisualWorks seems like it has a lot 
of nice features.  But, it also has too many quirks that get on my nerves to 
the extent that I couldn't actually use it unless those oddities were fixed.  
I do like Smalltalk, though.

Python.  Its strength seems to be its popularity.  To me, however, it really 
seems to lack consistency.  I've read quite a bit about the Python way of 
doing things.  Yet, for the life of me, I can't seem to get the hang of it.  
For example, I may have the wrong idea, but one thing that bugs me is the way 
that "self" must be included as a parameter to the __init__ constructor 
function in a class.  That seems weird to me.  Who else is going to call that 
__init__?  And, I can never seem to remember if it's str.length() or 
length(str).  It's like Python wants to appeal to people more familiar with C 
so as to not scare off newbies.  Maybe it's just me.  Maybe after awhile I'll 
see the consistency. 

Ruby.  I've been reading up on Ruby, a little.  I just bought the Programming 
Ruby book.  It seems to be a lot like Smalltalk.  I'm thinking that I like it 
better than Python because it seems a lot more consistent like Smalltalk.  
But, then I question, if it is good because it is a lot like Smalltalk, why 
not just use Smalltalk?  I'm sure there must be some good answers to this 
question.  

Also, is the Ruby community experiencing a lot of growth or what?  

TIA,
Darren