I don't think it's true that Ruby will become more popular than Python because of TMTOWTDI ("messiness"). Perl has been losing ground to Python since practically forever. (Although failure to produce perl6 in 5 years probably has something to do with that, too.)

If Ruby does become more popular than Python, it will be because of your second point -- Rails is Ruby's killer app, and it's impossible to understate the importance of the web programming "market."

Gravatar """I don't think it's true that Ruby will become more popular than Python because of TMTOWTDI ("messiness"). Perl has been losing ground to Python since practically forever."""

Yes, but it's still hugely popular, arguably more so than Python. Perl has many flaws; lack of readability and a decent OO system are some of them. People who value that, had (and still have) a viable alternative in Python. But with Ruby they can have their cake and eat it too... readability (less than Python, but more than Perl), decent OO, and TMTOWTDI. The presence of Rails is important, but the aforementioned features are a factor too, at least to the Pragmatic Programmers, or so it seems.

What I call "messiness" isn't necessarily the same as TMTOWTDI, by the way, although there is a large overlap.

Gravatar If you want to try some python web programming, I definitely recommend cherrypy to start with - it's really much nicer than anything else I've worked with to date, and I've worked with a lot of web programming languages and frameworks.

"""After some more hacking on Ruby, it becomes all the more obvious that it's messy in many ways. And that's one of the reasons why it's going to outpace Python.
I think this is because it allows you to "smudge and smear" more, and to follow a more personal style, which is apparently very appealing to large groups of programmers. (See the popularity of Perl. Although Ruby never reaches that level of messiness.)"""

A language's degree of "messiness" has nothing to do with Paul Graham's "smudge and smear". Graham is referring to statically-typed languages that are so inflexible by their nature that sketching a computer program can't be done in an effective manner. That is, instead of code sketching, one must start writing long documents that outline a design in detail before writing one line of code because code modification is expensive with statically-typed languages. This is not the way to sketch, a painter doesn't write a long, tedious design document before starting a work of art.

A few more things:
- TMTOWTDI is overrated (do I really need '||' and 'or'?) and missing syntax is sloppy (sloppiness doesn't assist in producing good art, it just deters readability).
- There's very little (nothing?) that can be done in Python or Ruby that can't be done in the other.
- Many of these can be represented in a cleaner (more readable) fashion in Python.
- Python's readability will not be its downfall.

Sure, Perl may still have more users than Python, but we were talking about rates of growth, not absolute numbers.

Gravatar @Matt:

"""A language's degree of "messiness" has nothing to do with Paul Graham's "smudge and smear"."""

IMHO, "smudge and smear" refers to the ease with with you can make a language do what you want, add things, change them later, etc. Needless to say, this is (much) less easy in the mainstream statically typed languages.

I believe there *is* a relation to TMTOWTDI: if a language's syntactic additions make it more flexible, easier to smudge & smear. In this case, Ruby has many, many shortcuts that make code more concise (another thing Graham's a fan of, aside...). This (arguably) also makes it easier to move stuff around, and shape the program the way you want it.

I am *much* less proficient in Ruby than in Python. All I've done in Ruby is a small proof-of-concept Rails app, and the app I'm working on now (non-Rails), which isn't extremely large. Yet I found it very easy to write the code the way I want it, and change it later. Easier, even, than in Python. That is what leads me to believe Ruby is actually more flexible than Python.

I'm not saying it's *better* than Python, though, and as you already pointed out, whatever can be done in Ruby can be done in Python as well, and vice versa. And I'm mentioning the "messiness" for a reason. Quite a few of Ruby's shortcuts have side effects, that may bite you if you're not aware of them. Maybe I'll talk more about that in another post.

Gravatar I think I'll stick with Python for web (and application) development, but that's mainly because I've been programming in Python for much longer than I have in Ruby; in fact I've done fairly little with Ruby. However, I have read and heard many wonderful things about Rails, specifically the shallow learning curve aswell as simple relational database connectivity which I can see allowing many beginners to create robust applications in a small amount of time. Definitely something I'm looking forward to playing with when I get the free time.

One of the other things that I'm excited about with Ruby, being a Perl programmer before a Python programmer, is the regular expression support; something I've missed dearly in Python (sorry, but importing an entire module for regex is not a favourite of mine).

Nice blog by the way, added to my favourites recently

Gravatar You should definitely learn about web programming, BTW

Gravatar Python: Neat language, messy community.
Ruby: Messy language, neat community.