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-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,efe03f20164a417b X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 1995-03-17 07:47:38 PST Path: bga.com!news.sprintlink.net!howland.reston.ans.net!math.ohio-state.edu!jussieu.fr!univ-lyon1.fr!swidir.switch.ch!epflnews!dinews.epfl.ch!lglsun!nebbe From: nebbe@lglsun.epfl.ch (Robb Nebbe) Newsgroups: comp.lang.ada Subject: Re: An observation of Ada (may offend) Date: 17 Mar 1995 15:23:02 GMT Organization: Ecole Polytechnique Federale de Lausanne Sender: nebbe@lglsun3.epfl.ch (Robb Nebbe) Distribution: world Message-ID: <1995Mar17.144930@lglsun.epfl.ch> References: <3kbkm1$41o@miranda.gmrc.gecm.com> NNTP-Posting-Host: lglsun3.epfl.ch Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Date: 1995-03-17T15:23:02+00:00 List-Id: In article <3kbkm1$41o@miranda.gmrc.gecm.com>, bill@valiant.gmrc.gecm.com (R.A.L Williams) writes: |> |> Anyway, FWIW, here's a list (in no particular order). I'd be interested |> to see how many strike a chord with other people: ... |> b. No bit level manipulation (fixed in Ada95 but only for unsigned |> ie. mod INTEGERs, I can't test a sign bit, not that I need to) HCTBAEL. It is trivial to write a generic package providing bit manipulation on arbitrary integer types in Ada 83. I would expect that it would usually be more appropriate to check if a value was < 0 rather than checking the sign bit but I'll assume you had a good reason. |> |> h. And a special one for Ada95: poor encapsulation of objects. I can |> define a 'member function' for a class by including the class in the |> parameter list. Unlike C++ or Eiffel, I can do this *anywhere* in my code, |> even a nested function hidden somewhere seemingly 'irrelevant'. Whereas |> other features of Ada go out of their way to force the programmer to |> follow 'good practice' (sometimes a matter of opinion), this seems |> very lax. If you declare a private type then the only place you can see the implementation is from inside the package where the type is declared (or a child package). You can declare subprograms that have parameters of this type elsewhere but that certainly doesn't qualify as a 'member function'. The idea you are looking for is 'primitive operations' which a explained in the LRM. Robb Nebbe