Alex said:
[...]
(2) On the subject of programming, I read a pro develepor ( I am just a
hobbyist) say that it is bext to start with C as this would give the greatest
scope to progress to other languages e.g. C++, C#, Java. Is that fair? Or can
one easily migrate to other languages once one is learnt?
I disagree strongly.
C++ allows you a to do a lot of things in a better
(read: less error prone) way than C. If you learn
C first, you will have to fight habits that you
needed to learn the hard way to become a good C++
programmer.
(3) My impression has always been that C# was developed to overcome the
shortfalls of C and C++. This seems to imply that of the three C based
languages that C# is the best? For example, I hear things like C++ does not
have efficient 'garbage collection' whereas that is a forte of Java. I don't
profess to understand all this and am not even sure at my level of
programming it even matters. Still, as an MVP could you comment
C++ is a multi-paradigm language. It does actively
support structured, object-oriented, generic, and
other ways to program. C was created to support
structured programming, Java was created to support
object-oriented programming. (I don't know C# well,
but I think it's all about OO, too.)
C# and Java are designed so that they require less
attention from the programmer. For example, they
take care of all memory issues. However, this comes
at a cost. They are less flexible and don't allow
you to fiddle with the low-level details. Java (I
haven'T looked into C#) mainly only knows dynamic
memory, whereas C++ has stack-based automatic
objects, which are cheaper (performance-wise) and
feature deterministic destruction. The latter
enables very elegant resource management.
I have taught C++ to programming novices and to
those who already had exposure to Java. IME it
seems relatively hard to switch from Java to C++.
OTOH, it seems like C++ programmers pick up Java
rather easily. From what little I know about C#,
I would suppose it is similar there.
(4) My first introduction was with VBA and I thoroughly enjoyed it and was
enthused by the ability to create my own applications to streamline
day-to-day work. I am looking to expand so that I can create standalone apps
on the Windows platform as well as have the ability to create some web based
stuff too. I did a search on the most sort after computer skills and C++ and
Java figure highly, more so than VB. So I figured that C++ must be a good
starting point and have many worthwhile uses.
If you decide to learn C++, be prepared for a much
steeper learning curve than in VB, Java, or C#.
You should probably plan to learn "pure" C++ first,
and only then add platform-specific stuff (which
you'll need to create really useful apps).
Take time to pick good books and be prepared that
you probably need more than one to learn C++. You
can find good book reviews at
www.accu.org. If you
are prepared for a steep learning curve, I would
recomment looking at Koenig/Moo's "Accelerated C++"
(about 250 pages), otherwise you should probably
look at Lippmman/Lajoie/Moo's "C++ Primer" (about
1000 pages, watch for the newest edition, IIRC it
is the 4th).
(5) Finally, a dummies question. What do I need to create an application on
Windows that can sit as a desktop icon and run without any other environemnt
open? Can I do this with Visual Studio or do I always have to have it running
in the background?
You can certainly do this using VS, but as I said:
If you plan to do this in C++, it might be better
you learn C++ first.
In general I am trying to find the best way to go. Given the effort I will
put in to learning a new language I would like to make the right choice from
the start.
What is right depends on many things and is very
different for everyone.
Schobi
--
(e-mail address removed) is never read
I'm Schobi at suespammers dot org
"Coming back to where you started is not the same as never leaving"
Terry Pratchett