views:

383

answers:

10

Hello all im coming from unix / server / c++ /java background with no GUI experience i need to build windows GUI application , i need to build it fast i was told that the .net family is the exact thing for such job . but there is VB.net and c# what should i choose what is faster and better for such job ? what will be easier for none teachi user to install and for me to deploy the end product

+3  A: 

There is almost a religious war to the matters of VB.NET vs. C#.

They are quite closely equivalent in what they allow you to do and how fast you can do it.

Seeing that you have C++ background, C# will probably look much more familiar, but you will still need to learn. Your learning curve with VB.NET will be much steeper.

To the question of deployment, your users will need to have the respective .NET framework installed. It exists in versions from 1.0 to 3.5 SP1 with 4.0 closing on us.

  • Windows Server 2003 has .NET 1.1 preinstalled
  • Vista / Windows Server 2008 have .NET 3.0 preinstalled
  • Windows 7 has .NET 3.5 preinstalled
Developer Art
No war these days, since Microsoft has essentially said they plan to bring the two exactly in line with each other in terms of features... of course, I'll believe that when I see conditional catch blocks in C#, but we can dream can't we?
Matthew Scharley
Quite - the key issue is learning the .NET framework rather than a specific language.
Murph
I would say that because of his *Java* background, C# will look much more familiar. C++ is quite different.
Greg Hewgill
C++ is still **much** closer to C# than VB is...
Matthew Scharley
Right, but C# is much closer to Java than it is to C++.
Greg Hewgill
Anyway, no self-respecting C++/Java developer would be caught dead using VB. :)
Greg Hewgill
@Matthew ScharleyI think the 'war' will continue, regardless of features - some people just fine VB's syntax horrible ;)
Cocowalla
+3  A: 

These languages are pretty much equivalent for what you want to do. I'd say use C# as your C++ background will allow a shallower learning curve with C# than VB.net.

Steve Crane
+10  A: 

The short answer is that it doesn't matter.

In terms of features, the .NET framework provides the Base Class Library, the run-time environment etc. You can use whichever language you choose. You can accomplish the same with VB.NET, C# or any other first-class .NET language.

However, since you come from a C++/Java background, you will probably find the C# syntax more familiar than VB.NET.

Mark Seemann
Your answer might be true, but only technically. Obviously it matters which you decide, because if you're skilled in 1, you might need a 2-3 month learning curve to master the other.
JL
Ýeah, but the OP is skilled in no .NET language, so it absolutely doesn't matter.
Maximilian Mayerl
It takes you 2-3 months to learn syntax? Because that's essentially the only differences between them, other than some more obscure features (conditional catch statements and XML literals being the two that jump to mind for me)
Matthew Scharley
@JL: That's what the last sentence in my answer implies...
Mark Seemann
The work availability could be a deciding factor!
JL
+7  A: 

In terms of what is available, they are exactly the same.

That said, if you come from a C++/Java background, I would recommend C# as there will be a much smaller learning curve, you won't need to learn a whole new syntax.

As far as deployment goes, .NET applications with OneClick (if appropriate) is very easy for non-technical users to use. It boils down to "go to my website and click the install button". From the developers point of view, it's usually not much more difficult than that too. Visual Studio has options for making traditional installation packages too.

Matthew Scharley
I agree - Java syntax in prticular is quite similar, so C# seems the better choice
Cocowalla
C# and VB are not *exactly* the same. Although the differences are in more obscure and advanced features that you normally won't need in day-to-day development, especially not as a beginner in .NET.
0xA3
@divo: there are very few features that can't be emulated. Conditional catch clauses are the only one that come to mind, and even they can be (not exactly, but close enough for 99.9% of usage)
Matthew Scharley
yeah c# is more like java , what about GUI , what is easier ?
Between C# and VB? The GUI designer is **exactly** the same.
Matthew Scharley
@Matthew: Yes, normally you won't notice the difference. However, certain features can be solved much simpler with one of the languages (e.g. late binding in VB) and some features are not available in both languages (e.g. the possibility to write unmanaged code in C#).
0xA3
Much to everyone's general happiness, late binding is available in C# 4.0.
Matthew Scharley
+2  A: 

The languages are almost equivalent. If you use Visual Studio (I recommend doing so, if you need to build the application fast), the GUI design experience will be the same for both languages. Likewise, the installation and deployment procedures don't differ for VB.NET and C#.

So, unless you need some specific feature only supported by one of the languages (like multi-line lambdas in C# or XML literals in VB -- you probably won't need either for a simple GUI application), feel free to choose the one whose syntax is more familiar to you. Since you have a C++/Java background, I guess this means C#.

Heinzi
+3  A: 

Pick C# because:

  1. It has the best tool support among all .Net languages.
  2. You are a C++ guy. You'll find its syntax easier to adapt to than that of VB.
  3. VB offers no special advantage over C# as far as a GUI-based desktop apps are concerned.
  4. Since it's far more popular, learning C# will prove way more fruitful to you career-wise.
Frederick
Is C# really more popular than VB? There are a *lot* of VB-programmers out there.
Per Erik Stendahl
Compare the number of "C#" tags with "VB.Net" tags on StackOverflow. You'll know.
Frederick
VB-programmers using not vb.net but the old vb6. for .net i would suggest using c#.
mcxiand
@Fredrik: you're right about that but I don't think the SO crowd is representative of the total .NET population. Csharpers tend to be more involved in the community.
Per Erik Stendahl
Stackoverflow has more C# people, but there are other VB forums. For example, vbforums.com has 94,000 vb.net threads compared to <5,000 on SO.
xpda
maybe vbforums.com is quite old compared to the young SO so it already has a lots of thread on vb.
mcxiand
+2  A: 

I would say because of your background, go with C#.

Its true both languages end up doing the same thing and you'll end up being able to read both languages as time goes by. But C# is the way forward, and to the best of my knowledge I would have to say more work opportunities exist for C# developers than those who only know vb.net.

VB.net might be easier to learn if you come from a pure vb6 background, but I've found most web developers with a bit of JS experience can pick up the C# syntax easily enough.

When you think about learning .net, you should get a grasp on the framework, because understanding which framework classes to reuse and when is important to your overall skill as a .net developer.

JL
+1  A: 

In terms of capabilities the two are more or less identical - there are some differences but those are not too significant in the general case. In terms of deploying apps to users they're the same - the capabilities are in the framework not the languages.

Consequently there are two ways to look at this: 1) use C# because the syntax is familiar and you won't tie yourself in knots trying to forget to add a ; at the end of a statement or 2) Use VB.NET because its different so you'll struggle less to work out which environment you're working.

Pragmatically I'd go with C# - there are probably more samples out there in C# than in VB.NET and if you can already cope with swapping between C++ and Java then adding a 3rd similar language probably isn't going to be too stressful.

Murph
+4  A: 

There is a quote from Jeremy D. Miller:

VB.Net and C# are essentially Country and Western.

Explains it perfectly, doesn't it?

The Chairman
A: 

We do programming in asp.net vb.net but sometimes we find algorithms in C# and we havent had a problem converting them to C#. C# was specifically created for .NET, but I coudlnt tell you why is better. In webforms you can code some pages in one language and other pages in other .net language, and we coded a couple of C# pages in a mostly VB.NET based project. If you have to do a webforms based application you could give a try to both, but if you don't have the need of doing webforms I wouldnt recommend to use them over winforms

In the last asp.net book we read they switched the code examples from VB.NET to C# because now most people uses C# for .NET. We use VB.NET for trivial reasons, since any .NET language shares the Base Class Library, we just want to avoid typing "{", ";" and case sensitiveness

GDalma