From: Yasushi Shoji Date: 2000-10-20T20:17:43+09:00 Subject: [ruby-talk:5707] Re: Dynamic languages, SWOT ? At Fri, 20 Oct 2000 19:00:06 +0900, Hugh Sasse Staff Elec Eng wrote: > That is fine. However, with dynamic languages one cannot say what > methods an object has at compile time, because we can extend objects > at run time. This makes our code more flexible, because if objects > don't do what we want we add or override methods. But it also means > that we cannot have things like design by contract, because a method > cannot say much about what it will get as parameters. # this is class users point of view IMHO, in order to use a method as a class user, you need to know - name of the method - what parameters are required yes, as you said, we can change methods behavior at runtime, but it's just "we can", not "depends on computer's mood". # it's good thing computers still don't have feelings yet ;) [...] > 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. 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. # 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. 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