On Fri, 2004-10-08 at 12:43, Hal Fulton wrote:
> This is just my opinion, so don't take it the wrong way. And don't stop your
> experimentation.  ;)

     Oh, no worries.  There's no risk of that.

> I believe that a language should provide "all the power you need" but "not
> too much more than you need." This is admittedly highly subjective.

     The problem is, what if I want more power than you do?  And what if
Angilena Mathmatica or Bob Business wants something that neither of us
do?  I'd say that the language should provide enough flexibility for
everyone, so long as it's not required that anyone use it who doesn't
want it.

> As a silly example: Suppose we made Ruby's syntax so extensible that we could
> bend and twist it pretty much any way we wished. It would only be days before
> some people started writing "Ruby that wasn't really Ruby." For example, someone
> would do: require 'ruby2pascal'   and then the rest of his program would be in
> Pascal syntax. Someone else would do the same with Ada and whatever else is
> out there.

    Ah, but that would be great!  (And many people are converging on
this very ability.)  Not perhaps to write Pascal in ruby (though who
knows?), but I have seen SQL, Postscript, and Forth (for a control
system) integrated with ruby.  Plus little "built to suit languages"
that were invented on the spot.  In every case, it was The Right Thing
To Do (tm) and made what would otherwise have been a difficult problem
much easier to write, to understand, and to maintain.

> Don't we see this happening to some limited extent already? I would say that
> some of the libraries and coding techniques I have seen in the past five years
> constitute "using Ruby's flexibility to undermine Ruby" -- if you will pardon
> the analogy, rather in the same way that terrorists have taken advantage of the
> freedoms in the USA to destroy those same freedoms. (I hesitated to type that
> last sentence, because there is no genuine comparison between casual misuse
> of a programming language and the taking of innocent lives. But I am speaking
> in a purely abstract sense: A sufficiently open system can be turned against
> itself to undermine that openness.  

     Whoa.  The only time I've seen "freedoms destroyed" is by people
arguing that there is somehow risk in too much flexibility/openness and
we need to clamp down on it "in order to save it."  You aren't seriously
arguing that people using ruby in some way that you don't like is going
to "undermine ruby" are you?  

     And, as an aside, if you aren't wanting to start a political
discussion it's probably best not to compare the person you are writing
to to a terrorist.  Just a thought.

> I'm ignorant of Lisp. (Do people get tired of hearing me say that?) But I note
> that Matz is at least extremely cautious (I would say outright opposed) to having
> macros in Ruby. And yet he admits that callcc is also very powerful, yet he permits
> it to exist in Ruby. I perceive it as a balance.

     I too oppose macros.  They are a semantic nightmare.  But operators
(especially those exposed as methods) are as tractable as anything we
have in ruby now.  The ONLY thing my patch does is let someone write 

      x <--> y

instead of having to write

     x.pretent_this_is_two_headed_arrow(y)

It doesn't change the semantics at all.

-- Markus