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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,81cf52699486abe7 X-Google-Attributes: gid103376,public From: dvdeug@x8b4e53cd. (David Starner) Subject: Re: Ada95 Strengths/Weaknesses. Date: 1999/09/28 Message-ID: <7spd4c$9ic2@news.cis.okstate.edu>#1/1 X-Deja-AN: 530149570 References: <37EED7B8.245C0054@yukyonline.co.yuky> <7smp30$9aa1@news.cis.okstate.edu> <7sp914$ago$1@nnrp1.deja.com> Organization: Oklahoma State University User-Agent: slrn/0.9.5.7 (UNIX) Newsgroups: comp.lang.ada Date: 1999-09-28T00:00:00+00:00 List-Id: In article <7sp914$ago$1@nnrp1.deja.com>, Robert Dewar wrote: >In article <7smp30$9aa1@news.cis.okstate.edu>, > dstarner98@aasaa.ofe.org wrote: >> * Type safety makes it harder for some stuff to get done - >> i.e. it's impossible to make a type look exactly like a number >> in Ada, > >That is just a false statement. Unchecked conversion allows you >to do anything in this area you can do in C++. Yes, some uses >of unchecked conversion in Ada are implementation dependent, >but no more so or less so than the corresponding casts in C++. This has nothing to do with what I was talking about. In C++, I can write class BigInt, assign integers to it and pass it to templates expecting numbers. In fact, I can sed s/int/BigInt/g and add include "bigint.h" to the top of all the files, and the programs will run the same (provided, of course, that BigInt follows the same semantics as int.) In Ada, I can't write a template that expects a integer type and pass a BigInt to it. I can't assign to it from universal integer. In Ada, BigInt can't masquarade as a number. >> but trivial in C++. > >Two comments: one, yes the syntax is trivial in C++, and this >is something I would list as a disadvantage of C++, not an >advantage. It is far too easy to break the type model in C++. It can be a disadvantage (which I discussed above, which above, which you snipped), but it can also be an advantage. > >> * C++ includes several somewhat experimental features >> (template specilization, >> multiple inheritance) that Ada designers considered too >> experimental or >> specialized to add. > >Well I think you need to give examples here. Many people would >regard the multiple inheritance in C++ to be a disadvantage for >three reasons: >1. The OO model is much cleaner if only single inheritance is >used, so the semantics is much simpler. This is why many OO >languages deliberately avoid supporting MI. > >2. The MI model in C++ is one of several. Having a specific >model built into the language is unhelpful if your problem is >best handled by some different model. > >3. In most C++ compilers, you pay a price in distributed >overhead for this feature, even if you do not use multiple >inheritance. #2 is the reason RMS doesn't like OO languages, because the inheritance model is only one of many, and he prefers to write his own. This could be extended to many of Ada's features (tasking, templates, exceptions, functions (why carry around all the extra baggage for recursion if you don't need it?)). Frankly, for all your scoffing at it, many people like and use MI. From a programmer's prospective, not having MI may be a big disadvantage. I did point this features out as experimental. >> Disadvantages vs. C & C++ >> * Large base of installed libraries. If you can find a Ada >library that does >> what you need to do (not unlikely, but not as likely as for C >or C++ - and it's >> probably a wrapper around a C library), it probably won't come >precompiled and >> set up for your system > >It seems far preferable to find libraries in source form, for >many reasons! Almost anything I download precompiled from Debian just works. If it doesn't, I've got someone to complain to. Frequently, I've downloaded programs and libraries, and deleted them after spending a few hours trying to get them to build. If I had to build many of the libraries on my system, many of them wouldn't be there. Secondly, my distribution of the C++ game (mentioned in my email about binary sizes) is 11K. My Ada distribution is 227K. This is because it uses the MW Components, and I prefer to say "just type make" than "go to http... and download this and install it here and do this ..." The only Ada library I would not ship with my program (and let the end user install it) is gtkada because I can hopefully rely on an rpm or deb being available. David Starner - dstarner98@aasaa.ofe.org