"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/