My enjoyment of programming in Ruby and Python may have something to do with them both being scripting languages, and having easily-accessible REPLs (for the uninitiated: Read-Eval-Print-Loops, like irb, a program I mention and show example output from in my post). In addition, scripting languages just... feel easier. If you've got Python installed on your computer, go ahead and pop up a terminal if you'd like to follow along:
[jrheard@jrheard:~]$ python
>>> import webbrowser
>>> webbrowser.open_new('http://google.com')
True
If you weren't following along: Firefox just opened a new tab with Google in it! Isn't that awesome? How many lines would that be in C? >>> import urllib
>>> goog = urllib.urlopen('http://google.com')
>>> page_source = goog.read()
>>> len(page_source)
6917
>>> page_source[:27]
'<!doctype html><html><head>'
The real power of Python and Ruby is that I can do awesome stuff without even thinking about it. At all. At least half the time I have a problem, the most I have to do is one Google search to find the built-in library I need.The point I'm trying to make is that, syntax aside, I feel like Python and Ruby just get out of my way most of the time, so I can focus on solving problems and learning programming concepts I can learn in any language.
Jeff Atwood sums up a lot of my sentiments in his post "A Scripter At Heart", which you can read at http://www.codinghorror.com/blog/2009/01/a-scripter-at-heart... .
Many newer sites are using PHP as well. PHP is used on established sites, but that just means that it's a proven concept. I also see many more jobs for php developers than Ruby (I have seen a few startups using ruby).
"You probably won't learn very good programming practices on your own - PHP has been pretty notorious for this, but maybe this has changed with PHP5, I haven't been keeping up."
I suppose this is true. But I think you can pickup good programming practices in any language.
Another reason to learn php is because it uses a C-style syntax, which will make it much easier to transition to other languages like c/c++/javascript/c#/Java.
Ruby uses a syntax all its own that you can pretty much only use in Ruby.
I also don't feel people should be learning a programming language through frameworks. It's like learning how to add and subtract using a calculator.
What beginners need to learn is programming concepts that they can use in any language.