"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 VBX/OBX/Active-X/(what-ever-Microsoft-renames-these-components- 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 Borland's Delphi. 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 superficial knowledge. 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.