From: Hugh Sasse Staff Elec Eng Date: 2000-10-21T01:09:40+09:00 Subject: [ruby-talk:5713] Re: Dynamic languages, SWOT ? On Fri, 20 Oct 2000, Yasushi Shoji wrote: > # this is class users point of view Yes. > > IMHO, in order to use a method as a class user, you need to know > > - name of the method > - what parameters are required This latter point is what I mean -- if someone passes you the wrong parameter, or if some other "required"ed code has changed the nature of that type (by redefining some method), then there is no protection. > > yes, as you said, we can change methods behavior at runtime, but it's > just "we can", not "depends on computer's mood". But other code you use might, or people may misuse your code. > > # it's good thing computers still don't have feelings yet ;) Just over 2 months until 2001! :-) > > [...] > > It also assists in avoiding duplication of code, and makes things > > extensible as more "subtypes" may be created. But the case statement has > > an "else" (or "default") clause, so unknown types can be picked up. If > > one has thrown out the case statement, presumably one has to add some kind > > of assertion to check the incoming type, but that would break the dynamic > > nature of the software. Or would it? > > # this is class maintainer's point of view. yes. > > I'm not sure this is specific to Ruby only or came form other > language, but it is recommended to use Object#respond_to? to ensure > that the unknown object you have is capable to handle what you want. Is there any reason why this cannot be built in to the language? Each method has its own parameters, which have method calls associated with them, so at invokation this could be tested. There is an overhead there, so maybe some flag would be needed, or is there a reason other than performance why this is silly? > # yes, there are different methods with same name. > > e.g. > > class Some > def foo(o) > raise 'oops' unless o.respond_to? :bar > : > foo.bar > end > end > > > So is this situation just "one of those trade-offs one has to accept", > > and it can be said that dynamic languages are better at different things > > from strongly typed languages, but they are equally valid, just different? > > Or is there some huge advantage that I have missed, which would make > > the loss of these automatic checks a price worth paying? > > IMHO, it's just different. and as usual, both side has pros and cons. And are they therefore better at some applications, or just better for certain styles of programming? > > http://www.cyberdyne-object-sys.com/oofaq2/body/typing.htm#S2.4 > > ps. I'm no way an expert of OO languages. These are just MHO. > -- > yashi > Hugh hgs@dmu.ac.uk