Boost logo

Boost :

From: danl_miller (danl_miller_at_[hidden])
Date: 2002-02-18 13:59:55


--- In boost_at_y..., "Herb Sutter" <hsutter_at_a...> wrote:
> Hi folks,
>
> Pardon if this has already been discussed on the list, but I'd like
your
> feedback on this question: "What are the most needed or desired
features in
> C++ for modern library writing in general and Boost in particular?"
>
> Two usual suspects:
> - typedef templates
> - typeof (with gcc semantics?)
>
> What else should be on the list? For example, is there language
support that
> would assist type traits?
>
> Thanks,
>
> Herb

  While we are on the topic of what-ifs to permit greater expressivity
to authors of library/infrastructure and greater
expressivity/convenience in the usage of libraries/infrastructure, 1)
I would like to see the compile-time multi-paradigm philosophy of C++
(or a new separately-named extension to C++) to keep extending to
aspect-oriented programming or 2) I would like to see every aspect of
the standard libraries keep an eye on whether it is in favor of AOP
versus in opposition to AOP versus AOP-inconsequential.

  My attraction to C++ is 1) not merely for functional
procedure-oriented-programming (POP) with sequentially-executed
statements within functions, 2) not merely for object-oriented
programming (OOP) with classes, 3) not merely for generic programming
(GP) with parameterized types, and 4) not merely for being able to
fine-tune runtime efficiency by design/language-feature decisions.
But rather my attraction to C++ is because C++ successfully
accomplishes a unification of all of these paradigms with the
restriction that the paradigm be expressible (by the compiler) at
compile-time (which is largely what permits goal #4).

  AOP is yet another style of programming. I would like to see either
C++ language, C++ standard libraries, or both consistently perform a
self-assessment to verify whether AOP is being included within C++ or
excluded from C++ (and why).

  The core mission of an AOP aspect-weaver is a *compile-time*
operation which seems like it might have a home somewhere in the C++
school of thought. Some of the other prior emails in this tree of
threads might also fit with AOP: reflectivity of a portion of the
information-base that the compiler built up, archetypes indicating
template-parameter interface-satisfiability, (intraclass
member-)packages. Conversely, maybe the addition of AOP and
archetypes would be such a drastic extrapolation from the POP/OOP/GP
history of C++ that a new superset-extension language might be in
order (just as C-with-Classes/C++ was to C), call it: C++++ ;^)

  [I have been working with C++ for over 10 years now. I am a fresh
newbie when it comes to AOP, so I am not an expert in AOP, but AOP
does seem at first glance to have some attractive
infrastructure-commonality-expressivity features which appear to not
be fully provided yet by C++ or by C++'s standard libraries.]
  Rather than me fumble my way through explaining AOP, here are
references to AOP topics which appear to be flowing directly or
indirectly from Xerox PARC:
  http://aosd.net
  http://aspectj.org (a Java community's perspective)
  http://www.parc.xerox.com/csl/groups/sda


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk