VB or C#

M

Mike

I know this question has been asked over and over again
But I'm currently doing VB.NET development and just finished migration of a
VB6 app to VB.NET(asp.net) web app. I wanted to do the conversion in C# but
time didn't allow me to learn C# as I went.

My question is in my area all i'm seeing is Jobs for C# developers and even
online i'm seeing examples, tutorials, etc, in C#. should C# be the way to
go or just stick with VB.NET?

I've been doing VB.NET programming for 3 yrs now and comfortable with it.
Should i stay on this road or learn C# and go down that path for future
programming jobs?
 
C

Cliff Harris

On the same note, I'd be interested to hear what people think about the
merrits of learning, or continuing to practice C++.

-Cliff
 
M

Mark Rae

I've been doing VB.NET programming for 3 yrs now and comfortable with it.
Should i stay on this road or learn C# and go down that path for future
programming jobs?

Impossible to answer this one for you. All I can say is that I'd made a good
living with Visual Basic (VB, VBS, VBA, AccessBasic, WordBasic etc) in all
its flavours since pretty much VB3 and, a few years ago, if you'd told me
that I'd stop using it in favour of a language with its foundations firmly
in C/C++, I'd have laughed in your face! But that's exactly what's happened
:) I tried C# as soon as I received my initial beta copy and just loved it.
I can't remember when I last wrote any new compiled code in anything else,
though I still support legacy systems for clients etc...

But you're 100% correct about the way the market is going. If, like me,
you're an IT contractor, ignore C# at your peril!
 
B

Bonj of Beeeeeves

I know this question has been asked over and over again
But I'm currently doing VB.NET development and just finished migration of a
VB6 app to VB.NET(asp.net) web app. I wanted to do the conversion in C# but
time didn't allow me to learn C# as I went.

Oh dear. I explained to management that VB.NET was nothing like VB6
so the migration to it would be worse because it looks the same but would
therefore be confusing to me coming from VB6, so I would be better of
learning C# which besides has language specifications outside MS (what
good that is I don't know, but still - it sounds good), and they're happy
with that.
You should try to point out to them the disadvantages of VB.NET if you don't
like it - and give them enough reason to bear with you while you pick up C#
(the practice of carrot-dangling may have to be used - or even a blatant
lie:
"C# is faster" springs to mind...), even if you omit to
mention that the reason you'd prefer C# is because it's more commercially
popular. Too bad that they know that you already know VB.NET, but
getting round that is part of the skill of being a developer.
Also in terms of language, you're very close to both C++ AND Java if you
know c#, the only real difference is the structure of projects and the way
things
are compiled - pick those respective elemtns up and you can list those
languages aswell.

My question is in my area all i'm seeing is Jobs for C# developers and even
online i'm seeing examples, tutorials, etc, in C#. should C# be the way to
go
Yes.

or just stick with VB.NET?

Your wallet is begging you to learn C#.
 
M

Marina

I think it's worth it to become familiar with C# and the capabilities it has
that VB.NET doesn't.

The fact is, 99% of what the languages can do is identical - because the
power is really all in the framework. For almost everything there is a 1 to
1 correspondance, and for the most part it is trivial to go from one
language to the other.

So it'll be worth it if you are familiar with it, just so you can tell
people who dont' know any better 'yes, i know C#', and they think it's
something completely different and complicated. It will obviously also be
helpful if you ever need to do something VB.NET can't do (although for most
types of work I dont' think this is applicable).

But I don't think one or other is going to be marketable, because like I
said, they are pretty much the same thing at this point. But it never hurts
to know both - and it won't be difficult to learn the other once you know
one, so you might as well.
 
M

Mickey Williams

Cliff Harris said:
On the same note, I'd be interested to hear what people think about the
merrits of learning, or continuing to practice C++.

If you're using C++, there's still time to repent.

;)

YMMV, but prior to .NET my OO language experience was with C++ (since 1989)
and Eiffel (since 1995). Although I write books and teach, my primary
purpose in (computing) life was building large telecom systems. The only
C++I've written since the summer of 2000 has been:

- Some small amounts of Visual Studio VSIP C++ code for some friends in
Santa Barbara that shall remain nameless.
- Some work with the framework's profiler API for a project.

The odd thing is that today I write far more Eiffel than C++, with most of
my consulting and writing centered around C#. The new work on the managed
C++ syntax is certainly interesting though - if you're considering using C++
you should check it out (although I think Eiffel is a much better language
than C++).
 
C

Cliff Harris

While C# is getting more popular, my alma mater, like many other
universities I'm sure, are still teaching C++ in the classrooms (in fact
some still teach COBOL, but we'll ignore those).

From what you posted, I got the feeling that you didn't really see much of a
point to C++ anymore. I'm sure it's got to carry some merrit in some
industries still. (Like possibly gaming? Or embedded programming?)

I'd still think C++ has some use in low-level programming as well. While C#
can do most things through the use of PInvoke, if you're mostly going to be
under the hood, optimization would tell me to ditch C# in favor of unamanged
C++ in that case.

Thoughts?

-Cliff
 
C

C# Learner

Cliff said:
On the same note, I'd be interested to hear what people think about the
merrits of learning, or continuing to practice C++.

"C++: An octopus made by nailing extra legs onto a dog." -- Unknown
 
J

Jay Miller

Mike,

If your concern is the job market and the market in your area expects C#
(very shortsighted in my opinion), then take a look at C#. My main
recommendation, however, would be to not focus on your language of choice,
but on learning the .NET Framework. No matter which language you are using
you will need to know the .NET Framework well. Most companies that have
actually done any .NET development will understand this and not be as
concerned about the language itself. The problem at that point is getting
past HR and being able to talk to someone technical.

If you do any more conversions from VB6 I would recommend going to C#. My
experience is that most VB6 developers have less of a problem learning C#
than the dealing with the differenced between VB6 and VB.NET. I co-authored
a book on VB.NET a couple years ago, but have done only C# development since
then because of the frustration of prior VB6 developers when moving to
VB.NET.

-Jay
 
M

Mark Rae

If you do any more conversions from VB6 I would recommend going to C#. My
experience is that most VB6 developers have less of a problem learning C#
than the dealing with the differenced between VB6 and VB.NET. I co-authored
a book on VB.NET a couple years ago, but have done only C# development since
then because of the frustration of prior VB6 developers when moving to
VB.NET.

I couldn't have put it better myself. That pretty much sums it up, IMO.
 
M

Mickey Williams

From what you posted, I got the feeling that you didn't really see much of a
point to C++ anymore. I'm sure it's got to carry some merrit in some
industries still. (Like possibly gaming? Or embedded programming?)

I think the gaming angle is overrated. Managed languages (J*, C#, etc) will
start consuming the gaming space soon enough. Time-critical and very
low-level work will be done in C++, but in my opinion embedded systems that
don't have hard real-time requirements will eventually be written using Java
or .NET.
 
M

Mitchell S. Honnert

I co-authored
a book on VB.NET a couple years ago, but have done only C# development since
then because of the frustration of prior VB6 developers when moving to
VB.NET.
Are you saying that in your experience, you think that VB6 developers get
more frustrated learning VB.NET than C#? Why do you think this is?

I've heard the argument before that it's easier for a VB6 developer to move
to C# because VB.NET is too similar to VB6. While I can't say whether this
is actually true on the whole in the real world, it just doesn't seem to
make intuative sense to me. Saying that it's easier to teach C# to a VB6
developer is like saying it's easier to teach an English-speaking plumber
how to be an electrician if the classes are given in Spanish.

I may be in the minority here, but it just seems logical to me that teaching
VB.NET to a VB6 developer would be easier because one could concentrate on
OO principles and new aspects of the .NET Framework because they already had
a grasp of VB's key words and syntax.

- Mitchell S. Honnert
 
J

Jon Skeet [C# MVP]

Are you saying that in your experience, you think that VB6 developers get
more frustrated learning VB.NET than C#? Why do you think this is?

I've heard the argument before that it's easier for a VB6 developer to move
to C# because VB.NET is too similar to VB6. While I can't say whether this
is actually true on the whole in the real world, it just doesn't seem to
make intuative sense to me. Saying that it's easier to teach C# to a VB6
developer is like saying it's easier to teach an English-speaking plumber
how to be an electrician if the classes are given in Spanish.

No, it's not really. It makes perfect sense to me. VB.NET will differ
from VB in various subtle ways, some of which aren't really involved in
learning the .NET framework. VB.NET is a very large actual *language*
compared with C#, because of the extra functions it provides which call
into Microsoft.VisualBasic.dll.

I certainly find it easier to learn something when I don't already have
expectations of what's going to happen which may prove wrong in subtle
ways - learning something from scratch, you don't have as many
assumptions to start with.
 
M

Mitchell S. Honnert

Jon Skeet said:
No, it's not really. It makes perfect sense to me. VB.NET will differ
from VB in various subtle ways, some of which aren't really involved in
learning the .NET framework. VB.NET is a very large actual *language*
compared with C#, because of the extra functions it provides which call
into Microsoft.VisualBasic.dll.
Yes, there are various subtle differences between the VB6 and VB.NET
language outside of the .NET Framework, but for the most part, they are the
same. This is the very premise of my argument. I learned VB.NET first
(having known VB6) and then learned C#. Personally, I found that I was able
to concentrate on all of the new aspects of the .NET Framework instead of
having to learn the Frameword *and* a completely new language at the same
time.
I certainly find it easier to learn something when I don't already have
expectations of what's going to happen which may prove wrong in subtle
ways - learning something from scratch, you don't have as many
assumptions to start with.
While I can't deny that some people prefer a "clean break" so to speak, I
still can't see how this makes logical sense. It certainly wasn't my
experience. I would agree that there are certain occasions when learning
VB.NET that I said "Oh, well, that's different than I expected". But once I
grokked the Framework, these occasions fell off to almost nothing. (In
fact, in the vast majority of cases where something was subtly different, my
reaction was one of elation that MS finally got rid of some kludgy holdover
from previous versions.) In my opinion, a reasonably good teacher could get
a VB6 developer to that moment of epiphany about the Framework with much
less effort than teaching the developer an entirely new language.

It would certainly appear that Microsoft has the opinion that it's easier
for a VB6 developer to switch to VB.NET than C#. That's been their mantra
from the start. I can't imagine MS trying to sell C# to a company who
currently develops in VB6 by attempting to convince them it's a *good* thing
that the developers would have to learn a new language. They'd be laughed
out of the building.

Thanks for the input. Very interesting topic.

- Mitchell S. Honnert
 
J

Jon Skeet [C# MVP]

It would certainly appear that Microsoft has the opinion that it's easier
for a VB6 developer to switch to VB.NET than C#. That's been their mantra
from the start.

Well, I think they're at least convinced that many VB programmers would
*prefer* not to have to learn a new language. Whether or not that's the
same thing as it actually being *easier* for them to have a clean break
is a different matter - a lot rides on perception.

I'm sure there are some people for whom it's easier to build on
existing knowledge and have to revise some of it, and others for whom
it's easier to make a clean break. I know I made a conscious effort
when learning C# after Java to avoid making Java assumptions as far as
possible - I read the C# in a Nutshell book from the start, even though
there weren't very many unexpected bits.

Fortunately, as both VB.NET and C# are important to MS, both groups of
people can be happy in .NET.
 
J

Jay Miller

You hit the nail on the head when you talk about perception. I think it is
important to Microsoft to project an easy migration path for VB6 developers
to VB.NET. For seasoned developers which .NET language they transition to
probably doesn't matter. For less experienced developers, however, I have
found that they struggled more with the subtle changes from VB6 to VB.NET.
I have found it easier to explain must OO concepts from a fresh start in C#
rather than try to compare them to VB6's object based features. Without
"but that's how it worked in VB6", I've been able to keep my developers more
focused on the Framework.

Jay
 
M

Mitchell S. Honnert

Jay Miller said:
You hit the nail on the head when you talk about perception. I think it is
important to Microsoft to project an easy migration path for VB6 developers
to VB.NET. For seasoned developers which .NET language they transition to
probably doesn't matter. For less experienced developers, however, I have
found that they struggled more with the subtle changes from VB6 to VB.NET.
I have found it easier to explain must OO concepts from a fresh start in C#
rather than try to compare them to VB6's object based features. Without
"but that's how it worked in VB6", I've been able to keep my developers more
focused on the Framework.
I guess I can see where people would get bogged down in the "but that's how
it worked in VB6" trap. But in my personal experience, my reaction to the
differences between the language components of VB6 and VB.NET was more along
the lines of "thank God that's not how it works anymore." I'm not sure if
learning C# first would have helped that out.

I still hold to the opinion that even inexperienced VB6 developers can be
taught the principles of Object Oriented programming (perhaps before they
even see a .NET language) and be brought to that "hallelujah" moment where
OO light bulb turns on. Once this epipany occurs, I would think that most
programmers would react positively to each new aspect of the language by
saying, "Yes, this makes sense in the context of OO. This is a better way
to do it."

Maybe I'm being naive, but I do believe that even the stereotypically
unskilled VB6 developer can overcome any preconceived notions in less time
than is saved by making a "clean break" but having to learn a new language.
In other words, I agree with Microsoft (be it based on perception or fact)
that it's better for a VB6 developer to go to VB.NET over C#.

- Mitchell S. Honnert

 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top