From: Mathieu Bouchard Date: 2005-04-25T00:16:00+09:00 Subject: Re: [ANN] Article: Seeing Metaclasses Clearly ---1077017559-668567649-1114355740=:32332 Content-Type: MULTIPART/MIXED; BOUNDARY="-1077017559-668567649-1114355740=:32332" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1077017559-668567649-1114355740=:32332 Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE On Sun, 24 Apr 2005, David A. Black wrote: > You wrote: >> On Thu, 21 Apr 2005, gabriele renzi wrote: >> > ah! this is something I always wanted to know, I've been always >> > thinking on the lines of "why >> > are'nt method just defined in the object? do we need this singleton >> > class thing?" >> Because of backwards-compatibility with C++/Java/Perl/Python >> programmers. > Is this something you have real reason stood behind Matz's design > decisions, or is it just an unkind jab at a design you don't happen to > like? Ok, I'll try to clear some things up... I seem to detect an assumption that being backwards-compatible with=20 programmers of more classic languages is something that is negative. I *haven't* said that. Maybe the "backwards" word is loaded with negative connotations... but so= =20 is every other word, given a certain set of expectations on what could be meant. It's "backwards" in the sense of just "older", "predating", ... and not in= =20 the sense of (insert insult here). One could happily continue using just classes -- and I am still coding in= =20 a 99% class style, and not going to change anytime soon. In related news, a lot of people are still using C using techniques of 30= =20 years ago, and the programs written that way work, and take a large part=20 of making the planet run, and those programs may even be reasonably=20 readable and adaptable, no matter how much the fashion has switched=20 towards class-based programming in the last 15 years. (!) Though surely=20 OOP is not "fashion" in the same way that platform-boots are: there is=20 actually a strong objective advantage to it, but it's just that it doesn't= =20 show up in all situations, and that the teaching and understanding of how= =20 to take advantage of OOP hasn't propagated to 100% of the industry yet...= =20 just like any other piece of knowledge. However, in Ruby, the design suggests that we're putting a foot in the=20 realm of object-based (in the sense of "prototype"-based) programming, but= =20 only on top of a more classic design. In retrospect it might have been a=20 good idea to just jump into the prototype-based system beforehand, and=20 then implement a classic class-based system on top of it, akin to what the= =20 standard libraries of most prototype-based languages are already doing=20 anyway. It probably wasn't something that was that obvious when Ruby was=20 created (and frankly, back then in 1995, *I* didn't know any other OOP=20 than C++). Adding prototype-like behaviour on top of a class-based system is=20 something interesting, and an idea that was worth trying, but seeing how=20 much head-scratching it generates in ruby-talk, compared to the amount of= =20 advantage that can be extracted from the concept, I'm now thinking that=20 maybe it wasn't a good idea after all -- and, I repeat, it's not something= =20 that was much foreseeable 10 years ago, which is why the experiment was=20 worth trying in the first place. Does that pretty much eliminate the "unkind jab" hypothesis? Of a more general interest about discussing concepts: It isn't often that I just like or dislike a programming technique just=20 out of a whim, and when I do, I slap my hand, call myself stupid, and=20 correct the shituation. However I alternately am perceived as too terse=20 and too verbose and it seems like there's no middle ground, but that might= =20 be because there is no other way to explaining ideas that are not already= =20 commonplace, than to get long-winded about them. Sometimes I make the=20 mistake of writing something in koan style, but the catch is that the koan= =20 style is only good for reminding, and not to teach. Does that clear things up? ,-o---------o---------o---------o-. ,----. | | The Diagram is the Program (TM) | | ,-o----------------------------o-. `-o-----------------------------o-' | | Mathieu Bouchard (Montr=E9al QC)= | | |---' | http://artengine.ca/matju | | | `-o------------------------------' ---1077017559-668567649-1114355740=:32332-- ---1077017559-668567649-1114355740=:32332--