David Vallner wrote:
> Isaac Gouy wrote:
> > Another mechanism - IDE support.
> >
> > The most basic Smalltalk code exploration builds on tools for browsing
> > implementors/senders of methods. We'd browse all implementors of "parse
> > data, machine" to see if we were dealing with a massively polymorphic
> > method, and then we'd browse all senders of "parse data, machine" and
> > keep tracing back to see what sort of things "data.index 0" was being
> > initialized with.
> >
>
> Type information being part of the method signatures usually helps
> narrow this down. I sort of get where HorkingLongAndObnoxiousName is
> coming from - "parse" is a very generic method name and might be found
> around the system with even the same arity for wildly varying purposes.
> Without as much as receiver type information, the code search could show
> a lot of unrelated results.
>
> Hopefully, you could further narrow them down by making assumptions
> based on identifier names, but that's a) error-prone, and b) better not
> to have to do by hand.
>
> Making sophisticated tool support is much easier if the tools have much
> more information at their disposal, and statically typed code does
> provide more / easier machine-analysable information.

Of course the point in mentioning the most basic Smalltalk IDE
functionality was that
- it doesn't actually require type signatures (hello Ruby)
- although basic it's surely a step up from not being able to easily
browse project-wide (or hierarchy local) implementors/sendors

I imagine the main practical difficulty is that people use many
different text editors rather than an IDE.

> Dynamic typing is inherently more prone to being hard to maintain. The
> problems can be very well mitigated using proper conventions, and common
> sense.
>
> But that's not always the case, and when you get thrown on a project as
> a maintainer or to contribute feature XY into revision Z of a codebase
> that had random people without a code style guide leading them working
> on it for two years, you get very, very happy that you have Ctrl-Shift-G
> in Eclipse on your side. In a rainy day scenario, the systems aren't
> quite equivalent.
> 
> David Vallner