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,6b6619eb9cada212 X-Google-Attributes: gid103376,public From: Brian Rogoff Subject: Re: Help me to chose between ADA 95 and C++ Date: 1999/12/14 Message-ID: #1/1 X-Deja-AN: 560784703 References: <01bf37fb$a91afb60$0564a8c0@IS-D2D04C.test> <829rbv$a8m$1@nntp6.atl.mindspring.net> <01bf3e32$0b9dc880$022a6282@dieppe> <385112AE.7E2CFA9@rdel.co.uk> <38564CD6.F13F69FB@rdel.co.uk> Content-Type: TEXT/PLAIN; charset=US-ASCII X-Trace: nntp1.ba.best.com 945221426 223 bpr@206.184.139.136 MIME-Version: 1.0 Newsgroups: comp.lang.ada Date: 1999-12-14T00:00:00+00:00 List-Id: On Tue, 14 Dec 1999, Chris Powell wrote: > Brian Rogoff wrote: > > > Of course, none of this is really OO, but I think OO is way overrated anyways. > > Since you mention STL in the same paragraph as OO, I suppose I should ask > > you what you mean by OO. Most people wouldn't consider the STL OO, > > including its authors. > > Its true that the STL is not implemented using OO constructs, but it is > conceptually OO, with the concept of a container base class defining > methods for manipulating elements, which are overriden to work > differently for specific container types and the abstraction of > iterators which can work on any type of container... but this wasn't > really why I mentioned the STL: Conceptually, its just modular/ADT style programming with heavy use of parameterized types. The main idea is decoupling containers from the algorithms which work on them by providing intermediary structures for traversing and accessing those containers (called "iterators") and writing all of the algorithms in terms of these iterators. The important efficiency argument given by STL proponents is that there is no run time dispatching in the library at all; everything is known at compile time and so a sufficiently smart compiler could optimize it to the speed of hand written C code (in theory!). Even if we use the "state based" definition of OO proposed by some here, I'd still argue that STL doesn't fit. I can achieve the same goals in SML or OCaml using the module system, which has structures, signatures, and functors (Ada 95 fans read packages, generic signature packages, and generic packages with formal package parameters respectively :-). I might lose some of the mutating capabilities, but I could easily write a functional STL in one of the MLs. > If I were to choose Ada 95 for OO programming I would have a safer > program, at the expense of more obscure OO syntax. So, in order to use > the syntax that I prefer, ie. C++, I need to find ways to make C++ > programs safer and one way is to use the STL. Yes, that's true. > > I suppose I could be convinced that C++ is more convenient for a "pure OO" > > style of programming than Ada. Let's see those examples... > > I have posted one example. I guess it comes down to how important you > think programming elegance is, compared to intrinsic safety. I feel I am > experienced enough in C++ to be rarely caught out, but I admit there are > some nasty gotchas! I'd rather the language defaulted to "very safe" and allowed you to be unsafe with some extra effort. I think C and C++ are the opposite. Also, there are lots of (non-OO) things that are more elegant (IMO of course) in Ada than C++, though I admit that Ada support for MI is weaker than C++. I am very glad to hear Tucker Taft mention that Java style interfaces (or GNU C++ style signatures :-) are being considered for a future Ada. BTW, I don't consider C++ a swear word, and unlike many Ada folk I do appreciate that the implicit instantiation (well, some of it) of templates can enhance readability. But for "safety critical" software? I skept. Those nasty gotchas you can avoid may not be so easily avoided by less competent programmers like me. -- Brian