comp.lang.ada
 help / color / mirror / Atom feed
From: "Marin David Condic" <dont.bother.mcondic.auntie.spam@[acm.org>
Subject: Re: status of Ada STL?
Date: Mon, 1 Jul 2002 09:12:28 -0400
Date: 2002-07-01T13:12:30+00:00	[thread overview]
Message-ID: <afpkfu$nbm$1@nh.pace.co.uk> (raw)
In-Reply-To: bebbba07.0206292005.45ad915a@posting.google.com

"Russ" <18k11tm001@sneakemail.com> wrote in message
news:bebbba07.0206292005.45ad915a@posting.google.com...
>
> Perhaps I am missing something here, but when you say the expression
> "Z = 0" has a "side-effect" on Z you lose me. I don't see how
> assignment can be considered a "side effect".
>
Think of the user definable Ada function:

function "=" (Left, Right : in Some_Type) return Boolean ;

You can call it as: "="(L,R) or as: L = R and in either case it returns a
Boolean. But note that the formals Left and Right are *in* parameters - they
cannot be changed. If Assignment were to be a "function" instead of a
primitive statement then you'd have to be able to make Left be an *in out*
parameter - which is illegal in Ada. Changing "Left" in a function call is a
"side effect" which C/C++ allows, but Ada does not.


> I confess I don't know didly about assignment in Ada, but I can tell
> you that assignment in C++ for user defined types is a member
> function. It does whatever the implementer of the class tells it to
> do. And it is considered good form to have it return a reference to
> "*this" so that assignment can be cascaded, as in "A = B = C = D".
>
Sure, but in Ada the way assignment is defined it is *not* a function so it
just doesn't behave in the same way as what it does in C/C++. Trying to make
it so would probably break the language because it has implications all over
the place with respect to the way other things in the language work.


> If a C++ class does not explicitly define an assignment operator, the
> compiler will define one by default. The default assignment operator
> is often perfectly good. In fact, the only time the class should
> define its own assignment operator is when the it contains a pointer
> to data on the heap that needs to be copied in the assignment
> operation. Otherwise, you are much better off with the default. The
> same applies to copy constructors, by the way. Newbies often
> misunderstand this and write their own unnecessarily, which can only
> cause unnecessary bugs.
>
You have the same capability in Ada. Yoy get assignment for free and if you
need to change the behavior, you derive from Controlled and define your own
Initialize, Adjust and Finalize subprograms. It actually works much cleaner
than Constructors and Destructors in C++ - especially where parameter
passing is concerned. The important thing is that you can acomplish the same
thing in Ada that you can in C++ - you just can't do it in exactly the same
syntactic/semantic manner.


>
> Ya, and what about Cobol, Basic, Fortran, Java, Perl, Python, Matlab,
> and Mathematica programmers? Should they all just get lost too?
>
If you want to program in Ada - program in Ada. If you want to program in
Cobol - program in Cobol. Changing Ada to make it look and act like Cobol is
just going to a) not work well and b) urinate-off existing Ada users. Get
lost? No. Just get comfortable with what Ada *is* and don't insist it be
something it isn't. Attempting to please everyone isn't going to work
anyway - Cobol programmers aren't going to switch to Ada if only Ada starts
supporting "Add X to Y Giving Z" syntax and semantics for assignment, so why
make the compiler writers and existing users go through agony to try to
persuade some Cobol guys to jump the fence?

The important thing about Ada is that it provides all the capabilities you
get with other languages and additional capabilities you don't get with
other languages. It doesn't do it identically - but a solution does exist.
You *can* achieve the same results and you get extra things on top of it. If
you want all those capabilities, then you work within the framework of what
Ada is and does. Asking Ada to look like and act like C++, Java, Fortran,
Cobol, Perl, etc. in order to make users of those languages more comfortable
is just a hopeless task.


> As I said, I have no idea how assignment works in Ada, but it would be
> nice if it worked as well as it does in C++.
>
It works just fine. It works (IMHO) better than it does in C++. Its far less
of a cobbled together hack that requires all sorts of "I before E except
after C or when sounded as A as in Neighbor and Weigh..." kinds of
exceptional rules. It just doesn't work *identically* to assignment in C++,
so one needs to learn how to work with The Ada Way. Trying to force Ada to
do assignment in an identical way to that of C++ is like trying to teach a
pig to dance. The results won't be very pretty or successful and it will
only annoy the pig.

MDC
--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas    www.pacemicro.com
Enabling the digital revolution
e-Mail:    marin.condic@pacemicro.com





  parent reply	other threads:[~2002-07-01 13:12 UTC|newest]

Thread overview: 188+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-14  7:21 status of Ada STL? Russ
2002-06-14 16:29 ` Stephen Leake
2002-06-14 18:44 ` Ted Dennison
2002-06-14 20:34 ` Ehud Lamm
2002-06-15 18:52   ` Russ
2002-06-16  2:42     ` David Marceau
2002-06-16  8:07     ` Pascal Obry
2002-06-16 18:23       ` Russ
2002-06-16 19:01         ` Pascal Obry
2002-06-16 19:04         ` Vinzent Hoefler
2002-06-17  1:59           ` Jeffrey Carter
2002-06-17  6:48             ` Russ
2002-06-17  7:04               ` Dale Stanbrough
2002-06-18  6:16                 ` Russ
2002-06-19  1:07                   ` Dale Stanbrough
2002-06-17  9:38               ` chris.danx
2002-06-17 15:53               ` Ted Dennison
2002-06-18  7:52                 ` Russ
2002-06-18 10:57                   ` chris.danx
2002-06-18 14:38                   ` Robert A Duff
2002-06-18 16:19                     ` Brian Rogoff
2002-06-18 17:12                       ` Frank J. Lhota
2002-06-18 18:03                         ` Brian Rogoff
2002-06-18 19:24                           ` Frank J. Lhota
2002-06-18 19:41                             ` Brian Rogoff
2002-06-25  0:02                         ` Steven Deller
2002-06-25  1:24                           ` Yet another assignment variation (was Re: status of Ada STL?) Dale Stanbrough
2002-06-25 12:53                             ` Frank J. Lhota
2002-06-25 17:48                             ` Georg Bauhaus
2002-06-26  3:13                             ` Robert A Duff
2002-06-18 19:03                     ` status of Ada STL? Robert A Duff
2002-06-18 19:54                       ` Brian Rogoff
2002-06-18 21:09                         ` Robert A Duff
2002-06-18 23:36                           ` Brian Rogoff
2002-06-19  1:37                             ` Robert A Duff
2002-06-19 16:25                               ` Brian Rogoff
2002-06-19 18:53                                 ` Robert A Duff
2002-06-19 20:23                                   ` Brian Rogoff
2002-06-19  3:57                           ` Russ
2002-06-18 21:55                   ` Dmitry A.Kazakov
2002-06-19  5:32                     ` Russ
2002-06-19 12:37                       ` Dmitry A. Kazakov
2002-06-20  6:50                         ` Russ
2002-06-20 12:21                           ` Ted Dennison
2002-06-20 21:42                           ` Dmitry A.Kazakov
2002-06-20 18:20                             ` Russ
2002-06-21 10:27                               ` Dmitry A. Kazakov
2002-06-20 18:21                             ` Russ
2002-06-20 19:09                             ` Russ
2002-06-17 17:16               ` Pascal Obry
2002-06-18  5:27                 ` Russ
2002-06-17 17:17               ` Pascal Obry
2002-06-17 21:40             ` Vinzent Hoefler
2002-06-17  5:20           ` Russ
2002-06-17  8:22             ` chris.danx
2002-06-17 14:00               ` Frank J. Lhota
2002-06-17 15:57               ` Marin David Condic
2002-06-18  6:12               ` Russ
2002-06-18  8:16                 ` chris.danx
2002-06-18 14:52                   ` Robert A Duff
2002-06-18 16:02                     ` Pascal Obry
2002-06-18 16:54                       ` Hyman Rosen
2002-06-18 22:58                         ` Jacob Sparre Andersen
2002-06-18 19:09                     ` Robert A Duff
     [not found]                     ` <ud6uolglz.fsf@w <wccsn3kxv3g.fsf@shell01.TheWorld.com>
2002-06-19  8:09                       ` Pascal Obry
2002-06-19  3:04                   ` Russ
2002-06-19 16:40                     ` Hyman Rosen
2002-06-19 18:07                       ` Brian Rogoff
2002-06-18  9:37                 ` Fraser Wilson
2002-06-18 15:45                   ` Hyman Rosen
2002-06-19 16:55                   ` Robert I. Eachus
2002-06-19 19:13                     ` Robert A Duff
2002-06-20  7:43                       ` Dmitry A.Kazakov
2002-06-22 22:05                       ` Robert I. Eachus
2002-06-17 21:40             ` Vinzent Hoefler
2002-06-18 15:05               ` Robert A Duff
2002-06-18 22:36                 ` Vinzent Hoefler
2002-06-19 12:45                   ` Dmitry A. Kazakov
2002-06-19 14:35                     ` Marin David Condic
2002-06-21 11:03                       ` Dmitry A. Kazakov
2002-06-21 16:58                         ` Mark Biggar
2002-06-22 23:23                           ` Dmitry A.Kazakov
2002-06-27  3:00                       ` David Thompson
2002-06-28 13:36                         ` Marin David Condic
2002-06-30  4:05                           ` Russ
2002-06-30 13:50                             ` Ted Dennison
2002-07-01 13:12                             ` Marin David Condic [this message]
2002-07-02 19:56                           ` Robert A Duff
     [not found]                           ` <bebbba07.0206292005.45ad915a@p <wcc4rfhj43l.fsf@shell01.TheWorld.com>
2002-07-02 20:40                             ` Pat Rogers
2002-06-18 15:21             ` Robert A Duff
2002-06-19  0:34               ` tmoran
2002-06-19  2:55               ` Russ
2002-06-19  4:53                 ` Ted Dennison
2002-06-19  8:21                 ` Pascal Obry
2002-06-19 14:52                 ` Stephen Leake
2002-06-20  1:45                 ` SteveD
2002-06-20  2:01                   ` Ted Dennison
2002-06-16 20:01         ` Pascal Obry
2002-06-17  5:29           ` Russ
2002-06-16 23:02         ` Ted Dennison
2002-06-17  5:07           ` Russ
2002-06-17 14:03             ` Frank J. Lhota
2002-06-17 14:11             ` Ted Dennison
2002-06-18  5:55               ` Russ
2002-06-18 14:30                 ` Ted Dennison
2002-06-18 15:14                   ` Marin David Condic
2002-06-19 14:19                     ` Ted Dennison
2002-06-19 16:05                       ` Marin David Condic
2002-06-19  5:58                   ` Russ
2002-06-19 14:35                     ` Ted Dennison
2002-06-20  7:06                       ` Russ
2002-06-20 12:27                         ` Ted Dennison
2002-06-20 23:22                           ` Russ
2002-06-21  2:00                             ` Ted Dennison
2002-06-22  4:28                               ` Russ
2002-06-22 15:05                                 ` Ted Dennison
2002-06-21  8:48                             ` Ian Wild
2002-06-22  4:54                             ` Russ
2002-06-20 22:47                   ` Russ
2002-06-21  0:43                     ` Ted Dennison
2002-06-22  4:05                       ` Russ
2002-06-22 14:41                         ` Jano
2002-06-22 20:27                         ` Ted Dennison
2002-06-21 13:12                     ` Marin David Condic
2002-06-24  8:29                       ` Russ
2002-06-24 20:19                         ` Chad R. Meiners
2002-06-18 22:36                 ` Vinzent Hoefler
2002-06-18 22:42                   ` Ed Falis
2002-06-19  0:07                     ` Vinzent Hoefler
2002-06-19  0:07                   ` Vinzent Hoefler
2002-06-17 22:37             ` Dmitry A.Kazakov
2002-06-17 14:09               ` Frank J. Lhota
2002-06-18 21:40                 ` Dmitry A.Kazakov
2002-06-18 16:04         ` Robert A Duff
2002-06-18 16:37           ` Pascal Obry
2002-06-18 18:56             ` Robert A Duff
2002-06-18 22:20               ` Pascal Obry
2002-06-19 12:53               ` Dmitry A. Kazakov
2002-06-19  3:37           ` Russ
2002-06-19  8:31             ` Pascal Obry
2002-06-20  7:58               ` Russ
2002-06-20 20:34                 ` Pascal Obry
2002-06-21  4:07                   ` Russ
2002-06-17 15:33     ` Marin David Condic
2002-06-18 10:28       ` Adrian Hoe
2002-06-19  7:58         ` Ole-Hjalmar Kristensen
2002-06-19 13:55           ` Marin David Condic
2002-06-19 13:52         ` Marin David Condic
2002-09-18 15:23           ` Matthew Heaney
2002-09-19 12:11             ` Marin David Condic
2002-09-19 14:13               ` Hyman Rosen
2002-09-20 12:24                 ` Marin David Condic
2002-09-22  7:22                   ` Kevin Cline
2002-09-23 13:55                     ` Hyman Rosen
2002-09-19 19:42               ` Randy Brukardt
2002-09-20 12:38                 ` Marin David Condic
2002-09-27 21:21                   ` Michael Bode
2002-09-27 22:11                     ` Pat Rogers
2002-09-28 13:25                       ` Marin David Condic
2002-09-28 14:52                         ` Pat Rogers
2002-09-28 15:18                           ` Martin Dowie
2002-09-29 18:02                           ` Marin David Condic
2002-09-29 19:02                             ` Jeffrey Carter
2002-09-30  1:36                               ` Marin David Condic
2002-10-02 22:17                     ` Matthew Heaney
2002-09-28 17:25                 ` Richard Riehle
2002-09-30 17:12                   ` Marin David Condic
2002-10-01 18:41                     ` Randy Brukardt
2002-10-02  8:38                       ` Jean-Pierre Rosen
2002-10-02 12:43                         ` Marin David Condic
2002-10-02 14:26                           ` Jean-Pierre Rosen
2002-10-02 12:30                       ` Marin David Condic
2002-06-18  1:56     ` SteveD
2002-06-18 14:12       ` Robert A Duff
2002-06-18 14:28         ` chris.danx
2002-06-18 15:59           ` Pascal Obry
2002-06-18 18:58           ` Robert A Duff
2002-06-18 19:58           ` Randy Brukardt
2002-06-19 14:07             ` Marin David Condic
2002-06-19  2:19         ` SteveD
2002-06-18 11:40     ` Colin Paul Gloster
2002-06-20 15:15       ` Colin Paul Gloster
2002-06-18 19:34     ` Mike Silva
2002-06-25 16:31     ` Kevin Cline
2002-06-14 20:34 ` Dan Andreatta
  -- strict thread matches above, loose matches on Subject: below --
2002-06-17 11:05 Grein, Christoph
2002-06-18  5:36 ` Russ
2002-06-26 10:50 Grein, Christoph
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox