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 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,a0be06fbc0dd71f1 X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!newsfeed.arcor.de!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail Newsgroups: comp.lang.ada Subject: Re: The future of Ada is at risk From: Georg Bauhaus In-Reply-To: References: <20071229040639.f753f982.coolzone@it.dk> <1199452391.7932.27.camel@K72> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1199621038.7300.69.camel@K72> Mime-Version: 1.0 X-Mailer: Evolution 2.12.1 Date: Sun, 06 Jan 2008 13:03:58 +0100 Organization: Arcor NNTP-Posting-Date: 06 Jan 2008 13:04:00 CET NNTP-Posting-Host: 179be59e.newsspool4.arcor-online.net X-Trace: DXC=Fj[eJ;jGmh9D]ncZ]`hZ;14IUK\BH3Y2>I8Qg1D2m6;Si9fM>VHg4: X-Complaints-To: usenet-abuse@arcor.de Xref: g2news1.google.com comp.lang.ada:19237 Date: 2008-01-06T13:04:00+01:00 List-Id: On Sun, 2008-01-06 at 10:34 +0100, Agyaras wrote: > In article <1199452391.7932.27.camel@K72>, > Georg Bauhaus wrote: > > Huh? It is still there (the 2006 edition) > That is PowerPC only, based on gcc 3.4, with incomplete Ada2005 support. OK, I understand that right after the publication of the Amendment, a fully supporting Free Software compiler is eagerly awaited for all computing hardware. > It would be nice to have GPS for Intel Macs, OK, GPS is not trivial. OTOH, I understand there is some Xcode integration; Eclipse support is starting, too. Isn't this more than can be had for a number of very popular languages? > In 2007 the GPL-ed > GNAT+GPS packages are available for Windows and 32-bit/64-bit Linux > only. I cannot afford the license costs. As always with Free Software, and with anything in general, if there is not enough demand, developing Free Software will not be based on demand. So if development happens, it must be based on something else, like enthusiasm or someone discovering a market niche, or someone perceives future ROI ... > IMHO it is absolutely necessary to provide freely available compilers > and IDEs for as many platforms as possible to make a language popular. Popular amongst who else? Windows, GNU/Linux, and Mac OS X together do cover almost all personal computing needs. Another question is whether a popularity attractor (famous person with fans) uses something else and gains a following. > GPS is great for learning Ada because you can "look" into the sources of > the spec files of the standard library. It helped me a lot when I was > learning the containers: John Barnes' otherwise excellent Ada2005 book > is sometimes a bit tight-lipped on how these work. So we should probably add a note to the WiKi book explaining just how you can "look" into the sources of files of the standard library using any one of the freely available IDEs. This is pretty much standard; it would be interesting to learn how you could think otherwise. > The problem for many people starts earlier. Consider these two programs:- > > -- Ada (221 chars) > Strg: Unbounded_String := To_Unbounded_String("ergonomy"); > // C++ (148 chars) > string Strg("ergonomy"); (I notice that dynamic_cast(expr) and static_cast(expr) are a lot better than the parenthetical type casts of the C tradition; from a characters count point of view, Foo(expr) and Bar'(expr) are shorter, though. ...) The literals fallacy. Putting aside the missing true Character type abstraction that creates the clumsiness of default Ada string literals. I think that Ada is among the few languages that can make you see how people mix up shortness and brevity. In general, * shortness is very attractive to programmers. * Brevity is an art that few have mastered. * Shortness will drive programmers crazy when they have to understand a pre-deadline piece of code that is written short on words. * Shortness is a tool in the hands of the cynical programmer. Shortness takes revenge. The "Just Get Going" effect makes you run; however, the important thing in the long run is whether or not you will stumble. Shortness is "ergonomy" at the wrong task. It flatters the lazy programmer, it helps in creating illusions. It doesn't help with programming. Brevity, on the other hand, is not as easy to measure. Counting source code characters is not enough. Take your average scripting language program written in an "ergonomic" style. An example of popular ease. It might seem construed, but I have seen this very frequently. Frighteningly often. variable->method(arg1, arg2->{_key_}) if frobnicate->foobar(another[3]); This is the increasingly popular conditional placed _after_ the thing which depends on the conditional. The popularity seems to stem from the fact that, in natural language, people sometimes put the conditional clause of a sentence second. However, programming is not prose. if (frobnicate->foobar(another[3])) { variable->method(arg1, arg2->{_key_}); } Boah. This is too boring. I need to type more than is absolutely necessary. Not ergonomic. It is not cool. Go away with you linear reading rule that is built into that Ada language. Similarly, Ada _is_ more verbose than C, also than C++ to some extent. The language rules are stubborn here and there. (E.g., instantiation is always explicit; C++ lets you choose whether or not you want to say which instance you want. I understand that most C++ programmers prefer the omission.) Using a computer is very helpful with producing the verbosity at little typing cost. Type 'i' 'f' ' ' and your full conditional framework is there. Saves keystrokes ergonomically. > Talking about safety and ergonomics: how do you tell which Ada > subprograms raise which exceptions? Well, you cannot. The Java designers > got this absolutely right: First, what is an exception? Does it raise an issue with a program that cannot perform its job due to a bug, or is an exception a signal that is another means of control flow? I can't speak of absolute truths without knowing answers to question like these. Second, by throws clauses alone you won't find the spot where the exception is actually thrown. And which. Only the stack trace can tell, the throws clauses just make you follow possible call chains. There are loads of them. > "Make computers work so that humans won't have to" This is not true for programmers. Though, learning how to use a input devices can make them work less. Very humiliating because typewriting is not the great work of a programmer. Isn't this telling?