VB .NET vs C#

  • Thread starter Thread starter Eric Wise
  • Start date Start date
E

Eric Wise

Does anyone work for companies that actually implement both VB and C#? I
know that you can do this in theory, I just find it hard to imagine that a
company would split its programming technologies like that.

Of course now with the CLR there doesn't seem to be any performance benefit
to using C# over VB, and VB I think is an "easier" language to pick up. I
actually wonder if the salaries between vb.net and c# will balance out a
little now since the language doesn't mean as much anymore.

I personally am a VB developer moved into asp .net / vb .net. I've been
considering going ahead and learning C# as well. I have only academic
experience with C++, but it is enough that I can read c# examples and
convert them to vb so I don't think this is a big deal for me to pick up the
new language. Just more wondering if I should even bother.
 
If you're on the job hunt, you'll increase your chances of landing a job by
being able to say that you know both languages instead of just one.
Then again there's something to be said for being a specialist. There is
only so much time to learn. You may not want to become a jack of all trades
but master of none.
 
I worked recently at a company that dropped VB.NET in favor of C#. We
dropped VB.NET becuase of the amount of code that VB.NET required to do
some amazingly simple things (which, btw, is something that even MSFT has
acknowledged and on the roadmap, have said they will *fix*). Knowing both
has helped me, but given the choice, I would have never picked up VB at
all...

Just in general, I have found that C# is easier to follow and much more
logical and concise than VB is. Not to mention... XML Documnetation...
Plus, as many of us know... never rely on MSFT to actually stick to a
roadmap for anything. Just because one document says that this *feature*
will be in the next version, don't think that there won't be another one
that denies it. ;)

(Just think back to the release of WinME, you know, the revolutionary OS
that was supposed to be entirely 32-bit based and stable? ;) )

Bill P.
 
VB.NET is a little more verbose if that's what you mean. But that also
makes the code more readable and self documenting. (Although I'm still glad
VB.NET will be getting the XML documentation feature in the next version.)
Just because the code is a little more verbose doesn't necessarily mean you
have to do more typing. The VS.NET editor is more friendly with VB.NET than
C# and will write much of the code for you.
 
Now that's efficiency.

And in the end... that is what is important. :)
Efficiency and quality.

C# or VB.NET... I choose vb.net. Coding less and do the same thing? Why not?
:)

I'll have less OverTime on the end of the month :)

Joao Cardoso (MVP dotNET)
=======================================================
[LusoCoders]- http://groups.yahoo.com/group/lusocoders/
[PontoNetPT]- http://www.programando.net/regras.aspx
(e-mail address removed) - www.acinet.pt
=======================================================
 
I'd be genuinely interested to see some examples of tasks that can be
performed more quickly in VB.

Thanks,

John

PS. Although, of course, it does save you all that time declaring your
variables.... (wry grin)
 
I can mention 1 task in particular that can be performed much more quickly
in VB.Net: Typing code. Since you don't have to worry about case, you (at
least I) can type your code a heck of a lot faster.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
http://www.takempis.com
Complex things are made up of
lots of simple things.
 
There are so many things that are easier and quicker to do in VB.NET

Here's one: Debugging.
The VS.NET designer catches most VB.NET syntax errors as I'm typing them,
where as you have to wait until compile time and then get them all thrown at
you at once. Then you have to retrace your steps and go back to fix them
all, which could have a domino effect and require you to go back and change
other related things too. What a waste of time!

--
I hope this helps,
Steve C. Orr, MCSD
http://Steve.Orr.net
 
Steve, have you actually opened up a C# project in VS and tried it??
It's got the same Intellisence features VB has!!

Yes, C# is case sensitive, but again that is all sorted by
intellisence. When you need to type
"LoadPageStateFromPersistenceMedium" just type "lo" (lower case) and
pick it from the list. Sorted.

I even opened up a VB project to see if there was something amazing I
was missing out on. The behaviour is identical!!

John
 
Ahh, but there is one of the great things about C-based languages... case-
sensitivity allows for mixed case variables... _someVariable and
_SomeVariable are two distinct entities.

As for VB/Boolean/Intellisense... C'mon.. have we gotten so bad that we can
not type 4 or 5 characters? ;) (had to lighten this up...)


Bill P.
 
So you consider it to be a good thing that _someVariable and _SomeVariable
are two different variables? To me it sounds like a great way to introduce
bugs and typos. It's hard enough to remember the exact names of all the
variables in a large, complex app, but having to remember the case of every
letter in every variable is a bit more than I'd care to deal with. Instead
I'd like to spend my time and energy programming the logic of my
application.

The VB/Boolean/Intellisense thing he mentioned is just one of many such
examples. Multiply that by the number of times you'll run across stuff like
this during the development of a large, complex app and it turns into
something quite significant.

Perhaps your employer has so much money to spare that they don't mind paying
you to chase down issues like these all day long.
;)
 
Actually allowing the programmer to use different casing for the same
variable intriduces bugs. If you mistype your variables in C# (or C/C++ for
that matter) your code will not compile. You have to use exactly the same
name all over your code, not like in VB where you can have four different
casings pointing to the same variable. C just requires more discipline.

Jerry
 
Steve C. Orr said:
So you consider it to be a good thing that _someVariable and _SomeVariable
are two different variables? To me it sounds like a great way to introduce
bugs and typos. It's hard enough to remember the exact names of all the

It's common practice in some environments to use all-lower-case for
fields, and capitalisation for Properties. A clear distinction I've
never had any problems with (ie 'color' is the field and 'Color' is
the property).

And all sorted by intellisense too.
The VB/Boolean/Intellisense thing he mentioned is just one of many such
examples. Multiply that by the number of times you'll run across stuff like
this during the development of a large, complex app and it turns into
something quite significant.

And the many other examples? like the debugging example - where VB
proved less effective at detecting type incompatibility? (see my
previous post)

I want to stress here once again that I'm not rubbishing VB - rather I
am defending C# against ill informed critisism - specifically of
offering lower productivity.

It can't be sunstantiated - and if necessary I'll do a keystroke
analysis of two identically functioning programs (VB v C#) to prove
it!

I'd be prepared to bet the C# version involved less typing, as well
(of course)as offering improved compile time type checking.

John
 
Jerry said:
Actually allowing the programmer to use different casing for the same
variable intriduces bugs. If you mistype your variables in C# (or C/C++ for
that matter) your code will not compile. You have to use exactly the same
name all over your code, not like in VB where you can have four different
casings pointing to the same variable. C just requires more discipline.

Perfect example of what's wrong with the world today. Let's not have
the discipline to do things correctly... lets just do whatever we feel
like and expect someone else will come along and clean it up for us.

John
 
It's not "incorrect" to mix case in VB.NET so your point is moot.
Furthermore, we're not expecting "somebody else" to clean up after us.
We're expecting the computer (VS.NET specifically) to assist us with minor
details that are unimportant to the logic of the program. Computers exist
to do things for us. If you don't like that then I don't see why you use
computers at all. All day long I write programs that do things for other
people. Microsoft programmers put a lot of effort into creating VS.NET so
it would do things like this for us and make our jobs easier. Are you
suggesting we throw away their efforts and do things manually? That seems
like a waste of time and money.
 
All I'm saying is that if you don't work completely alone you need to write
readable code. And using different capitalization for the same variable
really lowers the ability of somebody else than you to read and understand
the code. MaxIndex and MAXINDEX might be the same from the VB compiler point
of view but it's fairly difficult to get that for a human. If you think it's
not important for your code to be easy to understand - fine (if it was
difficult to write it should be difficult to read), but most of us work with
others and can't afford to waste time trying to match different identifiers
together. And it gets even worse with non-english languages (Java for
example allows for localized variable names, I'm not sure about VB). There's
a reason why vast majority of programming languages (and computer
technologies in general) do distinguish between different casings...

Jerry
 
This may be true to *you* as a VB programmer, but programmers familiar
with C# find the code easy to read.

In the same way, I find reading VB similar to wading through treacle.
But I'm sure it makes perfect sense to you.

The agument that "I can't read C#, therefore C# is difficult to read."
is like saying "I can't speak French, therefore French is difficult to
speak."

Subjectively true, objectively facile.

Still waiting to here about the productivity comparison. Should I do
the keystroke analysis??? grin.

John
 
As discussed already, VS.NET automatically adjusts the case of your VB.NET
variables so that they all match. Therefore your point is again moot.
Also, because VB.NET uses real words it is far more readable than C#. Even
many C# programmers would likely agree with that. C#'s syntax strength is
it's brevity, not readability.
That's like saying that Spanish is more readable than Japanese. To
whom? I think a Japanese/Chinese person would disagree with you. That
is all a matter of perspective.

My first language I ever learned was C. Therefore, to me, C derived
languages are much easier to read. VB is easier to read for people who
are not programmers or who have only programmed in VB like languages.
Once again, we should base our comparison of the languages on the
languages themselves. After all, a language is nothing more than a
collection of symbol and a syntax to put those symbols together to
communicate something.

Additionally, "better" is a suggestive term. Maybe the discussion
should focus on which is "more powerful", "easier to learn", etc. I
personally tend to judge a language mostly on what a language can do,
with only a little bit given to ease of use. This is why I think C++ is
the best language ever made. But, that's a personal preference.

I personally prefer the c# language because I am more familier with the
syntax and there are, according to books I've read, some things you can
do in c# that cannot be done in VB. I am however forced to use VB in my
occupational position and have learned the syntax well enough that I am
mostly comfortable with it, even if I don't like it.

John
 
No, I'm saying that I can read the english language, therefore VB.NET is
easy to read.
VB.NET uses real words, that makes it READABLE.
Of course anyone can read C# with enough training, but it takes a good deal
more training because it has much less in common with the english language
which most of us already know to begin with.
 
I suppose if you assume we're all using notepad then your argument holds
water.
But I'm a real programmer that uses real programming tools because that's
what makes sense.
That doesn't make me lazy, it makes me efficient.
 
Back
Top