Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!wuarchive!cs.utexas.edu!uunet!zephyr.ens.tek.com!tekcrl!tekgvs!jans
From: jans@tekgvs.LABS.TEK.COM (Jan Steinman)
Newsgroups: comp.sys.next
Subject: Re: Structured Code browser for Objective-C classes .....
Message-ID: <6015@tekgvs.LABS.TEK.COM>
Date: 28 Sep 89 17:45:28 GMT
Organization: Tektronix Inc., Beaverton, Or.
Lines: 38

<>
<




There's nothing magic about how Smalltalk does it.  Rick implies that 
interpretation causes it to "keep object organization", which is somehow 
responsible for good browsers.  Because all of a given Smalltalk application is 
kept in a single "image", symbolic names are always available -- perhaps this 
is what Rick had in mind.  Interpretation has nothing to do with it -- 
Smalltalk is compiled into an intermediate "virtual machine code", which 
destroys the same sort of context Rick mentioned.  (Try reading de-compiled 
Smalltalk code!)

I submit that it is the archaic Unix object file format that is holding back 
such things.  On most such systems, you must explicitly strip(1) a file to be 
rid of symbolic information, yet such information is largely inaccessible to 
the the program itself!  Any system that supports dynamic binding should have 
these symbols "bound" to the appropriate methods (Smalltalk, Objective-C) or 
virtual function pointers (C++).  Code browsing and debugging will remain 
tedious and slow as long as they are viewed as separate activities from 
programming in general.

Smalltalk source code is kept in up to eight files, although two are typically 
used, and there is no reason other implementations would be limited to eight.  
The file index and offset into the file is kept with each method (virtual 
function pointer).  This enables even a 68000 based "slow" Smalltalk system to 
browse and debug faster than a modern RISCy machine using traditional tools and 
languages, object-oriented or not.

							   Jan Steinman - N7JDB
						  Electronic Systems Laboratory
					Box 500, MS 50-370, Beaverton, OR 97077
						(w)503/627-5881 (h)503/657-7703