TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy

TEAM-ADA@LISTSERV.ACM.ORG

Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Tucker Taft <[log in to unmask]>
Reply To:
Tucker Taft <[log in to unmask]>
Date:
Tue, 1 Dec 1998 15:32:56 -0500
Content-Type:
text/plain
Parts/Attachments:
text/plain (46 lines)
> I would like an answer to the following as to why it wasn't considered
> for
> addition to the Ada standard:

User-defined attributes were considered.

> Why didn't user-defined attribute functions (not 'Read and 'Write) get
> incorporated into the standard.

Because the benefit seemed insufficient to justify the additional
complexity.

Feel free to instantiate the above answer whenever the above
question comes up.

If you want to delve into the history of the Ada 9X design process,
you will find that the design team came up with a very large number
of "interesting" ideas.  However, part of the process was developing
a consensus among the reviewers, and ultimately, we had to limit the
scope of the revision to something manageable by compiler implementors
in finite time with finite resources.

And even if implementability were not an issue, we had to deal
with the overall language complexity issue.  Sometimes adding
a new feature can actually simplify the language, by making it more
orthogonal.  Other times, a new feature adds to the overall
complexity of the language, without adding sufficient extra
capability.  When comparing complexity and power, it might be wise
to thing of complexity as having a larger "exponent" than capability
in the weighting.  A new capability only helps those who use it.
Added complexity can adversely affect all users.

> Example:
>   type An_Integer is range 0 .. 100;
>   function An_Integer'New_Stuff (A : in Integer) return An_Integer;
>
> Usage:
>   A : An_Integer;
>   B : An_Integer := An_Integer'New_Stuff (A);
>
> Well you get the gist.....
> --
> Chris Sparks

-Tucker Taft  [log in to unmask]

ATOM RSS1 RSS2