Hi all,

I'm a Ruby newbie, and I'm reading now "the ruby way" and reading this
book some comments made me think a lot about Ruby.
I've a strong Smalltalk heritage,  so I'm somewhat biassed.

I would like to know...

Why does common operators like "=" , "and", " .." , "or"  etc ... can
not be overloaded or redefined ?, maybe the complexity of the Ruby
parser comes from the fact that everything is ALMOST an object or a
method. Why is not "=" a method ? Same question for "and" and the rest
of operators that can not be redefined, Does the actual implementation
make life easier for the designer ? I say so because for me is more
natural when everything is an object (without exceptions, here Ruby
follows the rule pretty well) and a method is a method ever, not
sometimes. Some methods are keywords, and some other are not v.g. loop
vs. while. The every call is a method could simplify greatly the sintax
parser.

Why  primitives are hidden ? In smalltalk you can call a primitive every
time you want with a  <primitive: aNumber> , this way the implementation
of native methods, and in some way native Classes like String are not
hidden from the programmer, freeing the programmer to change the
behaviour if needed. Yes you can have the "required" clause and use
binary libraries, but would not be much more "natural" to have a
"require string" when you want to invoque string libraries instead of
having them loaded all the time ?. I want to say here that the
"primitive" keyword frees the language from it's implementation. This
favours a everything is a module aproach.

Sintax Sugar (SS), other thing difficult to understand for me, the
question here is why ? Everything has exceptions very few things are
orthogonal with the principe that must drive it, you can wite a.+(3) or
a + 3 or a.+ 3 or a hundred other ways to write the same thing, yes,
this gives you freedom, but a bad deserved (not needed) one. I use one
form, but when I read programs from other persons the code seems strange
and somewhat dificult to read. Sometimes SS is right, v.g. x +=1, but
the every call is a method aproach could give you the same results
without trouble, in this case += could  be a method. As could be "++" or
others.

Undeclared variables, I don't know other people but I do fast typing and
writing  "aVariable" and "aVariabel" is a mistake that I can do very
easily. Yes you can say, type more slowly, but this is not a solution, I
would like to have a way to force the compiler to generate a warning
when I use a non pre-declared (or previously asigned) variable.

Why are Strings arrays of integers ? aString[0] is an integer, yes, it's
the way it is, but I would like to have String as an array of chars, and
char if you want as a descendant of Integer (nice election because a
Unicode String is and array of 16bit chars, a.k.a. short integer). I 
don't know for you, but for me aString[i].chr =='x' is somewhat 
unnatural, because it breaks the semantic of a String, so it's not 
intuitive for me.

Why is Ruby an interpreter ? Yes the less traditional bytecode aproach,
can be harder (or not), but enables external optimizations more easily
(JIT and similars) because the language are separated from the
implementation, enables reduced footprint and gives faster execution
times, yes, look at how Self executes programs, it's amazingly fast (and 
complex also), but a separated implementation could help develop better 
Ruby-engines.

Don't get me wrong, I understand that Ruby is a young language that
needs some maturing, and I love how easy is to learn, it's dinamicity ,
it's scriptability and the fact that is a kind of mix between my loved
Smalltalk, Self and other languages. In fact I'm writing this because I
want to understand Ruby better and becasue I want to make some
suggestions for future releases, maybe Mr. Matsumoto would like to
consider some of them.

There are more things that I see equally strange in Ruby, but this is
enought for now .....

Please if I've make any inaccuracy , don't be too rude with me, I'm
still learning, and I've a loooong way before I understand everyting.
I'm just looking for answers and explanations.

Enric