General Beginner Advice

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

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
 
Alex said:
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.
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
 
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
 
Alex said:
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
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.

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
 
Additional comments for Alex:

William DePalo said:
We are all on a first name basis here.


You are welcome.


Questions are what drives these groups.


Correct. That's why I suggested it.


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.


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.

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.

[...]
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
 
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
 
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
 
Back
Top