tags:

views:

94

answers:

5

I have been learning VB.NET since the summer and I was wondering if it makes sense for me to skip learning the things in VB.NET that I do not know and move on to C#.

I think I may be more comfy in C# because I have been using Actionscript 3 for over two years and have toyed with Java and C.

On the other hand, I've never done anything serious with C or Java.

So, finish VB.NET or learn C#?

+3  A: 

.NET is .NET ... the difference between VB.NET and C# is merely syntax. You won't ever "finish" learning VB.NET anyway, so you might as well learn the C# syntax for doing the same things you know how to do in .NET. :-)

Any new objects or libraries you learn with one language will be usable in the other, with only the minor syntax difference in how to call it. So even while learning a new syntax with C#, you will also be improving the ".NET" part of your VB.NET knowledge.

Ron Savage
@Ron - truth is, I don't care much for the .NET part of VB.NET. For the"interwebs" there's always PHP. I am interested in desktop applications. Thanks for the answer. +1
Moshe
@Moshe - the .NET part isn't just for the intarwebs, it is most certainly for client apps as well. We do both (web and client) where I work.
Ron Savage
@Ron. I Second your opinion on .Net. It's a very diverse technology platform.
Jason D
@Ron - *the .NET part isn't just for the intarwebs* Knew that, but I am working mostly with distributed apps to a clientele who, believe it or not, can't be relied upon to have internet at home.
Moshe
The platform name '.Net' has nothing to do with the internet.
AndrewS
@Andrew - so what does it have to do with?
Moshe
@Moshe - That's a good question. Marketing I think.
AndrewS
@Andrew - I think they wanted to highlight that .NET had libraries that were specifically useful for Intarweb development - specifically the "disconnected" data model of DataSets vs. ADO.
Ron Savage
@Moshe: Microsoft naming schemes are generally arbitrary and unpredictable. For example, what does the "7" in Windows 7 mean? It's not a name, it's not a year, it's not a version number. Just some arbitrary character. So about ten years ago, Microsoft decided that all their product names should end in .NET: VB.NET, Visual Studio.NET; there was even some speculation about an upcoming Windows.NET. This practise has been abandoned a few years later, and the purported meaning of the string ".NET" remains unknown.
Philipp
+2  A: 

Most of the learning for .NET is in the libraries rather than in the languages, so you don't need to worry that you've wasted what you learned so far. Just switch, and when you are done with C# you will probably find that you are also better at VB.NET as well.

John Knoeller
@John - Thanks for the encouragement, +1.
Moshe
+2  A: 

There are differences between the two, with relation to:

  • Generics
  • Optional Parameters (this changes in 4.0)
  • Catch/When clauses
  • with in VB
  • named/unnamed indexers
  • etc...

That being said, they're 99.9% the same, just a matter of syntax. I started with VB.Net because it was a project in my first Co-Op, since then I switch to C# years ago and found it to be much easier...it's a matter of taste but not a big deal to switch. It's the framework you're using, the language is just a nuance, it's all IL in the end.

The things you can do in one language and not the other are usually trivial, and you're getting very advanced if it's something you can't work around. The .Net team does a very good job of keeping the languages and their capabilities in sync these days (this started about a year ago when it was time for LINQ, many more differences existed before then).

Nick Craver
I'm not sure I follow note on Generic. Was that strictly a Non.Net to .Net difference, or did you mean to imply that there is something better, different or more capable in C# regarding Generics. (I'm no VB.Net fan boy... but I thought VB.Net was SUPPOSED TO support generics, indeed I've consumed them, but never authored them in VB.Net)
Jason D
@Jason - This is in regard to some generics are handled by the IDE, visual studio, while having better partial background compilation as you code, is ironically worse at intellisense on generic types...at least the last time I used it. It may be better improved now, but the IDE not knowing what type you dealt with was a huge blow to productivity. Other than that, the main difference is readability...personally I can't look at VB.Net generic class declarations for more than 10 seconds before fight or flight instinct kick in and force me to delete the project :)
Nick Craver
@Nick, Ouch. Sounds painful. I try to steer clear of VB in all its forms when possible... I feel unclean after reading it... And I'm not sure why... it's just another language. right?
Jason D
+2  A: 

You don't have to choose, do both. I switch back and forth all the time. In general (being very general :) ) most of your calls are just framework calls anyway and there are only some syntax and coding style differences between the two.

IMHO, you'll be ahead to be familiar with both.

Adam Neal
@Adam - "IMHO, you'll be ahead to be familiar with both." Good point +1
Moshe
A: 

Just my opinion, but I'd say be familiar with both but specialise in C#. That way if/when the landscape changes you'll be conversant in a language with a classic C-like syntax that will give you a core skill set that will be more like such things as Python, Ruby et al. Much easier to switch from C-ish languages to quirkier ones than the other way round.

5arx