From: Damian Terentyev Date: 2007-01-22T16:58:23+09:00 Subject: Re: Ruby and Python, questions (not a flamewar!) Good day! First, let me apologise for some Japanese nationalism and Ruby fanaticism, and do not be offended if I say something inappropriate. On Jan 20, 2007, at 05:21, Tom Pollard wrote: > > Well, Ruby was written by a /person/, not a culture, and it's largely > a tasteful amalgam of good ideas introduced in those old "Western" > languages. I'd be interested to hear what you (or anyone else) thinks > is distinctively non-Western about Ruby, as opposed to C or Lisp or > Smalltalk. It is worth noting that a person who created Ruby have originated from a distinct (Japanese) culture. And one of the key characteristics of Japanese culture is its openness for adoption of other cultures. Many great pieces of Japanese culture were taken from others and then transformed by adding subtle differences, thus making them (IMHO) perfect. Think about Zen Buddhism (a philosophy that came from China), or quality control (curiously, an American idea that originally didn't get support in the US and had to be adopted later from Japanese) — the trend is obvious. And I don't think it would be an exaggeration to see something similar in Ruby design. All Ruby's features were widely known and used in a whole bunch of high-level languages, but it took a Japanese to unite them together in such subtly unique way that was Ruby, and the result was a (IMHO) perfect language. Python has similar capabilities (and is even a little more advanced if we speak about Unicode support, and more mature if we speak about many third-party libraries available), but it doesn't make programming fun as Ruby claims, and in fact, does. It is those small subtleties that make this possible. The ability to write [1,2,3].length and [1,2,3].size as it pleases you, those funny blocks instead of dull for-loops or clumsy lambdas, optional use of parentheses — all this makes writing programs more natural and pleasant. 1. print is a statement in Python 2 and I can imagine no programmer who deliberately chooses to write print("boo") instead of just print "boo". And in Python 3 it's going to become a function so that only the former syntax will be correct. They say, to make it more readable. I don't think lots of parentheses and brackets improve readability. 2. indentation eliminates multiple "end" clauses but makes pure python virtually unacceptable for use as a templating language. And again, I'm not sure that if boo: doo() is more readable than simple "doo if boo" 3. can't understand why only in recent 2.5 Python became to agree with both "except" and "finally" clauses in exception handling. These are the examples of constraints that Python puts on programmer's mind. They are not severe, but a creative mind searching for a solution doesn't want any limits at all! Ruby really gets out of your way when you create programs. And maybe it is that freedom that makes programming Ruby fun. And that's why there couldn't exist such thing as Python on Rails. Ruby attracts programmers that want to freely experience their thoughts and have fun — and this is why it yields such original and convenient products. An answer to the OP's questions — why Ruby is not as wide-spread as Python — lies in two domains: 1. Aforementioned language barrier and Ruby's youn age in general. 2. Ruby's flexible syntax gives too much freedom — and this may drive away some less creative programmers that need something solid under their feet. When you first com to Ruby you may become overwhelmed with all that freedom and panic :) Thanks for your attention. Your sincerely, Damian/Three-eyed Fish