|
From: artifact.one on 23 Jan 2007 00:53 Hello. I am a long time C programmer (10 years plus), having a look at Ada for the first time. From my (inadequate) testing, it seems that performance of average Ada code is on par with average C code, and there's a clear advantage in runtime safety. The GNU ada compiler makes pretty sure that there are very few platforms without easy access to Ada, so portability should be on at least an equal footing too. My question is: how come Ada isn't more popular? This isn't intended to start a flame war, I'm genuinely interested. thanks, MC
From: adaworks on 23 Jan 2007 01:37 <artifact.one(a)googlemail.com> wrote in message news:1169531612.200010.153120(a)38g2000cwa.googlegroups.com... > > My question is: how come Ada isn't more popular? > Ada suffered, in its early days, from a convergence of several things. One is that the designers of the language did not anticipate the impact of the personal computer and the democratization of computing. There were other factors, as well. 1) The DoD mandated Ada before there were any good compilers or development environments in place. That began a routine practice of rubber-stamping waivers to use other languages. 2) The compiler publishers, having a captive audience, inflated the price of compilers and tools, making Ada unattractive for anyone in the non-DoD world. For example, Alsys sold a compiler for the personal computer at $4000 per copy thereby putting out of the range of most companies and every hobbyist. Turbo Pascal and other alternatives were already in place and much cheaper than Ada. A few brave souls tried to compete with products such as RR Software's Janus Ada and Meridian's AdaVantage, but the full environment (e.g., integrated editors, debuggers, etc.) were not in place they were for Turbo Pascal. 3) Inept DoD management of the Ada initiative. Sometimes it seemed that the DoD was trying to make Ada a bad choice for businesses. The public line was that they wanted commercial users, but the practices often put barriers in the way. 4) Other languages were cheaper to acquire, cheaper to use, and had no copyight associated with them. The copyright was eventually removed, but late. 5) The earliest compilers were not uniformly good. I recall the mainframe compiler from Telesoft was, when compared to other language choices, simply terrible. It was slow, had an awkward development environment, and did not support the central features of the mainframe very well. Many of those early compilers were "checkbox" compilers. On the form where one had to check-off "Validated Ada Compiler" the fact that a validated compiler was available was considered enough. One compiler I recall quite vividly was for the Tandem. Although the compiler was validated, that same compiler was not integrated into the rest of the system tools, and barely supported by the operating system. The word in the Tandem management was that no one was expected to take Ada seriously, but the checkbox had to be supported. This was quite widespread in the industry. 6) Really good compilers began to appear around 1989. By then Ada's reputation for being slow, cumbersome, and hard to use had already been firmly set. 7) Instruction in the language was bad. I recall a U.S. Navy Admiral complaining about how hard it was to teach anyone Ada. He described the efforts he put in place to make this happen. I told him he had hired people to do the teaching who were incompetent. That was true, but they had PhD's and he thought that should have ensured success. The fact was that those teachers had not yet come to a full understanding of the Ada and their own confusion was more a source of obfuscation than enlightenment for the students. 8) Grabbing defeat from the jaws of victory. In the mid-90's, when Ada became a powerful alternative to other languages, when tools were in place, the language modernized, and the availability of low-cost (or free) compilers could have made it attractive, the DoD lost its nerve and gave the impression that Ada was no longer part of the DoD language requirement. A lot of people misinterpreted this and thought the DoD had decided to abandon Ada entirely. 9) Traitors. Some people who were previously charged with promoting Ada, in particular certain former AJPO officials, once having left government, exploited their former role and joined the forces against Ada. They were able to use their title as former ... to gain credibility and lobby against the use of Ada in exactly the places where it was appropriate to lobby for it. Ada is not now, nor has it ever been, the perfect language. There is no perfect language. However, anyone who understands Ada and has a good understanding of the competing technologies realizes that Ada continues to be the most appropriate choice when the requirement is for a language that will improve the probability of an error-free software product at a reasonable cost. The alternatives, mostly C and C++ are generally less dependable. In fact, I often wonder why anyone would pick a language that is inherently error-prone (e.g., C++) and expect a result that is error-free. If one does an objective comparison of Ada to its alternatives, in the design and constuction of dependable software, Ada will come in with high marks -- higher than most alternatives. If one is looking for a language that is well-suited to supporting a long-lived software system, Ada is certainly better than most of the alternatives. More could be said in favor of Ada. I will leave that more to others. Richard Riehle
From: artifact.one on 23 Jan 2007 01:50 Ah, politics and dramatics! It's had quite a history then - always a killer. Thanks for the impromptu documentary. MC
From: Stephen Leake on 23 Jan 2007 05:02 artifact.one(a)googlemail.com writes: > I am a long time C programmer (10 years plus), having a look > at Ada for the first time. From my (inadequate) testing, it seems > that performance of average Ada code is on par with average > C code, and there's a clear advantage in runtime safety. The > GNU ada compiler makes pretty sure that there are very few > platforms without easy access to Ada, so portability should be > on at least an equal footing too. > > My question is: how come Ada isn't more popular? Because most people don't have the same attitude towards language evaluation that you do. Most that I've actually asked have the attitude "C was what I learned in college, and it's good enough for me". Or, in managers, "everyone else is using C, so it must be the best language". When I point out that far more programs are written in Visual Basic, or Excel, they look very puzzled :). Welcome to enlightenment :). -- -- Stephe
From: Alex R. Mosteo on 23 Jan 2007 05:38
artifact.one(a)googlemail.com wrote: > Hello. > > I am a long time C programmer (10 years plus), having a look > at Ada for the first time. From my (inadequate) testing, it seems > that performance of average Ada code is on par with average > C code, and there's a clear advantage in runtime safety. The > GNU ada compiler makes pretty sure that there are very few > platforms without easy access to Ada, so portability should be > on at least an equal footing too. > > My question is: how come Ada isn't more popular? Others have given longer scoped responses, and I will concentrate on the hobbyist POV (I have felt an Ada hobbyist for a long time now): there is a catch-22 problem with Ada and it is the lack of libraries. This is a relative problem, consider these points. 1) The standard library is really standard, so this is an advantage if it does all you need. Also some features (e.g. fixed point, bound checking, tasking!) are in the language so you don't need extra wrappers around the basic language or OS. 2) There's no good, easy, almost automatic C binding generator, although the language has well defined mechanisms for C interfacing. Yes, there was some generator. No, it is not trivial at present to get it running in my experience. There's some effort to have Ada integrated into SWIG; this is promising and IMHO an important selling point to newcomers. 3) There are bindings for quite some important things: Gtk+, Xml parser, Unicode, CORBA, databases... Summarizing, the Ada programmer feels a bit pariah when he sees his fellow C/C++/java friends trying the latest and greatest version of some library. Either it is unavailable for Ada, or is not up to date, or has to invest some time in creating or tweaking a binding. This is something that, as I said, may be important or not at some point, depending on what you need to do. Also going against the majority of colleagues is a burden. In my lab almost all development is done in matlab, C or C++, and these are not all CS people but from other engineering branches too. It's a shock when you have to use other's code and start to see random pointers in function declarations, arcane syntax for complex datatypes (because typedef seems a forbidden word) and so on. In my case, Ada isn't event a obscure language: it is taught in my university and has good backing among several high-profile teachers. Even so, I feel very alone... :) |