Hal E. Fulton
10/8/2004 7:44:00 PM
Markus wrote:
>>
>>It is cool and interesting from a theoretical standpoint, but it causes me
>>to coin the term "syntax diabetes" (if someone hasn't already).
>
>
> Ok, I'll bite. Why? Some details:
>
> * If you don't use it, it should have no effect (not true with
> today's version, which has two known bugs at this moment, but
> that's the goal).
> * It makes the parser about 150 lines shorter
> * It does not effect compile times
> * It might make it possible to move some features out of the core
> language and into libraries (if it were proposed and accepted as
> something more than an experimental hack).
> * It (with some of the other ideas that have been floated) would
> reduce the pressure to add new features, and allow them to be
> "community tested" before being added, by letting people
> prototype their ideas without being relegated to a syntactic
> ghetto.
>
> In what sense is this "diabetes"? I would take that to mean intolerance
> for syntactic sugar (it sends you into a coma or something). Or am I
> missing your point?
>
I can't argue with certainty that it's a bad thing. I'm strongly in favor of
experimentation, in fact.
It might even be a great thing in Ruby 1.9 -- but I (personally) would not
want to see it permanently in Ruby.
This is just my opinion, so don't take it the wrong way. And don't stop your
experimentation. ;)
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.
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.
At that point, yes, I would definitely go into a coma.
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. Flames and political discussion will be
redirected to /dev/null).
I don't speak for Matz or claim any insight into his thought processes. However,
that is exactly what I *strive* to do -- I strive to think like Matz. And in the
light of things I have heard him say about macros, about continuations, and so on,
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.
Of course, even Matz is not the ultimate genius of this planet. But he has created
something very special in Ruby, in my opinion; something that could not have been
created by a committee. There are many other people I want to learn from; but at
the moment, he is at the top of my list.
I would be pleased if Matz agreed with what I say here. But I would also be pleased
if he disagreed, because that is another opportunity for me to learn.
Cheers,
Hal