Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / Managed C++ / July 2005

Tip: Looking for answers? Try searching our database.

General Beginner Advice

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Alex - 16 Jul 2005 16:28 GMT
Hello

I am intersting in developing and my background is VBA used in Excel and a
brief intro to Java.

I am interested in learning beyond VB and feel that C++ would be a very good
language to get to know and give a lot of flexibility (if not tough to learn).

I would like some advice on the merits of learning C++ versus C# or Visual
Basic or Java for that matter.

Please forgive my naivety at this point. I want to buy the Visual Studio
that MS offers. Presumably I would want to buy Visual Studio.NET and this
would enable programming in both Visual Basic and C++ for both Windows and
Internet projects?

Before I part with my cash I want to ensure that i am getting the right
product. Somebody told me that VB 6 is 'outdated' and that I must get .NET.
Does this make sense?

I would greatly appreciate any advice that anybody can offer. I am excited
about starting some new learning.

Regards

Alex
William DePalo [MVP VC++] - 16 Jul 2005 17:15 GMT
> I am intersting in developing and my background is VBA used in Excel and a
> brief intro to Java.

OK.

> I am interested in learning beyond VB and feel that C++ would be a very
> good
> language to get to know and give a lot of flexibility (if not tough to
> learn).

Right on all counts.

> I would like some advice on the merits of learning C++ versus C# or Visual
> Basic or Java for that matter.

C++ is the most widely used general purpose language whose goal is to give
its developers the widest lattitude. C# is a great language for developing
applications that run on the .Net platform and Java isn't bad as a
cross-platform, object oriented language. Both C# and Java favor simplicity
over performance and expressiveness.

> Please forgive my naivety at this point. I want to buy the Visual Studio
> that MS offers. Presumably I would want to buy Visual Studio.NET and this
> would enable programming in both Visual Basic and C++ for both Windows and
> Internet projects?

I wouldn't buy anything yet. I'd go here and download the betas of the
starter editions of the next version of the developer tools here:

http://lab.msdn.microsoft.com/express/

Get a feel for the language and environment and choose one you like.
Sometime later this year (the products all have 2005 in the name <g>) you
should be able to buy the released version of your chosen language.

> Somebody told me that VB 6 is 'outdated' and that I must get .NET.

Outdated or not, it is dead. Mainstream support is over. MS has said they
will invest no more resources in that tool.

> Does this make sense?

It is a reality.

Regards,
Will
Alex - 16 Jul 2005 21:46 GMT
Mr DePalo

Thanks for your response. A few more questions if that is ok.

(1) Presumably I do not need to pay for a beta version of software and there
are no strings attached?

(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?

(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

(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.

(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?

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 hope that you can find time to comment. I'd enjoy listening to your
opinions.

Best regards

Alex

> > I am intersting in developing and my background is VBA used in Excel and a
> > brief intro to Java.
[quoted text clipped - 42 lines]
> Regards,
> Will
William DePalo [MVP VC++] - 16 Jul 2005 23:43 GMT
> 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
Hendrik Schober - 20 Jul 2005 10:53 GMT
> [...]
> (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

j-integra_support@intrinsyc.com - 29 Jul 2005 00:21 GMT
Hi Alex,

With J-Integra for COM, you can also use Java to access and control VBA
of Excel or access and control Excel from Java directly. J-Integra for
COM is an interoperability tool which bridges any COM components (e.g.
Microsoft Office) and any Java objects (e.g. Application, Applet, JSP,
Servlet, J2EE, etc).

For a free evaluation, visit http://j-integra.intrinsyc.com/

Regards,

Raymond HE
Intrinsyc Software International, Inc.
J-Integra Interoperability Solutions
http://j-integra.intrinsyc.com/
When Web Services are not enough

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.