From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ce1e7170ab2bc91c X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-03-27 17:54:03 PST Path: supernews.google.com!sn-xit-03!supernews.com!nntp.cs.ubc.ca!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!feed2.onemain.com!feed1.onemain.com!newsfeed2.earthlink.net!newsfeed.earthlink.net!newsmaster1.prod.itd.earthlink.net!newsread2.prod.itd.earthlink.net.POSTED!not-for-mail From: "Phaedrus" Newsgroups: comp.lang.ada References: <_pNv6.15345$ue1.1278082@newsread2.prod.itd.earthlink.net> Subject: Re: Why do so many companies use Apex? X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 Message-ID: Date: Wed, 28 Mar 2001 01:52:24 GMT NNTP-Posting-Host: 209.178.103.28 X-Complaints-To: abuse@earthlink.net X-Trace: newsread2.prod.itd.earthlink.net 985744344 209.178.103.28 (Tue, 27 Mar 2001 17:52:24 PST) NNTP-Posting-Date: Tue, 27 Mar 2001 17:52:24 PST Organization: EarthLink Inc. -- http://www.EarthLink.net Xref: supernews.google.com comp.lang.ada:6147 Date: 2001-03-28T01:52:24+00:00 List-Id: For anybody that didn't know, Corey was nice enough to put me in touch with the folks at Rational, so that they could get a glimpse at my gripes. It's only fair that I post their response here, to give them equal time. Phaedrus >1. It's SLOW, any other compiler seems to fly by comparison. Remember >using Vax Ada? Yeah, it's like that. It'll seem like geologic time if >you're used to using Verdix. Apex is slow when compiling small programs, compared to other batch oriented compilers. This is because Apex is caching information and performing a number of consistency checks. However, this caching and checking begins to payoff as the size of the compilation closure grows. For example, compared to GNAT, Apex is 20 times slower compiling the classic Hello_World program. But when compiling a larger program the numbers change. The example program I use is a full Ada parsing program that translates Ada to an intermediate language. Total lines in the source files are : Source Comment Blank Total ------ ------- ----- ----- 22792 5883 5560 34235 This takes about 11 minutes of CPU time to code and link with Apex from clean libraries. With GNAT it takes 21 minutes of CPU time. This is from clean libraries, which is usually not the case with Apex. The build avoidance and minimal recompilation features of Apex typically speed the recompile time even further. This example has only 34KSLOC, which is typically on the small side for an Ada application. On real world projects with large amounts of code, the benefits of the Apex compilation model pay off considerably. Given Apex's ability to cache information and perform incremental checks allows a developer to get very quick feedback when performing operations such as "semanticize", often faster than the eye can see. The performance of Apex improves with every release, not only in the performance of the code Apex generates, but the speed of the environment itself. Apex generates the fastest code of any Ada compiler for real applications. Of course, it is always possible to contrive a particular benchmark that shows any compiler in a bad light, which is why we emphasize working with real world programs. Given our library structure the size of benchmark programs is a criticism often leveled at Apex. For small programs we have a large static closure (although with Apex 4.0 we now ship shared libraries for the runtimes on some platforms). Text_Io adds several hundred KB to a program. But once the size of the application grows Apex shows that it is doing a great job. The above example when compiled with Apex (full optimization) is 5% smaller than GNAT (full optimization). Apex ships with a pure Ada implementation of the Ada 95 Generic_Elementary_Functions package. Our Ada implemention meets the Reference Manual requirements for accuracy of all functions and is very fast. On most platforms our 64 bit calculations are about the same speed as the platform vendor C library libm, but with increased accuracy, others are much faster (sqrt on Solaris is twice as fast in Ada as it is in C). For 32 bit calculations we are always faster as there is no need to cast to/from 64 bits like C, and the calculations are performed using 32 bit arithmatic. >2. Have you ever seen an environment that requires so much care and >feeding? Most companies hire consultants to be the "Rational Toolsmith", >which adds another large chunk of cash to the huge mound that this turkey >costs. >3. It's EXPENSIVE. Not only do they charge big bucks for it, but then >the license server doesn't release the licenses, so if you really want >your group to be effective you'd better buy even MORE copies. On the first issue, price, the charge for Apex reflects many things, including the small size and demanding nature of the customer base. Ada prevails in the Defence and Aerospace community (presumably the sector in which you work?). To properly serve this market, we have to retain a considerable number of development and support engineers to cover a small group of customers (albeit important and very technically sophisticated ones.) As pointed out elsewhere, Apex comprises much more than just a compiler - it also includes a comprehensive configuation management system, for example. Again, just comparing prices to a straight compiler is inappropriate. And yes, some customers want to customise Apex to fully support their own internal processes; those are the ones who hire toolsmiths. Many customers, however, run the product straight out of the box and just have their usual IT staff do standard backups. Either is fine. Those customers find Apex is totally suitable without any customization or toolsmithing. On the other hand, we have many customers who take advantage of Apex's ability to customize: Source Unit Templates, Build Policies, Library Configuration, Configuration Mangement process, Multi-platform distributed build/compilation, architectural enforcement, code rule checking etc. In all honesty, trying to educate customers about all of the capabilities in Apex is a monumental task. The standard 3 day course covers a lot of ground, but only scratches the surface of what Apex can do. Most customers are loath to spend even three days training. Given this reality we've always tried to make the Apex documentation as complete as possible. On the second point. if you mean Apex holds a license while a session is active, sure that's they way we intend it to work. If you mean that you exit Apex and a license isn't freed up, then that's an issue that we need to made aware of, but it may depend upon a number of variables to do with installation, networks etc. >4. This thing has a terrible learning curve, but not to use the compiler, >but just to set up a "tower". (Oh yeah, better get used to obscure >references to words that they've appropriated for their own use. Seems >kind of like Dianetics in that respect, and scares me pretty much the same >way.) Better be able to shell out big bucks to send your folks to classes, >and classes, and classes... There is only one Apex class from Rational, the standard item refered to above. Of course there are other classes for the layered products like ClearCase, TestMate and SoDA. Apex makes no pretense to being just a compiler, it isn't. Rational believe that a Software Architecture is one of the ultimate factors in determining whether a software project succeeds or fails. Apex has very strong support for defining and enforcing a software architecture through it's use of Subsystems and the formal relationships between subsystems and the compilation units contained within them. The Concepts Guide in the Apex manual set describes these concepts in great detail. We don't "appropriate" terms for our own use, but this is a complex subject and having terms like Tower, Subsystem and View help to convey meaning. Having subsystems allows Apex to support advanced capabilities like build avoidance, recombinant linking (relink your program with a different configuration of dependent views, no recompilation) etc. Is this a significant learning curve? Yes. Do we believe in the benefits it provides? A very emphatic "Yes". Some customers choose not to move too far up that curve, other customers do. We try to make Apex work appropriately for both kinds of user communitites. >5. Ever try to use it to debug on the target? Yikes! If you've ever used >a nice environment (I recommend the Green Hills compiler, it's small, >friendly, and MUCH cheaper!) then you'll be astounded at how bad this >thing is for debugging on the target. Assuming that you can actually >connect to the target, that is. I did mention that it's slow, right? We have lots of customers who successfully do target debugging. Apex supports a number of host/target communication mechanisms including a serial link (which could be slow if the target doesn't support a fast UART), an ethernet link (which makes debugging on the target almost as fast as debugging on the host), and for some targets we support using an emulation probe from Agilent Technologies (which also provides for very fast debugging). So, we're surprised to hear that you think debugging on the target is slow, unless your particular target does not support a fast serial interface. We'd like to find out more about your specific environment - host OS & version, host machine type, # processors, memory, targetprocessor, target memory, type of host/target communcation link. What is described here is not typical of other users. Indeed, consensus here is that you may have a configuration problem that could be usefully investigated. Which customer do you work for? >6. It's a pig. Every third keypress seems to generate another swarm of >windows, and pretty soon even the best workstation is performing like a >286. And you had better have a pretty big screen, those windows start >getting buried pretty fast. Also, it takes quite a while to load, I >usually start it, then go for coffee, and when I get back >it's finally loaded. Apex on UNIX does use a number of windows. Opinions on them are quite polarized. But Apex provides a great degree of control on just how many you get. Standard Xdefaults can be used to control position and size. Behaviour of subsiduary windows (output, jobs) can be controlled so that they raise/disappear when needed. Similarly most windows support "in-place" navigation options which forces reused of the existing window. We also provide EMACS for editing if that window style is preferred. Apex taking a while to load indicates it is being run from a remote disk. The Apex executables are large, the intent being that the text image is shared once loaded, but there is a penalty to pay for loading that image the first time. At Rational we run Apex in a networked environment, sometimes running from local disk, more often running from remote disks from a large file server. For me it rarely takes more than 10 - 15 seconds to start up. I only witness longer times when running Apex at a remote location (Oregon) and displaying on my local PC (California). >So, why do people keep buying this turkey? And don't try and give me >that, "It's okay once you get used to it" argument, would you like a hot >stove if you sat on it long enough? Granted, with Rational buying out >most of the other Ada compiler companies (Can anybody say >"antitrust"? Hang on a minute. Rational has made *one* acquisition in this space,and that was our purchase of Verdix some 6 years ago. A study has shown that over the 5 year period from '94 to '99, the number of Ada vendors fell by 50%. That decline is thanks primarily to attrition, along with some consolidation. Reasons? The market isn't there to support more. No one would be happier than Rational were the situation something other than it is. >Would somebody PLEASE say it to Rational? In an official >way, if possible.) there aren't many vendors left to buy from, but even old Vax >Ada kicks it's butt for development. VAX Ada was OK but that example alone shows that even back in the "old" days, when Digital was alive and well, the Ada market was not an appealing place for them to invest their money. And I think you have somewhat rose-coloured glasses. VAX Ada had it's own set of challenges! I remember customers who had multi-day recompile and relink times resulting from a single-line change in their source closure.