Talk:Comparison of C Sharp and Visual Basic .NET/Archive01

Brand new topic, based on some topics in the VB talk. Needs a lot of work. I am a C# developer, but tried to be NPOV. Also, the last time I used VB.Net was 1.0, so 2.0 may have changed some things. Gaijin42 19:56, 5 June 2006 (UTC)Reply

Yes, a lot of the features that C# had initially that VB did not were added in VB 8.0 (.NET 2.0), such as the "Using" construct, unsigned integers and operator overloading. However, while C# also gained generics, partial types, anonymous methods, iterators, and nullable types, VB only gained the first two. Also, there are many places where the compiled IL differs greatly between the two languages. I'll be glad to help if anyone has any questions as I have tracked the differences quite closely. Off the top of my head one major feature that VB supports and C# doesn't (that I feel is very usefulis user exception filters. I'll be happy to contribute to the article when I get some free time. —TheMuuj Talk 21:43, 5 June 2006 (UTC)Reply

Criticisms edit

I object to using ...have decided ('or been forced) to use .net, but do not know which language to use. No company decides anything without being absolutely sure of their expertise, which means they are pretty confident of what to use. The only consfusion comes when they are trying out, and thus not decided.



(Notes by Cmyers: I agree, this is a bad intro and sets the article, which is already based on a contentious subject, off on the wrong foot. I suggest the following intro:

The original (link).NET Framework distributions from (link)Microsoft included several (link)language-to-IL compilers, including the two primary languages: C# and Visual Basic. There is heated debate among the greater .NET community about which language is better in general, or for specific purposes. Below is a comparison of the two languages.

--Cmyers 05:53, 10 June 2006 (UTC))Reply


Also there are a few factual errors. Let me start with the talk page first. while C# also gained generics, partial types, anonymous methods, iterators, and nullable types, VB only gained the first two. Generic support is not specific to any language. Its new to .NET. So it is available from any .net language. C# and VB.NET only added syntactic elements to make those features easily accessible. And its partial classes, not partial types. You r right about iterators. Its only in C# (and C++/CLI of course). But Nullable types are there in VB.NET also. i As Nullable(Of Integer). Nullable is a generic type. C# does the same thing but exposes it syntactically. int?, which is translated by the compiler into Nullable<int>.

In the past, it has been said that VB made the first 80% easy, and the last 20% impossible. VB.Net made the first 80% a bit harder, but allows for the last 20% to be done at all. This description is very vague and poorly attempted.

For culture, VB.NET is suited for RAD, as stated. This is evident from IL, where, for example, arithmetic operations are by default checked for overflow. This tries to ensure consistent correct behavior of code with as little developer effort as possible, even by sacrificing some efficiency. But C# puts efficiency at center (no default overflow checks, to speed up code, but may behave incorrectly under overflow conditions. Developer must take hassles to ensure this does not happen).

VB.NET

  • Optional declaration of variables - No, variables must be declared. Only they can be weakly(un) typed, when late binding (using reflection) will kick in, to provide run-time type information. Can be simulated in C#, by declaring something to be Object type. Type mismatch is detected at run-time. C# 3.0 (next release) is slated to get VB.NET behavior of late-bound typing.
  • Optional parameters - No, parameters must be defined. At the best variable number of parameters may be taken using the ParamArray keyword, but its there in C# also.
  • Meaningful whitespace - In VB, whitespace such as carrige returns can change the program flow. Only carriage returns alter flow, as they are trated as line delimiters. No other whitespace cause problems.

C#

  • The 'using' keyword for the IDisposable Pattern - automatically release resources regardless of errors - in VB implements IDisposable.
  • Operator overloading - in VB as well.

And lastly this page should be moved to Comparison of .NET languages --soumসৌমোyasch 06:54, 6 June 2006 (UTC)Reply


For the factual problems (partictularly those in vb), please change them, as I stated in my original post, I am not as familliar with those areas. I disagree on the being forced to use, or decided to use line. When I was a contractor, many of the firms had decided to use .net, but did not have a standard yet for language, and were trying to choose one. It was often a very political debate, as they had groups who previously used VB, and groups that previously used java or C, and both wanted to stay in their own camp. I object to moving to comparison of .net languages. The topic may be more generic, but as stated in the main article, the only real players are VB and C#/C++. J# is barely used, and everything else if for hobbyists or specialized niches. Gaijin42 13:33, 6 June 2006 (UTC)Reply
I also do not agree that this page should move. Comparing VB.NET and C# is quite different--these are both languages produced by different teams within Microsoft, whereas .NET languages in general would encompass all the pre-existing languages that have since been ported to target the .NET runtime and/or libraries, which seems to me a different matter.Harborsparrow 00:33, 2 October 2006 (UTC)Reply

J# edit

I have some serious issues with the things discussed on this page. As always, topics like this tend to turn into flamewars. However, I still think we can try to remain factually based. For example:

Most developers think J# was primarily a marketing tool to try and lure Java developers to the .Net platform.

J# is provided as a compatibility layer for applications that are transitioning from Java to .NET. That's explicitly its purpose, no one disputes that. It's a specific-purpose language, not designed for starting a new project in except in strange circumstances. Thus, it's shady to say what that quote says: that it's a marketing tool. It's not a marketing tool, but it is designed to pull developers away from Java. It pulls developers away from Java by providing an alternative to rewriting an entire Java application at once during a transition to .NET. With J#, developers can migrate their Java to J#, then slowly convert pieces of the application over to C# at their leisure. Without J#, an entire application would have to be translated into C# (or some other .NET language) in order to migrate the application to .NET. So this statement about 'most developers' and marketing ... it's just pointless. We can say it in a way that's less biased feeling and more correct. For example, we could replace it with this:

J# is a language primarily designed to ease the transition of Java applications to the .NET framework; it allows developers to leave much of their Java code unchanged while still running it in the .NET framework, thus allowing them to migrate small pieces of it into another .NET language, such as C#, individually.

There. The phrasing isn't great, but that sounds a lot better than the shady "most people think ... suspicious stuff!!" sentence.

Xiphoris 03:50, 9 June 2006 (UTC)Reply


title edit

I have moved this article to Comparison of C sharp and Visual Basic .NET, but am thinking that a title like Comparison of .NET programming languages may be more suitable, as it can then discuss J# and IronPython etc. Martin 20:06, 11 June 2006 (UTC)Reply

While that would be a more generic topic, J# and IronPython are not nearly in the same league as C# and VB.Net in terms of adoption, usage, support. For the vast majority of users, a decision neesd to be made between VB and C#, and everything else isn't even on the table. The article is currently (and will probably remain) dominated by C# and VB.Net information. We could add (And other languages) or something at the end, but that seems clunky. I think we should keep the title as is, but add subheadings (as we have now) for other languages. If the other language info grows to be competetive with the C# and VB.Net info, then we can rethink at a later date. Gaijin42 14:58, 13 June 2006 (UTC)Reply

Title must match content edit

The section 'Other Languages' is not in keeping with the title of this article. Either the article title must be changed as discussed above, or the 'Other Languages' content should be moved to a discussion on the .Net Suite. Splendour 08:04, 28 June 2006 (UTC)Reply

I agree that there is some mismatch, but I still hold that people looking for this article are primarily going to be looking for information comparing c# and vb.net. I could accept "Comparison of C Sharp, VB.Net, and Other .Net Programming Languages" or something like that, but the bulk of the content, as well as what people want is centered around c# and vb.net. Just look on google for .net language debates. Its always vb vs c#, not c# vs J# or vb.net vs COBOL# or anything like that. Gaijin42 13:31, 28 June 2006 (UTC)Reply
Fuctionally the article is great, but I feel that mixing content to such an extent is not the correct approach for an encyclopedia to take. We have unlimited scope for creation of articles and a seperate discussion on the DotNets may be a good idea. Splendour 15:02, 30 June 2006 (UTC)Reply

Adoption rate edit

I added some comparisons with the adoption rates and community support. I expect this addition to be quite contraversial, and I would welcome counter examples, but I think its very vaulable to see the disparity in the level of community activity between the languages. Obviously the results of searches will change over time, but I do not know how to address that.

One problem is with the search terms. "VB" is the offical name of what was until recently called "VB.NET". This means any search that uses only VB.Net will under estimate the count. On the other hand, seaching for VB will return a lot of hits the old version. Grauenwolf 21:33, 18 September 2006 (UTC)Reply

Complete rewrite edit

I believe that this article should be rewritten for the following reasons:

  • structure
    • the structure of the article is messy
    • there is not an intuitive flow of information at all
  • copy-edit - there are too many mistakes to list
    • hastily-edited sentences do not scan
    • spelling & grammar mistakes
  • content
    • the content does not strictly adhere to the title "Comparison of C sharp and Visual Basic .NET"
    • there are innacuracies in the information given
    • when VB.Net or the .Net framework is mentioned, there is often no reference to which version (VB 2005 does not have some of the cons of the previous versions of VB.Net for instance)

Splendour 16:33, 4 July 2006 (UTC)Reply

even worth the work edit

okay, if someone else wants to do it, it's fine with me. I'd be equally fine if this was posted in AFD. Visual Basic is a terrible language and stands no comparison to the much more modern c#. Its purpose as far as I'm concerned is to support old VB coders. Modern scripting languages such as Python are much better, and for the more "hard core" programming, c#, java, and c++ are much more valid competitors. sorry for the bias. --gatoatigrado 05:22, 7 September 2006 (UTC)Reply

I guess my comment (above) comes to one point - unreadable syntax. --gatoatigrado 05:27, 7 September 2006 (UTC)Reply
the second part of "Adoption and Community Support" is terrible; number of search engine results returned??? What sort of information is that supposed to give someone? One is "more popular" because there are more pages? It tells nothing of the age of the pages, how vocal the community members are, etc. --gatoatigrado 05:25, 7 September 2006 (UTC)Reply
This page omits many of the features of c# mentioned in the c# / java comparison article. --gatoatigrado 05:25, 7 September 2006 (UTC)Reply

okay, if someone else wants to do it, it's fine with me. I'd be equally fine if this was posted in AFD. C# is a terrible language and stands no comparison to the much more modern VB. Its purpose as far as I'm concerned is to support old Java and C coders. Modern scripting languages such as Ruby are much better, and for the more "hard core" programming, VB, FORTRAN, and C are much more valid competitors. sorry for the bias. Grauenwolf 21:36, 18 September 2006 (UTC)Reply

"C coders. Modern scripting languages such as Ruby are much better, and for the more "hard core" programming, VB, FORTRAN, and C" ... guess you forgot to check that --24.7.86.143 01:22, 21 September 2006 (UTC)Reply
Fortran and C are very fast languages, but lack object oriented design. Ruby and Python have full object oriented design. "much more modern VB" VB - 1990, with influences from 1964 (Basic). c# - 2000, with major influences from 1998 (Java). [1]. True, VB .NET is a lot better, but - as Microsoft admits - the syntax is still similar to old VB, which makes it less readable. --24.7.86.143 01:58, 21 September 2006 (UTC)Reply
Microsoft's statements about the languages [2]
  • "Visual Basic .NET includes the syntax with which Visual Basic developers are already familiar. ..."
  • "Visual C# .NET offers increased productivity for the Visual C++ .NET developer. ..."
  • "Visual C++ .NET continues to provide maximum power, performance, control, and flexibility..."
A more informed opinion than my own - [3], [4]. --24.7.86.143 03:13, 21 September 2006 (UTC)Reply

What isn't debated is that this should go in AFD. The languages are too different. --24.7.86.143 01:24, 21 September 2006 (UTC)Reply

"Adoption and Community Support" edit

add DirectX support for VB samples much more limited than c#? --24.7.86.143 02:10, 21 September 2006 (UTC)Reply


other .NET languages edit

I just removed this statement from the other .NET langueges section:

Most of these are hobyist or novelty languages, or especially designed to solve specific problems, or explore new branches of computer science. Except for specialized math or science venues, these are not widely adopted.

Not only does this lack a reference, I doubt a reputable one can be found. It seems to be a matter of opinion. My opinion happens to be that quite a few legacy languages have ported to .NET to obtain the advantage of having access to the shared .NET libraries, and newer compilers such as Iron Python have come along recently also.Harborsparrow 00:42, 2 October 2006 (UTC)Reply


I agree that it would be hard to find specific references, but it is inherently obvious that the adoption rate of the other languages is nowhere near the adoption rate of C# and VB.net, or C++/CLI. Your reasons for ports are entirely valid, and I think that a common ground could be found that shows both the relative scope of adoptions, plus the additional reason for the more minor languages. Gaijin42 23:14, 2 October 2006 (UTC)Reply