We have a large ASP classic code base but I'm looking to do future development in ASP.NET (and potentially in the future port across what we have). The natural choice of language seems to be VB (existing code is VBScript) but am I being too hasty? Does the choice of language, in the long run, even make a difference?
Not much of a difference, but there is some difference (mostly syntactical in nature). If your old site is VBScript, it's probably easier to go with VB.NET.
You can do the same things in both C# or VB.NET. In the end it'd be a choice of which is easier to port to.
Keeping in mind that you shouldn't (IMHO) port directly ASP to ASP.NET, since you'd loose much of the features in .NET, this would include a fair amount of rewrite anyway. So I'd go with C# since I think it's less verbose and easier to write and read.
There are a few features in C# 3.5 that aren't supported in Visual Basic but language choice is always preference from the team and what you guys feel most productive in.
It's learning .Net (framework) that takes the time.
The specific language doesn't matter and is more a matter of taste. I'd normally recommend trying a few play projects in both languages (and any others that may take your fancy), and then decide which one you're more comfortable with (or have more success with!)
I would choose the language with the syntax you are most comfortable with as there is very little difference in functionality, although some say there is something of a culture difference between VB and c# developers. Another option is to learn both, the biggest obstacle moving to .net in my opinion is learning the huge .net framework, the actual language syntax you should be able to pick up fairly quickly.
From experience it is easiest to go with where your skillset currently lies. If this is in vb6/vbscript etc I would first look towards vb.net. It also depends on any project timescales and delivery dates. You will be upto speed quicker in vb.net. If you have time on your hands I would seriously consider c#, if only to give you a stronger foothold in the development market when you come to look for pastures new.
.NET is really about the framework and the base class library. VB or C# - as Chris mentioned there is really just syntactical difference.
Since you've done VBScript migration to VB.NET is more natural - you can learn the new syntax, then move onto the Framework and BCL, when you are familiar with those you can learn the C# syntax as weel - being bi-lingual is always good.
2sontek: There are also features in VB that aren't supported in C# - let's not go there. 80% (or more) of developers use only 20% of the features and the differences are very minor - they certainly don't fit into the 20%
You may also wan to look into C#.
VB.Net and C# are both great for creating web applications, it really depends on the needs you will have.
For example C# is great with events and VB.Net is great with XML.
I'd say go with what ever your developers feel more comfortable.
I was looking at a site recently that lists average UK wages based on technologies. Can't find the link now (typical!) but I remember that the average C# wage was around £5k higher than the average VB.NET wage.
If you're not going to learn both (and there's really no reason not to, as the only real difference between them is syntax) I'd go for C#.
When I moved from ASP3 to ASP.NET I finally choosed to use C# instead of VB.NET.
I wrote Basics for years (MS-BAsic, GW-Basic, Quick-Basic, Visual Basic, VBScript) and it was very difficult to use VB.NET because I always try to write things as I used to do with VB6 or VBScript.
So C# was a better choice for me : I have not been slowed by the weight of my habits.
Also, C# was a new language (at this time) while new VB.NET keywords gave him a Cobol smell :)
First of all, don't port something for the sake of it. If it's working fine and there's little to be gained from porting it, leave it alone, and continue doing bugfixes and small enhancements in VBScript. If there's sufficient reason to move things across, then do it at that point, but you're much better off becoming familiar with the .Net version of web applications first rather than try and learn that on the fly if you do the port upfront. It's much easier to learn the new concepts like PostBack and ViewState in a 'clean' environment.
There's also less scope to break out of your old way of thinking as you port stuff (just making it work any old how rather than redesigning where needed).
Ultimately there's not a great deal of difference in the long run, it's mostly perceptual and a matter of personal taste but I'd propose learning C# first because it's lack of familiarity will emphasise the fact that you're learning something new. Hopefully thi will help you learn to do things the natural .Net way rather than the largely procedural VB(script) way. You're trying to unlearn as well as learn. Familiarity of some keywords will work against you.
Echoing other benefits throughout some of the posts, and adding a few of my own:
- Future potential earnings : C# developers generally are worth more than VB.Net developers because of the perceptual difference.
- Most of the open source .Net code out there is C#, and the quality of it generally (though not always) tends to be higher.
- There are more Q&A and examples and out there on the internet in C# than VB.Net. At the time I post this there's 1572 posts tagged with C#, only 185 with VB.Net right here on Stack OverFlow.
- C# OO keywords are reasonably standard, it makes it easier to read other OO language code. VB.Net goes off and renames things for no good reason e.g. abstract (C#, C++, Java and more...) vs MustInherit (VB.Net only).
- It's generally accepted that once your familiar in both languages it's a lot easier to visually parse C# code than VB.Net code
- You won't get 'looked down' on by C#'ers and can help poke fun at the VB.Net people (if you so desire - the culture exists...)
Once you've initially learned it in C#, it should be much easier to roll across to VB.Net than it would be the other way around. Invest in your own future.
I develop in both but C# would be my preferance.
You can do the majority of things in both languages and I certianly wouldnt re write any vb projects in c#.
However with C#: New language features generally come to c# first of all e.g. lamda expressions in linq You can write code in c# C# will force you to be neater C# developers get paid on average more and most larger projects will only be c# C# has similar syntax and function names to javascript There is some snobbery in the .net community towards vb developers
The important thing is to learn .NET. not a particular language because C# or VB changes just syntax. The logic behind them in .NET environment is same.