> Mr DePalo
We are all on a first name basis here.
> Thanks for your response.
You are welcome.
> A few more questions if that is ok.
Questions are what drives these groups.
> (1) Presumably I do not need to pay for a beta version of software
Correct. That's why I suggested it.
> and there are no strings attached?
Apart from installing the pre-requisites, e.g. the .Net framwork, that is
correct, there are no strings. Betas tend to expire (stop working) at some
point in the future. I don't know what that date is.
> (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?
There is not unanimous agreement on this point. But, among the people whose
judgement I trust, teaching a novice C before C++ is generally considered to
be the wrong thing to do. On the other hand, there is pretty general
consensus that one should start with generic C++ and not introduce the extra
complexity of learning to program Windows or Linux or whatever flavor of
Unix it is that the Mac runs.
> (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?
It is a really nice, neat language, whose goal is, IMO, to reduce complexity
and improve productivity. But it is only an option on machines on which the
.Net framework is already installed.
> For example, I hear things like C++ does not
> have efficient 'garbage collection' whereas that is a forte of Java.
C++, like C, leaves all of the details -including memory management - to the
programmer. It is _no_ garbage collection. If you don't take out the trash,
no one will.
> I don't profess to understand all this and am not even sure at my level of
> programming it even matters.
There is no easy answer. The switch from _anything_ else to C++ is likely to
leave you feeling like Dorothy when she was whisked out of Kansas for Oz.
:-)
> Still, as an MVP could you comment
Sure, MVPs always have something to say about everything. <g>
I don't want to dissuade you from learning C++.
I don't want you to think it will necessarily be as much fun, say, as VB or
VBA, either.
It is for lots of us. But it will take time and effort. In general, C++ it
is _not_ a hobby, rather it is a vocation.
> (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
[quoted text clipped - 6 lines]
> Java figure highly, more so than VB. So I figured that C++ must be a good
> starting point and have many worthwhile uses.
C++ imposes the least restrictions on the developer. But if your focus is
getting something done _soon_, IMO C++ is the wrong choice. I hope you get
advice from others as well, but I don't see you writing a windowed
application in C++ for 6 months to a year. On the other hand, using C# and
WinForms you'd probably be loooking at a learning curve less than half as
steep.
> (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?
What you need is an enviornment that allows you to call the shell functions
in the Windows Application Programming Interface (aka Win32 API). Trying to
pick up the API at the same time you pick up a new language is a huge
undertaking.
> Can I do this with Visual Studio or do I always have to have it running
> in the background?
Yes.
> 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.
I wish I had an easy answer for you. I don't. That's why I suggested the
empirical approach of downloading the express editions to find out which
language suits you best.
> I hope that you can find time to comment. I'd enjoy listening to your
> opinions.
Done. My pleasure.
Regards.
Will
Bo Persson - 17 Jul 2005 09:53 GMT
Additional comments for Alex:
>> Mr DePalo
>
[quoted text clipped - 29 lines]
> whose judgement I trust, teaching a novice C before C++ is generally
> considered to be the wrong thing to do.
The problem is that some parts of C, like string handling and I/O, have
*lots* of little details to learn. When moving to C++, there are other
ways to do this, and those parts of C are very rarely used in idiomatic
C++. So you will have to learn, and then un-learn, some parts of C.
[...]
>> For example, I hear things like C++ does not
>> have efficient 'garbage collection' whereas that is a forte of Java.
>
> C++, like C, leaves all of the details -including memory management -
> to the programmer. It is _no_ garbage collection. If you don't take
> out the trash, no one will.
The way C++ works, there is generally much less need for garbage
collection than in Java. Most often, a class owns its memory resources,
and will know when it is time to release it.
Should you really need it, you can hire a garbage collector anyway. Even
though it is not defined by the language, there is nothing (much) that
stops you from using one.
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
[agree on everything else]
Bo Persson
> [...]
> (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
[quoted text clipped - 3 lines]
> 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

Signature
SpamTrap@gmx.de 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