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
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
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.
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.
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.
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#.
Pick C# because:
- It has the best tool support among all .Net languages.
- You are a C++ guy. You'll find its syntax easier to adapt to than that of VB.
- VB offers no special advantage over C# as far as a GUI-based desktop apps are concerned.
- Since it's far more popular, learning C# will prove way more fruitful to you career-wise.
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.
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.
There is a quote from Jeremy D. Miller:
VB.Net and C# are essentially Country and Western.
Explains it perfectly, doesn't it?
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