Sorry I'm not an English Native also not that much used with English
Language. I'll try my level best to improve. I'm also from India.
India, the US, Australia and all the other former colonies
each have their own dialect of English. If you learn
a different dialect, there will always be someone who will
tell you it's wrong.
Obviously C++ is in the category of Object Oriented Programming
Languages. Actualy this is what I really tried to communicate by using
the word "category".
Smalltalk, Eiffel, ADA etc... are some of the OOP Languages which I
only heard about.
In SmallTalk all objects (including those with primitive types)
are created dynamically (new'ed). But the "pointers" to
objects are untyped. If you want to write (for example)
a "sort" function in C++ using OO, you have to assume
the objects you sort inherit from some kind of "sortable"
common base class. You don't have to worry about that
in SmallTalk. You write your sort function using the
untyped pointer. You will get a runtime error if you
use "sort" on objects that don't have the necessary
comparison operation that the sort function uses. In
general terms, this means that the "dialect" of OO
that is present in SmallTalk is more flexible than
the combination of OO and Templates in C++.
The price that is paid by SmallTalk (and similar
languages) for this flexibility is that function calls
normally require a hash table lookup, so they are
slower than function calls in C++.
SmallTalk has some silly "religous" rules, like
all member variables have to private, and all
member functions have to be public. C++ is
a very practical language because (at least in
the early days) proposed features were
driven around the block a few times by Bell Labs
programmers before going into the language.
I don't care for SmallTalk's syntax, but of
course everyone has there own ideas about
aesthetics.
As Dr. Stroustrup repeats constantly, there is
no programming language that will always fill
everyones needs in all situations better than
all other languages.
When I went through the new standard proposals, some of the proposed
library extentions and other core language features are already there
in the other programming languages which I mentioned above. That is
the real trigger to post this question.
This may be because C++ is meant to be capable
of near-assembler performance under most OSes
and CPU architectures. This is a big difference
with Java, SmallTalk, etc. It makes it MUCH
harder to design libraries and certain language
features that can be implemented well in so
many different target environments.