Thanks for your reply. Answer below:
Jerry said:
[ ... ]
Search for a function in WS no yes
Object file cross reference no yes
Display functions by size no yes
Executable statistics no yes
Software metrics no yes
Display include tree no yes
Slice text by local variable no yes
Function tree no yes
Show #ifdefed code in gray no yes
Some of these, while perhaps technically true, are misleading to put
it mildly.
Since Visual Assist is an addon to the VC++ IDE, it's silly for it to
include things that already work perfectly fine in the VC++ IDE, such
as generating a function tree.
Probably, but MSVC doesn't do software metrics, for instance.
Software metrics are important to see the level of complexity that you
have built into a function. (I use the work of Halstead.)
Likewise, finding a function in a workspace is (more or less) built
into VC++ itself -- its workspace view shows a tree of functions,
classes, etc., in alphabetical order. Given that lcc-win32 only does C
(if I'm not mistaken), it seems reasonable to compare them on a C-only
basis. In this case, all functions are in the "globals" section, so
you basically just double click on the function name in the list to go
to it. I suppose this isn't technically "searching for" it, but merely
finding it, but IMO, that's (if anything) an advantage rather than a
weakness.
The search function feature lets you find a function in all loaded
files, not only in the current one. You can use regular expressions,
to make ambiguous search.
Some of these "features" also strike me as close to useless -- just
for example, the "executable statistics". Most of the time this sort
of information is simply superfluous, but when you do need it, you
need a LOT more detail.
I give the following:
Size of code, size of data and size of image. And I see it regularly,
maybe because finding out how big your code is is important in many
contexts. More detail can be queried with the pedump program, that
specializes in that part, and it is included with lcc-win32.
At the current level, it strikes me as kind of
nice and kind of interesting, but unlikely to be of real use on a
regular basis.
Some of the features also seem quite unstable -- at least for me,
attempting to get the #include tree causes the IDE to crash.
If possible, could you give me an example?
I use that feature regularly but I have never seen it crash.
A crash is of course possible, the IDE is not perfect. We are comparing
the work of a team of approx 1000 people (before a release) and
probably like 200 regulars, with the work of a single person.
This is not an excuse of course, and I do try to get any bugs
out when they are reported.
IMO, of these, only the last (the IDE crashing) is really a problem
with the IDE itself at all -- most of them are simply a problem with
feature lists in general. Different features have differing values for
different people, and (particularly) features in general rarely mean
nearly as much as the coherency of the whole product -- a product with
a few features that all work extremely well and are all well
integrated can often outperform one with a huge number of features
that have been kludged together.
You can always say that, meaning that lcc-win32 is a kludge, but you
give nothing as arguments for such assertion. I have tried to select the
features that are substantive and useful for programmers using the IDE.
As you may have seen there are no toolbars, and the presentation is
simple at a graphical level.
Features like "goto definition" have taken me months and months of
development, meaning a whole machinery must be in place to do that,
storing the browse information, devising a format, devising a query, etc.
Specially the slicing of text by a local variable is very useful: you
see *only* the lines that contain that variable, excluding
everything else. This lets you see immediately and very clearly
how a variable is used.
Other features that I did not mention because they aren't "graphical"
are the database of libraries that the IDE has, and that allows it to
tell you which library you should include when you have the dreaded
"missing definition" error.
But it is, as I said in my first message, not something that can be
compared in all aspects with MSVC. It is another philosophy, a
much more simpler approach, better suited to the simple language
it compiles: C.
jacob
P.S. Please try to reproduce the crash and send me a bug report, I would
like to correct that if possible.
Thanks