Ken Smith said:
[...]
C++ is mostly C with the object-oriented stuff added on. As a result it
is a bit of a kludge and had to retain a lot of the things that are
troublesome in C.
I'm not sure if this is a proper characterization either. Yes, C++ adds on
OO stuff, but there's are very few things that I can think of that isn't
elegant about how the additions were done. It is true that some people
claming to be performing 'object oriented programming' end up with a a
horrible mismash or OO stuff and 'regular' C, but this has more to do with
the programmer's knowledge and desires than the language itself.
You could convince me that some of the more adavanced template stuff and
RTTI in C++ gets a little messy.
Before there was C++, there were several 'C like' object oriented languages
as well, but breaking compatibility with traditional C seemed to be far too
high of a price to pay to get any widespread adoption.
Both C++ and Java can't pass a complex[1] type by value they always have
to pass them by reference.
This is not true, C++ can certainly pass complex types by value. I don't
know about Java.
This means that a function that increments one
of its passed parameters may or may not effect the caller's value
depending on the type of the variable.
Well, in any language that supports both 'call by reference' and 'call by
value,' this statement is true. However, the declaration of the function
makes it clear not only whether or not the data going into it is call by
value or call by reference, but also explitctly what the called routine can
do with that data (using the 'const' construct.)
I agree that Basic is easier to learn peicemeal than C++ and Java. Any
basic that plays with objects tends to end up complicated.
Visual BASIC is noticeably limited compared to something like C++ when it
comes to objects, but it's still a marked improvement over 'old school'
BASIC with no objects at all. There are some other BASICs out there that
are arguably more sophisticated than Visual BASIC, but given the later's
prevalence, it's a very good platform for anybody to use.
Things like
Visual Basic are about as hard to learn as C++ if you want to do anything
complex with them.
Mmm... perhaps so, but I'd have to say that 'advanced Visual BASIC' is
usually all about 'how do I hack the language to make it do something it
really wasn't intended to do?' whereas 'advanced C++' is more about 'what's
a clever way to make use of the more advanced _language_ constructs that's
often non-obvious to beginners?' A quick check on the table of contents of
books on, e.g., Amazon bears this out!
I really do believe that most people, as they become more advanced in Visual
BASIC, tend to start seeing limitations in what they can 'easily' do,
whereas with C++ they tend to start seeing new ways to make old things even
easier (if more abstract). I know several programmers who like to do their
GUIs in VB because it is very fast and easy to get the job done, but leave
the 'data processing' to C++.
---Joel Kolstad