"Richard L. Conn" wrote:
> The PITAC report I spoke of the other day speaks of
> Component-based Software Engineering. That's where I
> see VB fitting in like a glove, and that's were I see
> Ada lacking.
Perhaps the reason you do not see the match is that you are not
seeing what goes on under the covers. Many other systems do the
same things as VB and in many ways do it better. For example,
the database/programming language Progress can also call upon
to-next) and integrate them with the other services of the
Progress language such as database access, transaction control,
and so forth. [By the way, none of these facilities are available
to the VB programmer and is one of the reasons why I can very
quickly write complex business applications that are nearly
impossible to do in VB]. But Progress has a completely different
development environment than VB, one that I find much more
flexible and productive.
How does Progress do this? It does this by following the API
Microsoft created to allow ANY of LANGUAGE TO USE THE COMPONENTS.
Can Ada do it? Yes, see David Botton's work at www.adapower.com
and go to the COM/DCOM section. Does Ada have a visual editor to
layout the GUI elements and link in the components? Alas no, and
that is Ada's weakness. But then again C/C++ does not have a
GUI-Layout editor either, and that is why so many are using VB or
The problem with VB (and the reason I make money defeating the
internal staffs of financial companies who depend upon VB) is
that VB very quickly runs out of steam. If you want to do
something and there is no pre-existing component, then you
have two choices: try implementing the feature in VB using
that language's extremely limited programming constructs (which
pale even when compared to C, let alone Ada); or write a new
component to implement the feature, which means shifting to a
new language such as C/C++ to write the component. In other
words, VB does not linearly scale across the functional domain
but is highly non-linear.
> The VB controls operate at such a high level of abstraction
> that you don't have to worry about the low-level details
> and can concentrate on the problem.
Except when the component fails, which often happens when
combining with other controls (OCXs have all sorts of
interesting coupling problems), or when the component almost
does everything except one feature you must have. Many VB
projects fail because of low-level interactions over which
you have no control or have little observability. In such
failures, you throw out the high-level design out and hack
until you find some sort of work around.
> Ada was a significant step in the right direction, but
> VB is a much bigger step. Ada could be there as well
> (there's no technical reason why these highly abstract
> component features cannot be added), but the cost of
> such an effort would be really significant.
As I mentioned above, Dave Botton is already doing this for
GNAT. The effort is not overwhelming, just tedious.
> Component-based SE is a PITAC goal for the future.
The one issue I want people to consider is that many students
taking introductory programming courses are not CS majors but
are going into some other discipline. If the introductory
course never gets down the deep dirty bits, I am afraid
students may leave the course thinking "programming is not
too tough; it is all cut and paste". Now imagine how
difficult it is going to be to work with a manager whose
only understanding of software development is based on
I would strongly suggest including at least one exercise where
the students encounter a low level interaction and let them
struggle for a few days. When they are thoroughly frustrated
then them what is happening and why they can not solve the
problem with their limited knowledge. Thus they get a feel for
what the latter classes have to teach and how truly difficult
programming can be.
David J.A. Koogler
Boolean Solutions, Ltd.