[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Sun, 25 Apr 2004 13:12:51 GMT 
Subject:Re: Visual C++ toolkit 
From:Jonathan L Cunningham 
Volume-ID: 

On Sun, 25 Apr 2004 04:38:31 -0500, not@top-post wrote:

>Jonathan L Cunningham wrote:-
>....[snip]..
>> 
>> It's also a reason to do more work on making Poplog itself more
>> convenient as an IDE for C++ development -- at one point I was

  ... and other languages.

>> Short list:
>>   (1) compilation errors in an output window, click on the error and
>>   it takes you to the correct line of source code.
>>   (2) Class browser: left-click takes you to the declaration, right-click
>>   takes you to the definition (or something equally convenient)
>>   (3) syntax colouring
>> 
>The User-Interface must be the most important factor re. productivity;
>especially for the casual user.

Aaron's rclib library goes some way to providing that ... it depends
what you want to do, BUT ...
(snip)

>I've never had access to "visual <tools>" [ and my news:comp.lang.visual
>is 'empty'], but I'm guessing that Visual C, in so far as it is successful
>is based on:
>1. you don't remenber; you just pick stuff which you recognise;
>2. you pick as large as possible pieces - eg. tokens or constructs, instead
>      of characters.

The "Visual" in Visual C++, Basic etc. is something of a misnomer,
IMHO. It's nothing to do with visual programming.

There are, IIRC, two things which make interface design easier than
coding it all at a low level. Firstly, it provides a high-level
encapsulation (as C++ classes) of the underlying Windows objects:
buttons, menus, edit-boxes, list-selection boxes etc.

Secondly, the IDE provides an interface
design tool: this lets you do things like build menus using
drag-n-drop; position and size buttons, drop-down-lists, edit-boxes
etc. on a dialogue window. So the only typing you *need* is for
labels, titles etc. Positions, sizes are properties of the objects
in the design, and *can* be edited if, for example, you want to
specify a size exactly in pixels. But you can just size things to
"look nice" using the mouse if the exact size is not critical.

But, having designed your interface, you still have to write
conventional code to specify what it *does*, e.g. if you have
a button labelled "Solve" you still have to write your own
procedure to do the solving.

But my list does partly relate to your "1." in that the more you
can shift the load on your memory to the IDE, the more things you
can keep in mind which are related to the problem you are coding
a solution for.

An example: by (2) Class browser, what I really meant was a pane
I can open (or keep open) which is organised so I can easily find
the (names of) procedures (member functions) in my code. When I
click on them, I get taken to the procedure definition, so I can
look at it to remind myself what it does (with any luck I even
wrote a comment ... :-) but more importantly to edit it.

It doesn't *sound* like it saves a lot of time, but
a typical project will have between a dozen and two dozen files, of
varying lengths up to a few hundred lines of code and some
of them shared with other projects, and sometimes I need to make
changes to code I last looked at three or four years ago.

I'm fairly "tidy" in my coding style, so all members of a class
will generally be in the same file or files, but the few seconds
to remember a file name, open the file, and search for a function
in the file are a distraction. If, while editing one function I
want to look at or change a related one, then being able to get
there instantly with a couple of mouse clicks means I don't have
to "stack" my train of thought. It actually saves a lot more than
the few seconds it would seem to save.

>These  IMO are the essentials which made the first [and never surpasssed]
>killer-aps: the menu-driven spread-sheets, Norton commanders [and
>its linux clone] ...etc.

No, I don't agree. What made spread-sheets a killer-app was how damn
useful they are! ;-). Anyone who doesn't find them useful, isn't doing
the kinds of things they are useful for. But *part* of it, is that
non-programmers, the kind of people who are not used to balancing an
abstract eel on their nose by sheer brain-power, had an enormous load
taken off their short-term memories because a spread-sheet has
everything laid out in front of them. (Except it doesn't, it only
produces the *illusion* of everything being laid out -- but that's
another discussion.)
   
>Ie. don't think about Visusal/IDE for C++;
>think about general Visusal/IDE for ALL computing jobs.

Yes, many of the tools I like for C++ programming would be useful for
pop11/objectclass programming too. (And I still use a lisp environment
instead of poplog quite frequently for the same reason.)

>Use a unified, top-down, rigorous approach to make a universal
>[as much as possible - to amortise the cost] tool, instead of 
>ad. hoc adding on to already bloated poplog.

I don't really have much faith in unified, top-down, rigorous
approaches, although last time I looked UML seemed to have become
a standard design approach. But that's not what I'm talking about.

If poplog is bloated, the solution is to remove the bloat, not to
ignore useful innovations. De-bloating was one of the objectives of
the OpenPoplog plan ... much discussed but awaiting resources.

>Of course ved already has much which is required, but it's evolved
>for the familiar user.     I'm guessing that successful "visual XYZ",
>doesn't need reading the manuals ?

Yes, ved has much which is required, and has the tools to make
implementing the rest (relatively) easy. But what manuals? It
already has on-line reference material for all the built-in
functions. If it didn't, then providing it would have been top of
my wish-list. (In fact, for C++, that *is* sort-of top of my
wish-list, but it doesn't *have* to be done from inside ved, so
I didn't include it. It's generally possible to access such
information on the 'net, anyway. I never *can* remember which
order the arguments go in -strncpy- and, of course, no C programmer
should *ever* use the -strcpy- function. Actually, they
probably shouldn't use -strncpy- either ... ;-).

But I doubt that anyone could learn to do serious programming
without working through a manual or introductory course of some
kind, whether bound as a paper book or organised as an on-line
resource. The point of an IDE is only to make life easier.

Jonathan

-- 
    Use jlc at address, not spam.