He writes and talks a lot about the 4 paradigms nowadays:
1) C-Style Programming
2) Data Abstraction
3) OO Prgramming
4) Generic Programming
That seems to fit the 4 most often used terms for the different paradigms
that C++ allows. Though, I've often seen the term "procedural" programming
for 1) and "Object Based" for 2). If I'm not mistaken, in Lippman's C++
Primer, the section before OO, is titled Object Based Programming.
There also is a lot of work going on to extend C++ into the functional
paradigm, such as Boost's Lamba library and another one called FC++. For
the latter, there is even a library extending FC++ to the declarative or
functional-logic paradigm. Its called LC++:
http://www.cc.gatech.edu/~yannis/lc++/
So it might be the case that C++ has 6 paradigms. If you include the work
going on in "template metaprogramming", which I'm not familiar with yet, and
it in fact extends the template mechanism beyond (good term "meta", since it
is the greek based term for beyond) its orginal design (which I heard it
does), then this might be another paradigm as well. On the new C++/CLI
extensions, its hard to say if it creates another paradigm, but I think it
might, since its goal is to allow all the C++ mechanisms to be run in a
managed run time enviroment and even the ability to run in both the managed
and unmanaged environment. This does in some sense, change the way you
program and the mental model you have of going about it.
Oh yeah, lets not forget there is also an extension to add Aspect Oriented
Programming to C++:
http://www.aspectc.org/
So as I see it, here are the paradigms C++ allows:
(1) Proceedural
(2) Object Based (or Data Abstraction)
(3) Object Oriented
(4) Generic
(5) Functional
(6) Declarative
(7) Metaprogramming
(8) Aspect Oriented
(9) Managed Runtime (aka C++/CLI)
I would say the first 4 are the core paradigms, and the last 5 are yet to
have wide spread adoption, though (5), (7), and (9) are strong canidates for
it. Also, (9) is still fuzzy as to whether it is in fact a new paradigm or
just an extension to target a managed environment.
- Don Kim