ted@grebyn.com (Ted Holden) (11/15/89)
I've noticed that much of the present scholastic debate over Ada involves fine points concerning the letter of the law (was Ada "intended" to function in embedded systems etc.). This is the kind of thing I expect to see associated with losing causes. Remember, the Apostle said something like: "The letter of the law killeth, whereas the spirit giveth life..." People involved with winning causes are usually too busy making money to be arguing over the letter of the law. The spirit of the Ada documents was never in doubt. What was wanted was a language which could be used for every kind of software project, from embedded system to large database, and run on every kind of computer system, from micro to mainframe. Reasonable performance was expected on all computers and for all projects. Ability to run with minimal OS and other language support was wanted. Further, logical clarity and large- scale re-usability of software was desired. Journal articles indicate a continuing failure of Ada to work for embedded systems as well as for large scale projects, a continuing failure to run with acceptable performance on anything other than parallel or special- purpose, expensive systems, and an actual gain in cross-system complexity and decrease in the stated goal of reuseability. In particular, the ordinary systems which most people will be seeing in front of them for the next 5 - 15 years, UNIX systems and PCs, will not run Ada accepteably. C began with real machines, real programmers. The idea seems to have been: "Lets take a hard look at this little PDP-7 and design a language which is one-to-one with its logical operations as many ways as possible (the plus-plus operator and register increments and so on) so that the code is as FAST as can be contrived, maximally easy to implement (so that next year when we get our PDP7.5 or whatever, we're back rolling in 2 weeks), and, within these constraints, is as amenable to human logic as possible in a no-nonsense, point-and- shoot kind of way, so that we end up with a kind of high-structured, low-level language; a thinking-man's assembler. And then, let's write an operating system (UNIX) in that language so that, when we get our PDP-7.5, or the next year's computer, whatever it may be, we're REALLY back rolling two weeks later. The maximal ease of implementation was achieved by making the core language as small as possible, other functionality being left to the operating system and to libraries, some standard amongst UNIX systems and others peculiar to various other OSs and hardware bases for which C would be implemented. This allowed good and inexpensive C compilers to evolve rapidly for PCs and other micros and, since the authors of those compilers maintained the standard libraries as close as possible to the UNIX implementations, C became the natural bridge between mid-sized and large computers running UNIX and the micros. C thus achieved its present position of dominance in the mini-micro world, and appears to be well poised for the future as well. C++ appears to be an entirely rational and intelligent extension of C, superimposing the entire object-oriented paradigm including the features Ada leaves out. In particular, there appears to be no more than a 5% performance degradation, if that, going from C to C++, at least judging from Turbo C 2.0 and the Zortech C++ compiler, and I assume the same will hold true when you start seeing good native-mode C++ compilers for UNIX. In fact, C++ appears to BE the very language which Ada was supposed to be (the spirit of the law) but never can and never will be. Far from sharing this "real-world" sort of a heritage, Ada appears to have its beginnings on the other edge of reality or non-reality, dependant on one's point of view. Ada appears to have been designed as a physical embodiment of state-of-the-art principles of "software-engineering", whatever that's supposed to mean, seemingly by assembling 300 committee members in a room, having each draw up a maximum possible wish-list of features for a programming language and/or operating system, and then adding up all of the lists to a "standard", with any considerations of real-world computers being regarded as unimportant. Ada is what you might expect from a programming language designed by committee; it is unbelievably slow, an unbelievable resource hog, involves constant dilemmas over which is the real OS today, Ada or UNIX, Ada or Dos etc. i.e. do we use Ada tasking, again frighteningly slow, or ordinary UNIX tasking and inter-process communication, Ada source control or SCCS, etc. Naturally, the Ada task manager and the UNIX process scheduler clash. As for compiling, my experience has been that, with a PC and lots of memory to play with, Ada compilers at least will get back to you on the same DAY; on a UNIX machine with ten other users doing various other kinds of things, God forbid other Ada compiles, forget it. The one thing which one might reasonably expect all of this slowness and clunk to purchase, the one thing which might partially redeem the situation were Ada to have it, is the object oriented paradigm: inheritance of classes and polymorphism. Ada doesn't have it. Most of the Ada journal articles begin with glowing headlines, and you have to be able to read between the lines, but this isn't terribly difficult. For instance, a large section of articles in the December 88 Journal of Electronic Defense began with the title "Ada: Maybe Not So Bad After All". Remember, Ada has been around since 1979. If that were the best anybody could say about C after ten years, C compiler salesmen would be starving and dying like flies. A senior Intel product marketing engineer is quoted on page 36 of the same issue: "the people who designed the Ada programming language were compiler experts, software experts - they weren't necessarily people familiar with real-time embedded systems." Another article in the same issue describes the use of Ada in connection with a real-time embedded digital signal processing application. Since Ada tasking could not be made fast enough for such work, the engineers adapted a commercial run-time system, VRTX, and informed all programmers: "Thou shalt not use Ada tasking, but rather VRTX tasking. "Thou shalt not use Ada dynamic memory allocation... "Thou shalt not use Ada generics; too slow... and, when they finished with the "Thou shalt nots", what they had left of Ada was a subset of Pascal which they had paid many thousands of dollars for. A far better Pascal compiler is produced by Borland and can be had at B Dalton's for around $100. Needless to say, the Rupe- Goldbergesque system they ended up with was considerably less maintainable than they might have gotten just using C. This seems to be the rule. The September/October 88 issue of Defense Computing carried a similar article: "Running in Real Time: A Problem for Ada". All other stories concerning Ada and embedded systems read similarly. Does Ada work any better for large scale systems? Another article in the same Journal of Electronics Defense issue describing use of Ada on the 1,246,000 line Army AFATDS system claims that: "Ninety percent of the software requirements were met with no major software problems." as if this were good. The man is claiming that he had major language- related problems with 124,600 lines of code out of 1,246,000. Again C language is not noted for this kind of thing, nor would C be around if it were. There was a recent DOD Computing Journal Article titled "Is Ada Getting Better or Just Older?". Again you don't read that sort of thing about C. There is the August 21 89 issue of Government Computer News describing the problems which the huge FAA Advanced Automation System is having due to IBM Ada implementations and tools (or lack thereof). The SoftTech notes from the RICIS convention included mention of one speaker's statement: "Ada and UNIX doesn't work". I've heard that a million times from users, first time that succinctly in print. Between UNIX and Ada, UNIX is the real-world standard; conflicts between it and Ada will not be resolved in favor of Ada. Hate to disillusion anybody... It would appear that the articles written by the real-time people are saying "well, it isn't doing us any good but it must be working out great for the mainframe guys, else why would we still be seeing it and be ordered to use it?" and that the mainframe and database crowd is claiming just the opposite. Somebody must be hoping that nobody ever reads all of these articles and starts putting two and two together. There are numerous problems associated with the fact that Ada believes itself to be an OS, aside from the clashes between Ada and real operating systems. There is the further obvious problem that somebody with a large mainframe/Cobol application which he thinks to port to a UNIX/Ada system will need to redesign and rewrite his entire system from scratch whereas, using C language, he might have written Cobol-callable routines incrementally and had his application back up in a matter of days or weeks instead of years. There is no real way to call an operating system from a Cobol program. The actual use of Ada is further complicated by three considerations which really amount to theological problems INVOLVING Ada rather than faults of Ada itself, but which, nonetheless, probably wouldn't exist if Ada didn't exist. First, the programming style being promulgated by DOD for Ada is anti- conducive to the stated goal of readability; it's like looking at a thousand-page novel such as "War and Peace" with three or four lines of programming code interspersed every second page or so. The verbiage hides the logic. When every variable name looks like: "NUMBER_OF_CROWS_SALLY_ANNS_GRANDMOTHER_SHOT_WITH_HER_12_ GAUGE_-LAST_TUESDAY", then a single subroutine call (involving several such variables) can take up a whole page. In my own scheme of things, I try to keep literature and programming separate. Second, DOD is often insisting on portability via Ada rather than portability via UNIX, POSIX calls etc. This amounts to such things as insisting, for instance, that vendors provide direct Ada hooks to a database rather than simply writing an Ada -> C -> database hook. Typical vendor response is either "F... You" or "Manana". A third is an over-emphasis on design, which often leads to grief in the real-world. I believe in designing in the large, nailing down interfaces at tightly as possible, then rapid prototyping of individual modules, followed by final design documentation and PDLs at low level. I know of numerous horror stories involving design-totally-then-code, but one very recent one, naturally involving Ada, seems to top all. A military project involving Sun machines and Ada was abandoned after something like 4 years and $30 million effort because of unacceptable performance; database screens were taking over a minute to come up. The design work had all been done according to your formula, the individual modules had been designed, written, and tested, all according to the standard military schedules and formulas (2167 etc.). Everything seemed hunky dory, only when they put the fricking thing together, it was too damned slow to use. And, the remarkable thing is, the very system the military insists upon for management of software contracts prevented anybody from knowing they were in trouble until four years and millions had been blown. The government people involved were essentially reduced to the role of actors in a Greek tragedy. Asked for a solution, my firm weighed the choice between offering an Ada- to-C converter and silence, and opted for silence. It sometimes seems to me that the Soviet military is kept backwards in computers by a temporary lack of funds, while our military is required by law to be backwards, and that may not be temporary. Any rate, my guess is that the general Russian skill with linguistics would prevent them from ever being ensnared with Ada; they would take one look and toss it. Slava Bogu. Ada threatens to leave DoD stranded and technologically backwards; out of the mainstream of American computer science. The better class of programmers coming out of the schools will be used to the 2 second compiles of Turbo C and Turbo Pascal. Offer them jobs involving Ada, and most if not all of them are probably going to give you the finger, figuring they'd be happier selling used cars for a living. There is the further problem of our present micro market being a completely open system; a representative of the KGB, the Turkish Empire, the Green Dragon Tong, the successors to the AssHola Khomeini, Khadaffi, or anybody else could walk into a B. Dalton's today and buy a copy of Turbo C 2.0 or Zortech C++ for about $100. Again, if I were the guy up there getting into machine gun and rocket fights at 1600 mph, the last thing I'd want to hear was that my machine guns and rockets were working slower and/or less reliably than the other guy's because he bought a copy of Turbo C at B. Dalton's, while my people were spending billions on Ada. Ted Holden HTE
schmidt@PARIS.ICS.UCI.EDU (11/15/89)
In article <14033@grebyn.com>, ted@grebyn (Ted Holden) writes: >Ada is what you might expect from a programming language designed by >committee; it is unbelievably slow, an unbelievable resource hog, >involves constant dilemmas over which is the real OS today, Ada or UNIX, >Ada or Dos etc. i.e. do we use Ada tasking, again frighteningly slow, or >ordinary UNIX tasking and inter-process communication, Ada source control >or SCCS, etc. Naturally, the Ada task manager and the UNIX process >scheduler clash. As for compiling, my experience has been that, with a >PC and lots of memory to play with, Ada compilers at least will get back >to you on the same DAY; on a UNIX machine with ten other users doing >various other kinds of things, God forbid other Ada compiles, forget it. Along the same lines, lately I've heard a number of people make the claim that: `There now exist Ada compilers that produce faster code than C/C++ compilers.' Naturally, taken out of context this statement doesn't mean very much, since one can always find a lousy C/C++ compiler and an application that brings out the worst in the compiler and vice versa for Ada. Therefore, I'm curious to know what valid empirical studies have been performed to compare `x' Ada compilers against `y' C/C++ compilers across a representative set of benchmarks. Furthermore: 1. Which `top-of-the-line' Ada compilers produce the best code? 2. How long do they take to compile non-contrived programs? 3. What are their resource constraints and requirements? 3. How reliable are they in practice? 4. And how much do they cost compared to `top-of-the-line' C/C++ compilers? Without evidence of this sort the entire `language imperialism' debate becomes egregiously religious. Obviously, ``speed-of-generated-code'' or ``length-of-compile-time'' are not the only criteria by which to judge the success or failure of a language. However, since Ada supporters are beginning to make these claims I'd like to see some supporting evidence! thanks, Doug
rsd@sei.cmu.edu (Richard S D'Ippolito) (11/16/89)
Painful as it was, I read your whole article, Ted. When you say (in article <14033@grebyn.com>, Ted Holden): > Does Ada work any better for large scale systems? Another article >in the same Journal of Electronics Defense issue describing use of Ada on >the 1,246,000 line Army AFATDS system claims that: > > "Ninety percent of the software requirements were met with no major > software problems." > >as if this were good. The man is claiming that he had major language- >related problems with 124,600 lines of code out of 1,246,000. how can you expect to be taken seriously? Do you really believe the math and premises behind your statement? Wow! Rich -- We use kill ratios to measure how the war is going. We use SLOC ratios to measure how our software is coming. (Idea from Gary Seath) rsd@sei.cmu.edu -----------------------------------------------------------------------------
schwartz@dinl.uucp (Michael Schwartz) (11/18/89)
OK. You win. I have to put in my 2 cents' worth. It's hard, because I agree with many things that everybody has said. Ada has been getting a bum rap. Ada was not designed by committee, it was designed by competition. C, on the other hand, has been judged by its applications. Ada had no substantial applications to benchmark its design against. The software engineering requirements imposed on Ada were for programming in the large. Precisely what Ada has been shown to be good at. Not surprisingly, Ada has not been found perfect for every application area. Where it has failed, Ada-9X proposals have been submitted to change it. C was developed for systems programming. The worth of a compiler was judged by the ability to build a good, modular, maintainable operating system. Where C failed, the language was changed. And changed. And changed. It has surprised no one that C is more responsive to change requests than Ada. Nor is it surprising that inexperienced software engineers write better code in Ada than in C. It has not escaped anyone's attention that there are more inexperienced software engineers than experienced software engineers. Sorry for belaboring the obvious, but let's start somewhere. Now let's talk about Ada and Unix. Areas where Ada and Unix have problems: a) System-dependent features accessed from Ada b) Scheduler conflicts--Ada tasks vs Unix tasks c) Ada image sizes and startup times Of these areas, (c) is the most readily addressed. I have heard a number of Ada 9X proposals amounting to a mechanism to freeze the Ada image after elaboration, but before execution. So much for startup times. I have also heard several vendors tout smarter link-editors which will help resolve image size problems. I also hold hope for shared library implementations; the Ada runtime can be shared among all processes needing it. Area (a) is one that requires Ada vendor support. It is difficult to think of a non-trivial software system without some system-dependent feature. After all, we buy different hardware precisely because of these features. In my mind, a major difference between a good Ada compiler and a marginal one can be found in the support for operating system signals, pragma interfaces, and representation specifications. It is no anathema to me to have an Ada system contain bodies which are Pragma Interface (C,...) EVEN IF I DON'T HAVE TO. Maintenance costs must be kept foremost. Reducing maintenance costs is, after all, one of the major considerations in developing Ada. Let's not spoil this by insisting that every Unix guru learn Ada. Scheduler conflicts (b) remain a problem because Unix processes are not the same as Ada tasks. Several have pointed out that Ada tasks are 'lightweight'; they mean that Ada tasks are represented by different execution threads (instruction pointers and stack frames) but the same data space. At least one Unix vendor has implemented a lightweight process type in the Unix kernel. It is possible that a good solution will be to build an Ada compiler which maps its tasks to lightweight Unix processes, letting the Ada scheduler be either eliminated or vastly reduced. In the absence of this solution, a multi-tasking Ada program must build a monitor to mediate all operating system calls which may 'use up' its most vital resource -- the Unix operating system process. The efficiency with which this may be done is directly related to both the Ada compilation system's (ACS) ability to interface with Unix (see (a)), and the 'goodness' of the Unix in question. Since 'signals' are to Unix more or less what 'rendezvous' are to Ada, the more events which can be propogated to the Ada monitor from Unix via signals, the more efficient the implementation. Broad support for SIGIO seems to particularly help. With current compiler technology, one published result we have obtained is multi-tasking access through sockets within 20% of the performance of a C program using standard fork() and exec() calls. Both applications were able to exchange over 5000 tcp/ip messages per second with a cheap 68020 box. Turning off the time-sliced tasking in the Ada program helped significantly. One other result is that using our Ada abstraction, new employees were able to contribute to our project within one to two days, even with no prior Unix experience. Of course, a C abstraction is possible--but why doesn't anyone use one? A 'today' note: Dennis Ritchie spoke to the FRUUG (Front Range Unix Users Group) last night about 9th Edition IPC. He has developed a different IPC abstraction for his research. In syntax, it is similar to our Ada (and C) abstractions. Of course, it has kernel support :-). There. I feel better now ('thar she blows!) Michael ----------------------- schwartz@pogo.den.mmc.com "Expect everything ... mschwartz@mmc.com and the unexpected never happens." ncar!dinl!schwartz --the phantom tollbooth DISCLAIMER: The opinions expressesed are not necessarily those of my employer or myself. -- ----------------------- schwartz@pogo.den.mmc.com "Expect everything ... mschwartz@mmc.com and the unexpected never happens." ncar!dinl!schwartz --the phantom tollbooth DISCLAIMER: The opinions expressesed are not necessarily those of my employer or myself.
ted@grebyn.com (Ted Holden) (11/19/89)
Lots of good replies.... From: Richard S D'Ippolito, Software Engineering Institute, Pittsburgh, PA >> Does Ada work any better for large scale systems? Another article >>in the same Journal of Electronics Defense issue describing use of Ada on >>the 1,246,000 line Army AFATDS system claims that: >> >> "Ninety percent of the software requirements were met with no major >> software problems." >> >>as if this were good. The man is claiming that he had major language- >>related problems with 124,600 lines of code out of 1,246,000. >how can you expect to be taken seriously? Do you really believe the math >and premises behind your statement? Wow! The journal should be in your library or in that of Carnegie Mellon. I'm sure as hell not making any of this stuff up. Get serious. I'm quoting one of your own journals which was necessarily written in such a way as to paint Ada in as FAVORABLE a light as possible, and the most favorable thing the one gentleman could say was that he ONLY had major problems with 10% of his code. Pretty sad. From: Bill Wolf, Clemson >>From article <14033@grebyn.com>, by ted@grebyn.com (Ted Holden): >> Journal articles indicate a continuing failure of Ada to work for embedded >> systems as well as for large scale projects, a continuing failure to run >> with acceptable performance on anything other than parallel or special- >> purpose, expensive systems, and an actual gain in cross-system complexity >> and decrease in the stated goal of reuseability. > This is blatantly false; consider the November 1988 article > in IEEE Software ("Large Ada projects show productivity gains"): > After years of development and an initial skeptical reception, > many people are now using Ada and saying that they like it... > The growth in Ada's use has been helped by favorable reports > from early adopters ("Ada Catches on in the Commercial Market, > Soft News, IEEE Software, November 1986, p. 81) and by the > growing number of validated compilers... project results show > that Ada can greatly increase productivity for large systems... > [in a 1.2-million-line Ada project] reuseable software developed > on the project was counted only once. Roughly 13 percent of the > delivered software was reuseable. This reuse saved 190 man-months > of effort (a 9-percent savings) and reduced the schedule by two > calender months (a 4-percent savings)... Productivity for the > execution environment -- including the operating system, data > management, information management, communications support, and > communications interface -- was 550 lines per man-month... > Productivity for the applications software... was 704 lines per > man-month... the average productivity of the 1,500 systems in > productivity consultant Lawrence Putnam's database: 77 lines > per man-month (at the 1.2-million-line level)... > Sounds like a continuing *success* to me... Sounds very subjective to me and it sounds like a lot of factors are being left out. The funny thing is, that this subjective argument concerning productivity is the only technical or quasi-technical argument I have ever heard in favor of Ada. Every other argument in favor of Ada which I have ever heard was a variant of: "We will cut your ____ie off if you do not use Ada on your project..." That's not much to have to say to the world. >> In particular, the >> ordinary systems which most people will be seeing in front of them for the >> next 5 - 15 years, UNIX systems and PCs, will not run Ada accepteably. > Precisely the point of Dr. Charles McKay, head of the Software > Engineering Research Consortium, in his Tri-Ada '88 presentation, > "Standards for the Sake of Standards -- A Recipe for Failure". > A prime example is Unix; the current POSIX effort aims to > standardize 1960's technology, thus resulting in a "lowest > common denominator" which locks users into obsolescence. Proprietary OSs lock users into obsolescence; UNIX frees them. Until Dr. McKay publishes HIS portable OS and large numbers of people begin using it, UNIX will remain the only answer. > Ada's problem with Unix is that Unix, being 1960's technology, > does not properly support lightweight processes. Modernized > versions of Unix (e.g., MACH) which are designed to provide > such support remove the difficulty. Note that C or C++ programs > making use of the same "heavyweight" tasking facility will be > equally slow, since they rely on precisely the same system. > If one does not have to struggle with the limitations of *Unix*, > then there is a wide selection of Ada compilers which run Ada > within that environment quite nicely. Some, like the Telesoft > TeleGen2 compiler, have global optimization facilities which > result in better code than that which can be produced by current > C compilers (as of Tri-Ada '88). I have personally watched the Telesoft Telegen Ada compiler take over 20 minutes to compile a 35 line program into a 300 KB executable on a 68020 based machine with almost nothing else happening on it. Knowing the Ada community's idea of progress, I'd expect the Telegen2 to take about 15 minutes to do the same job. Mach is five years away from anything approaching large scale use in America; right now, it is a student's hobbyshop project, albeit a hell of an interesting one. Mach-like or Mach-derived products such as the Sequent OS are beginning to be seen and, if your name is John Rockafeller, you should have no difficulty coming up with such a system to run Ada on. Ada does, in fact, run accepteably on a Sequent. Remember, however, the difficulties of building semetric parallellism into an imbedded system; that aileron controller won't be a Sequent. Remember also that the primary customer for Ada is supposed to be the U.S. military. Do you have any idea what the state of the art for computer hardware is in the U.S. military? We're talking about Unisys/Arrete 5000/80's, 5000/90's, 8186-based devices running Zenix on top of BTOS..... The 5000/95's are just now being installed. Get the idea? As for struggling with the "limitations" of UNIX, you'd better either get used to it or move to Mars. There is no other easily portable, mature operating system. Without it, you'll always be using ten-year-old hardware, because developing an OS the old way (like IBM and Microsoft seem intent on doing with BS/2) takes ten years. They paint themselves into some funny corners with it, like trying to tell the world that the N-10 chip is actually a graphics coprocessor for the 486. That's like having Theodore Roosavelt serve as Jimmy Carter's secretary of agriculture; it's driven by the obvious accessment of the chances of running BS/2 on an N-10, which is about like the chance of hell freezing over tommorrow morning. >> C began with real machines, real programmers. The idea seems to have >> been: [...] end up with a kind of high-structured, low-level language; >> a thinking-man's assembler. > Fortunately, the economics of software development are in favor > of using considerably higher-level languages. Then perhaps you could explain the total dominance of C in the mini/micro world, the only completely healthy segment of the computer market? The last figures I've read indicated that 65 percent of all software development in this world was being done in C, and the next highest figure for any other language was around six percent. Are Borland, MicroSoft, Lotus, Ashton-Tate, WordPerfect, and all of those companies just that stupid? >> C++ appears to BE the very language which Ada was supposed to be >> (the spirit of the law) but never can and never will be. > Total rubbish; C++ retains all the low-level and dangerous > facilities of C, which is obsolescent by modern software > engineering standards. As stated by Fairley (Software Those features are there because they are necessary for real world programming. Tacking those features onto or into an Ada program (which is meant for real-world use) is not a superior solution; it makes for non-portable code. >> There is no real way to call [Ada] from a Cobol program. > Ada users can call COBOL or any other language using pragma > INTERFACE; COBOL needs to have a similar standardized means > of calling other languages. Given that it does not, ad hoc > means of calling other languages have been devised; there is > no reason why such techniques cannot be used to call Ada just > as well as C or any other language. But this is COBOL's problem, > not Ada's. Dead wrong. This is a grey area, but Ada tasking basically requires that the starting point be an Ada program i.e. predictable results/full Ada functionality are not possible from an Ada module called from a routine written in another language. The requirements to link low-level kinds of routines into Cobol programs are very real. Every Ada manual I've seen says that results from such code are unpredictable. >> A military project involving Sun machines and Ada was abandoned after >> something like 4 years and $30 million effort because of unacceptable >> performance; database screens were taking over a minute to come up. The >> design work had all been done according to your formula, the individual >> modules had been designed, written, and tested, all according to the >> standard military schedules and formulas (2167 etc.). Everything seemed >> hunky dory, only when they put the fricking thing together, it was too >> damned slow to use. And, the remarkable thing is, the very system the >> military insists upon for management of software contracts prevented >> anybody from knowing they were in trouble until four years and millions >> had been blown. The government people involved were essentially reduced >> to the role of actors in a Greek tragedy. >> >> Asked for a solution, my firm weighed the choice between offering an Ada- >> to-C converter and silence, and opted for silence. > How about applying a profiler and recoding the "hot spots"? There weren't any "cold" spots > If the slowness of Unix process handling is a problem, then > a more modern version of Unix should be used. Your company > should have considered more than two options. First, the problem with performance didn't involve UNIX. Second, to my knowledge, the vender only offers the one version for the machine. Again, the customer was not John Rockafeller. >> [...] There is the August 21 89 issue of Government Computer News >> describing the problems which the huge FAA Advanced Automation System is >> having due to IBM Ada implementations and tools (or lack thereof). > Apparently IBM has now changed its tune; its recent brochure > entitled "Ada and IBM... Capability and Committment" states: > IBM is committed to Ada. Ada's support for modern software > engineering concepts, its breadth of application, and its > support for reuseable software components place it squarely > in the forefront as a language of choice for both IBM's > software engineers and for IBM's customers. IBM was and is committed to PL/1, the PC-Jr, OS/2, MCA... Apparently, they have simply added Ada to their list of big-time losers with which (temporarily) there is a profit to be made. From: CAROZZONI: The Internet >>in particular, the >>ordinary systems which most people will be seeing in front of them for the >>next 5 - 15 years, UNIX systems and PCs, will not run Ada acceptably. > And the technical reason is ? Inferior design of the programming language. > Standardization among C compilers can best be shown by the Billions > and Billions of "ifndef"'s and "ifdef"'s in any C program such as > the Emacs Editor source code. You actually USE Emacs? Did it come bundled with Ada? Does the Internet have any kind of a rule regarding picking three losers, like the old New York three-time-loser law? How about Emacs, Ada, and Oracle? >>.....PC and lots of memory to play with, Ada compilers at least will get >>back to you on the same DAY; ................................... > I use Ada on a PC/AT (as do others here) and also use MS C 5.1! > We can't agree with you on this. Try reading the Ada compiler > installation manual. The best compile times I've ever heard of either on a VAX class machine or a 386 is around 1000/2000 lines/minute; Turbo C is around 15000 on a fast 286, Zortech C++ about the same, Turbo Pascal around 40000 on a fast 286; God knows what they run at on a 386. We're talking about at least a two-order-of-magnitude differential. >>......After All". Remember, Ada has been around since 1979. If that were >>the best anybody could say about C after ten years, C compiler salesmen would >>be starving and dying like flies. > Your facts are consistently confused. The availability of validated Ada > compilers covering a reasonable selection of machines have only > been around for 4-5 years. Ada started in 79; taking 6 years to write a validated compiler doesn't speak favorably of your efforts. World War II was fought in less time. >>.................... "Ada and UNIX doesn't work". I've heard that a >>million times from users, first time that succinctly in print. Between >>UNIX and Ada, UNIX is the real-world standard.................. > The UNIX standard? (BDS, System 5, Xenix, OSF, UI, Mach etc)? Pick one. >> Ada threatens to leave DoD stranded and technologically backwards; >>out of the mainstream of American computer science.............. > A recent article indicated that Ada and Ada like (Pascal, Modula 2) > languages are the primary choice for Software Engineering Curriculums. > May be you should enroll in one. Sorry, I live in the real world; I can't afford the brain damage that might do. .................... Am I missing something by citing 1988 and 1987 journals? Is it possible that in the year since the articles I have mentioned were printed that Ada has come of age? Consider the article concerning the Rational machine in this week's (Nov 13 89) issue of Government Computer News, page 47. It claims the price of the latest Rational Ada development machine has "come down" to around $100,000. It also claims that the machine will be used as a network resource in conjunction with Sun, DEC, and IBM file servers. The obvious implication is that these other machines, which are quite powerful, yet lack the capability for serious Ada development. Why is that? IBM, DEC, and Sun computers can easily be used to develope software in C, Fortran, Pascal, C++, Cobol... My own most recent machine is a Primus 386 which runs at 25 mh with no wait states, has 4 meg main memory and a 104 mh Conner disk which I paid around $2300 for. This system could easily be used to develope almost any kind of software with any reasonable language. What are you people getting for the other $97,700 with the Rational? Consider the possibility of an analogy from the world of medicine. In the medical world, the Rational might be referred to as a "heroic measure", possibly an iron lung. The patient (in this case, Ada), would be referred to either as "a terminally ill patient" or "the deceased". Aside from myself, who is saying that the end is near for Ada? Possibly, a certain Mr. Gorbachov in the CCCP, who is basically declaring the cold war to be over, and a Mr. Cheney in Washington D.C. who is talking about cutting 180 Billion from the U.S. defense budget over the next five years (Wash. Post, A1, Nov 18, 89). Anybody care to bet that Ada doesn't become one of the first casualties of all this? Ted Holden HTE
ted@grebyn.com (Ted Holden) (11/22/89)
From: mlewis: U. of Nebraska at Omaha >]Another article in the same issue describes the use of Ada in connection >]with a real-time embedded digital signal processing application. Since >]Ada tasking could not be made fast enough for such work, the engineers >]adapted a commercial run-time system, VRTX, and informed all programmers: >] "Thou shalt not use Ada tasking, but rather VRTX tasking. >] "Thou shalt not use Ada dynamic memory allocation... >] "Thou shalt not use Ada generics; too slow... >Yes, the time-frame of that project was such that (as clearly stated in >the article) there was ONLY ONE COMPILER AVAILABLE. On that compiler, >rendezvous took 15 msec, rather than the 1 msec required by the project, >which necessitated the use of VRTX to handle the high-speed task >scheduling. However, at the end of page 45, it says >"After acquiring an improved runtime performance compiler, the software >services package was implemented completely using Ada tasking and >rendezvous features." Okay, I missed that sentence. I have heard this same basic story several times from friends with no mention of happy endings and didn't expect one; nor is this truly a happy ending. A happy ending would read that they simply used ordinary, good, reliable tools and solved their clients problem, not that they spent ten units of time dealing with a language for each three solving problems and then had to rewrite a major piece of their package when industry finally managed a lame response to a non-sensical mandate. The question of whether the new system resolved any problems regarding Ada memory allocation or generics was left up in the air. >]... Needless to say, the Rube-Goldbergesque system they ended up with was >]considerably less maintainable than they might have gotten just using C. >If that is the case, then it needs saying. There was no mention of >maintainability in the article. Whence comes this conclusion? The >authors clearly liked Ada, and would not have done the job any other >way. Indeed, the biggest problem I read "between the lines" was that >their programmers were programming in some language (probably C or >Fortran) and coding the programs in Ada. The first item under the >heading "Lessons Learned" is: "Do not underestimate the importance of >*properly* learning the language." (emphasis mine). >But, let's see what else was NOT between the lines in this article: >"...Ada takes a long time to design and code. Once on the target >hardware, however, Ada requires significantly less effort to complete >integration and test." >"...the use of Ada resulted in a 12% increase in productivity over >assembly language and 27% over C." (That is the single most concise >condemnation of C I have ever seen... :-) Again subjective, again rubbish. I've heard too many people say that their projects simply could not be written in Ada at all, that the inherent clunk factor is just too great. Beyond that, you're leaving out a few things "on the lines": 1. "The host environment usually has better computing resources than the target. For example, the VAX is faster and uses 32-bit words while the 8186 is slow and uses 16-bit words. Thus, if care is not taken, this will lead to units which appear to operate correctly on the host when unit-tested but do not perform the same way on the target". So much for the Ada "standard'. 2. "Ada programmers need to understand how some of the most-used language constructs are compiled into target hardware instructions. An example is the number of arguments in a procedure call. The runtime performance of such a construct will be heavily influenced by the number of arguments vis-a-vis the number of registers the target processor has..." Why is it that C programmers don't have to walk around worrying about this kind of thing?? 3. "Table 1 shows a comparison of the percentage of the total effort for the development of three computer software configuration items: SCOTT Ada control processing CSCI, SCOTT assembley language digital signal processing SCSI, and another M/A-COM CSCI written in C..." This is obviously the same old approach to government affirmative action programs (here, for Ada); the Software Services CSCI was the token Ada module. Very obviously, for purposes of simplicity and/or portable code, any attempt to have the entire project in the same language could only have been achieved in C. >I have been lurking here for about a month, since I was offered a job >which requires that I learn Ada. The more I play with it, the more I >like it. I dislike C in all its thousands of dialects, but would like >to point out a very minor difficulty with Mr Holden's comparison between >C and Ada. C was (by Mr. Holden's argument, as well as historical >documentation: ie., he's right) designed to run efficiently ON A PDP >MACHINE. As was Unix. That these two systems run on other >architectures at all well is a tribute to 21 years of development by >thousands of HACKERS (in the proper sense of the term). Give Ada a few >more years to mature. Ada was not designed with a specific architecture >in mind at all, and so is inherently more portable than C. Your solution is technically superior and, yet, it runs two orders of magnitude slower than the old way? And you've only had since 1979 (the actual Ada spec) to get your act together? Why doesn't that sound right?? >But I am not here to bash C. I just wanted to point out that if you are >going to slam something, especially by comparison, you best have ALL >your ducks lined up nicely, or they might turn around and shoot back. Not in the case of Ada. Dead ducks don't bite (or shoot). >My only problem with Ada at this point is the cost ($ and hardware >resources) of a compiler for my XT clone. Both IntegrAda and Janus >require more memory than DOS 4.01 leaves available. This is BAD DESIGN. That seems to be the normal situation with Ada. Ever wonder why? >There is no excuse for a 551K executable in a PC (pass 2 of Integrada). >Janus Ada requires >580K available to run, and rumor has it that the >Integrada compiler is a repackaged Janus compiler. C users have no such problems. Ever wonder why? >Have a nice day. >Marc >-- >--------------------------------------------------------------------------- >Na khuya mne ehto gavno? | Internet: cs057@zeus.unl.edu Edinctvyeniy vid govna v etom mecte - Ada > preferred machine->| UUCP: uunet!btni!unocss!mlewis >--------------------------------------------------------------------------- Have a nice day, Ted Holden HTE
bagpiper@pnet02.gryphon.com (Michael Hunter) (11/22/89)
I have noticed many people including MANY lines of text that they do not comment on and that do not help context...can I please ask you to be nice to your neighbors and please cut out unneeded text!! ted@grebyn.com (Ted Holden) writes: >>"...the use of Ada resulted in a 12% increase in productivity over >>assembly language and 27% over C." (That is the single most concise >>condemnation of C I have ever seen... :-) > >Again subjective, again rubbish. I've heard too many people say that >their projects simply could not be written in Ada at all, that the >inherent clunk factor is just too great. If the numbers above are hard stats then they are not rubbish!! Since Ada is turing complete (as is every other modern HOL I can think of) I wouldn't trust anyone saying that their project "could not be written in Ada at all..." unless they were talking about some timing constraints that as we have all said is implementation dependent. >>There is no excuse for a 551K executable in a PC (pass 2 of Integrada). >>Janus Ada requires >580K available to run, and rumor has it that the >>Integrada compiler is a repackaged Janus compiler. > >C users have no such problems. Ever wonder why? wow man...he is talking about two (maybe 1) compiler on one computer running one OS...kindof small sample to be making those kind of comments. And making the commenbt that C users have no such problems is just basically wrong. Anybody who used pcc on a unix box with the reiser preprocessor with its horrible peep hole optimizer knows what I means!! Anyways the Ada environment must contain many things that the c environments very often don't. You should probably be comparing the size of your Ada system against a comparable C development system consisting of a compiler, lint, a safe malloc, and some tasking package. (and probably other pieces that I have forgotten!!) > >>Have a nice day. >>Marc >>-- >>--------------------------------------------------------------------------- >>Na khuya mne ehto gavno? | Internet: cs057@zeus.unl.edu >Edinctvyeniy vid govna v etom mecte - Ada >> preferred machine->| UUCP: uunet!btni!unocss!mlewis >>--------------------------------------------------------------------------- > >Have a nice day, > >Ted Holden >HTE > Ted, do you ever do any design work? If you ever happen to, you might learn a bit about the difference between DESIGN and a SPECIFIC IMPLEMENTATION of a certain design. Michael Mike Hunter - Box's and CPU's from HELL: iapx80[012]86, PR1ME 50 Series, 1750a UUCP: {ames!elroy, <routing site>}!gryphon!pnet02!bagpiper INET: bagpiper@pnet02.gryphon.com
achille@cernvax.UUCP (achille petrilli) (11/22/89)
>From: mlewis: U. of Nebraska at Omaha > >>"...the use of Ada resulted in a 12% increase in productivity over >>assembly language and 27% over C." (That is the single most concise >>condemnation of C I have ever seen... :-) > Could somebody explain me those numbers ? How it comes that Ada is 12% more productive than assembly and 27% more than C ? This would mean that assembly is more productive than C ? This seems to me ridicolously wrong (assembly vs C productivity, I don't have facts to talk about Ada). Thanks, Achille Petrilli Cray & PWS Operations
rsd@sei.cmu.edu (Richard S D'Ippolito) (11/22/89)
In article <14036@grebyn.com> ted@grebyn.com (Ted Holden) writes: >From: Richard S D'Ippolito, Software Engineering Institute, Pittsburgh, PA > >>> Does Ada work any better for large scale systems? Another article >>>in the same Journal of Electronics Defense issue describing use of Ada on >>>the 1,246,000 line Army AFATDS system claims that: >>> >>> "Ninety percent of the software requirements were met with no major >>> software problems." >>> >>>as if this were good. The man is claiming that he had major language- >>>related problems with 124,600 lines of code out of 1,246,000. > >>how can you expect to be taken seriously? Do you really believe the math >>and premises behind your statement? Wow! You replied to me: >The journal should be in your library or in that of Carnegie Mellon. I'm >sure as hell not making any of this stuff up. Get serious. I'm quoting >one of your own journals which was necessarily written in such a way as >to paint Ada in as FAVORABLE a light as possible, and the most favorable >thing the one gentleman could say was that he ONLY had major problems >with 10% of his code. Pretty sad. (1) Your logic is faulty: The quoted statement does not contain the information that you can support your statement with, there being no-problem, minor-problem, major-problem and we-threw-the-requirement-out categories. You obviously need it to mean that 10% were met with major problems in order to blame it on the language, because you could have assumed that the 10% weren't met at all! (2) You made an incorrect assumption about software: It is unlikely that 10% of the requirements are met in 10% of the code lines. For example, can you identify the lines that are reliable, modular, and modifiable, to take three requirements. (3) You want us to think that the major problems were solely the fault of the chosen implementation language, without giving any evidence for it. I wasn't aware that the process of requirements specification had reached such a degree of perfection that all software requirements are correct, clear, consise, non-redundant, non-conflicting, operable, and implementable. Perhaps you could point me to the method. Now, to take your points separately: >The journal should be in your library or in that of Carnegie Mellon. Why _should_ it be? Do these libraries have obligations to carry it? >I'm sure as hell not making any of this stuff up. Beg pardon -- who accused you of that? >Get serious. Perhaps you mean to imply here that anybody who doesn't accept your premises and conclusions without evidence is just doing it to irritate you. >I'm quoting one of your own journals... Neither I nor the SEI publish, own, nor control any such trade journals. Surely you knew that, but let hyperbole get in the way of reason. >...which was necessarily written in such a way as to paint Ada in as >FAVORABLE a light as possible,... Why did they wait so long? C'mon, Ted, just express your opinions on articles without resorting to psychological diagnosis of the writers and editors. >...and the most favorable thing the one gentleman could say was that he ONLY had major problems with 10% of his code. If you are going to emphasize a word, at least place it properly before you make it stand out. Do mean "...he had ONLY major problems with...", or do you mean "...he had major problems with ONLY 10%..."? If the latter, see point (3) above. >Pretty sad. We agree totally here on the conclusion, but probabaly not on the antecedent. There is room for serious discussion on the design of Ada; please give your comments to the 9X committee. Please consider attending the next TRI-Ada conference and picking up a copy of the preceedings from the one just held here in Pittsburgh. Rich -- When you can measure what you are speaking about, and express it in numbers, you know something about it. Lord Kelvin rsd@sei.cmu.edu -----------------------------------------------------------------------------