From: Nicholas Van Weerdenburg Date: 2005-01-26T00:34:50+09:00 Subject: Re: "Duck Typing" or "No need for abstract classes" On Wed, 26 Jan 2005 00:10:49 +0900, itsme213 wrote: > > "Pit Capitain" wrote > > Lothar Scholz schrieb: > > > CS> On Tue, 25 Jan 2005, Mathieu Bouchard wrote: > > > CS> Of course, creating something like this is much harder in a language > > > CS> like Ruby where objects are ever-changing and ever-malliable > > .. > > > 100% ACK. > > > As a toolwriter i often get requests: I want a good working > > > refactoring browsers, where are the code tooltips, > > > can't you integrate a ruby lint etc. > > > > > > These tools all need a type inference engine and this is a huge task. > > .. > > > > I'm sure you know where the original refactoring browser came from. Your > last > > statement is simply wrong. > > Smalltalk's refactoring browser is image-based. The environment is working > on the end-result of all dynamic stuff (with the effective source > representation of that end-result). If you have dynamically added a method > to a class, that method shows up in the browser (I think!). > > Wouldn't it be far more difficult to implement such a tool based solely on > the source-code that caused all that dynamic stuff to happen in the first > place. > > Is image-based tooling a mismatch for Ruby? Hmmm. > > This is the impression I've gotten- that a live image system uses the objects that exist while programming against a live system to do code completion, etc. In effect, this is what irb completion does. As for the inference engine, I'd be very happy with a 80% accurate solution- e.g. the really dumb cases. It would offer a great performance boost, IMHO. I have to admit though- the level of trust I have with the IntelliJ IDEA refactoring tools is so high, I never think twice about refactoring. However, with unit tests and version control in the ruby world, I would be pretty comfortable as well. All I need is a good impact report with a "Do it!" button. Interestingly, Rails seems to be evolving into a pseudo-image-like system, with class reloads and breakpoints that spawn irb sessions. Conceivably an editor could be smart enough to bind to the running environment. Regards, Nick -- Nicholas Van Weerdenburg