"Benjamin J. Tilly" <ben_tilly / operamail.com> writes:


[...]

> >Second, as far as I know[1], "." is used in C++, Java, Python, Beta,
> >Cecil, Delphi, Eiffel, Sather, Modula-3, Visual Basic, Icon, whereas "->"
> >is only used in Perl, PHP and C++. Thus, Henry's argument that "." is
> >unknown to programmers is false.
> >
> What do you mean by "use"?

What operator is used by languages to 'call' a method on a given receiver.

 
> Both "." and "->" are used in C.  "." to access a field in a struct,

Let's limit to the method invocation operator in OO languages.

> and "->" to access a field in a struct through a pointer.  I believe
> that any C-derived language should preserve this basic usage.  The
> choice of "." or "->" for method calls should reflect your concept
> of what an object is.

Not when identifiers are indeed references to objects, think Java and
Ruby. Namely, don't think C, C++ or Perl.

> For instance Perl's objects are references (ie Perl's version of
> a pointer) and OO operations operate through dereferencing.
> Therefore it uses "->" for method lookups.  This analogy goes very

Actually Perl 5 needs to separate references to arrays and hashes, to
"real" arrays and hashes, thus they have the similar problem to C/C++ and
they've solved it the same way.

> far.  For instance when you bless, the thing referred to is what is
> blessed, and is what the method lookup will happen on.  (Yes, I
> know perfectly well the string concatenation operator issue that is
> usually quoted.  I am ignoring it on purpose.)
> 
> As of Perl 6 they will be making an effort to drop most of the
> dereferencing that you used to do.  Part and parcel of this is that
> Perl will drop the "->" syntax and switch to ".".

Good trend. Let's stick to what matz already decided because that was
already the good decision.
 
> Given that in Ruby all things are objects, and Ruby does not
> encourage people to think in terms of explicit dereferencing, I
> absolutely believe that it should use a ".".  Not due to the fact

Yes. That's actually the trend for references-only based objects, and the
principle of least surprise comes up here, together with what's most used
by OO languages currently in use as I tried to show. And it's easier to
type in, as I also said :-).

> that programmers are used to seeing method calls written that way,
> but because the syntax tells people something about what the
> language's model for an object is.

The syntax doesn't tell anything here, or I failed to understand the
bottom line: using only "." doesn't tell anyone that we're using only
objects, or only references to objects. It just tells that we're not
enjoying two ways of designation of objects.


-- 
Guillaume Cottenceau - http://mandrakesoft.com/~gc/