Is C# the best language to learn/know?

Hello,

I am currently studying C#.  I presumed that C# is much better than VB.NET and so started studying it.  But it seems to me that most everyone related to microsoft is always pushing for VB.NET and not having much to say about C#, so what is going on  

Id Est;
- I now regularly catch the Dot NET Rocks radio show, which seems to be based, or at least biased toward VB.NET. 

- I stumbled upon the VB.NET PDC05 disk online at http://msdn.microsoft.com/vbasic/pdc05/default.aspx which I was quite impressed with, so I thought I'd find the C# equivalent, to no avail.  Please let me know if there is one available on or offline. 

From looking at the number of resources available for both VB.NET and C#, I estimate a 3:1 ratio in favour of VB.NET.

Please tell me what if anything C# has over VB.NET so I don't look stumped when a friend asks me.

Thankyou for your time.


Answer this question

Is C# the best language to learn/know?

  • com100h

    Hi,

    With .NET everything changes because the capability to do something mainly lies within the .NET Framework class library and this is common to both C# and Visual Basic. While this is true, there are a few differences between languages - in most cases you do not need to depend on a particular feature of a language but you simply consume the rich class library provided by the .NET Framework.

    Your comparison is true more from the perspective of a programmer moving to one of these languages from the other. For example, it would be easier for C/C++ programmer to move to C# and a VB programmer to move to VB.NET since the syntax is similar.

    Regards,
    Vikram

  • Azra

    Since you dug up this thread...

    Having untyped pointers is especially dangerous and leads to bad readability for code. Ever try looking back at some C code and trying to figure out what they are passing around with a null pointer, since by its nature it is untyped C# is a very simple and complex language. If you don't want to get deep into C# there are a great many things you can do, but a great many things you miss. Just the fact that they allow you to declare that you're doing something "unsafe" (without certain checks, circumventing GC, etc) shows their mindset to discourage but not completely disallow. C# is a very typesafe, checked language because of this is why they avoid null pointers. Also pointers always exist, it's just how much access you get to them (references are pointers by concept).

    Those things are more or less un-safe depending on how people use them. The problem with pointers and dynamic memory arrays is that unless done properly they become memory holes, and could have other problems because of poor implementation.

    C# and VB.Net are different, there are great many differences just based on their lineage and well as their design. Granted, because they both compile to MSIL, they are by that very nature similar. By that argument, we should program in MSIL and avoid this language confusion. However C# and VB.Net give you different syntactic styles, slightly different IDEs, and manages certain aspects differently.


  • Scott Snyder

    Just remember that (regardless of what you may hear) C# and VB.NET are very, very close in capability.  There are very few things that you can do in one language that you can't do in the other (especially in version 2005).

    C# is a good way to acclimatize to the C/Java/C++ syntax style, but be prepared for a steep learning curve if you move to C++.  If you can do what you need to do in C#, then stay with C#.



  • js-mueller

    Thankyou for your responce Vijaye,
    Is it not true that C is to C# as VB is to VB.NET, which would make C# the far more developed language   Or would that only apply to C++

  • johnny wisconsin

    Hi,

    I dont think it matters much which language you use as long as you learn the Framework well and use it well with any language that u choose. And like I have already said, the power of .NET lies in the .NET Framework and not in the languages...

    Then again, there are people who prefer J# ...

    Regards,
    Vikram



  • zhili

    Hello,

    From the point of feature-set, there's pretty much nothing that you can do with VB.Net that you cannot achieve via C#.  Microsoft strives hard to have feature-parity between these two.  While VB is geared towards beginners, C# leans more on the professional development side (although some argue that this line doesn't exist anymore).

    Since VB (not VB.Net) has been around for much longer than C#, it's natural that you find more resources on the net.  VB resources have been updated to VB.Net.

    As for trial Visual Studio, you can find a C# express edition here: http://lab.msdn.microsoft.com/express/vcsharp/default.aspx




  • wx

    Criminet -
    The C# PDC version would most likely be this http://msdn.microsoft.com/vcsharp/community/events/pdc05/default.aspx

    The Dot NET Rocks radio show is owned by one of the VB guys which is probably why it's more VB focused. :)

    As most others have said, VB and C# have similar capabilities, so I'd go with what kind of background you have.  If you have a C/C++/Java background, you'll probably be more comfortable with C#.  Or if you ever want to pick up any of those languages, you'd also probably want to go with C#.

    Language aside, there are also subtle differences in the editor tool you'd use to develop in C# or VB.  For instance, the C# IDE has integrated code refactorings vs VB which has refactoring through an add-in, type colorization, metadata as source (for go to definition and browsing framework metadata), snippet functions (for more extensible snippets), code gen based on snippets (so you can customize what you want to be generated) , and 24-7 IntelliSense. This is the link to the free download of C# Express:(http://lab.msdn.microsoft.com/express/vcsharp/default.aspx)

    The VB 2005 IDE contains a much larger set of task-based snippets that C# does (although C# will ship these on the web), a common/all filtering model for their IntelliSense, and background compilation though.  Both IDE's are great choices though. :)

    HTH,
    Karen


  • ooodi

    Hi,


    I guess your right. Microsoft is really pushing VB.Net. But its not beacause VB.Net is far more better than C# but because of one thing, market, the VB6 community is bery large and they are trying to convince these lot to port their apps to VB.Net. And I very much agree with vikram, its in the framework, the language is just a tool to access the framework...







    cheers,

    Paul June A. Domag

  • ranganathanmca

    A C# forum may not be the best place to get an objective answer to this question.  (but it is a great language...)

    As far as your other post about C# being a follow-up to C++.  No way - C# has same syntax route as C/C++/Java, but C++ is an order of magnitude more complex that either C# or Java.  C# is very close to VB.NET as far as capability - it's more accurate to say that C# is VB with C-style syntax.  That's a pretty good combination - like VB, a lot of complexity is hidden from you, but with the elegant sparse syntax of the C-based languages.

    David Anton
    www.tangiblesoftwaresolutions.com
    Instant C#: VB.NET to C# Converter
    Instant VB: C# to VB.NET Converter
    Instant J#: VB.NET to J# Converter
    Clear VB: Cleans up outdated VB.NET code

  • Amadeus156553

    Hi,

    C# is the language with which the .NET Framework is built. C# is just in v2.0(Beta) while Visual Basic(VB2005) is in v8.0(Beta) currently - hence there are more developers on VB than on C#.

    With .NET Microsoft has been saying that the programming language is a "matter of lifestyle" or "personal preference" and does not recommend one language over the other.

    There are some differences in the current versions between the languages. For example C# supports operator overloading while VB does not. But this feature has been added in v8.0(Beta) of VB.

    Also, C# supports Pointers while VB does not:
    http://www.csharphelp.com/archives/archive77.html
    http://www.codeproject.com/csharp/csunsafeintro01.asp

    You may want to read this as well:
    http://msdn.microsoft.com/msdnmag/issues/0900/csharp/

    Regards,
    Vikram

  • Golgot13

    Hello Karen,
    I believe the VB.Net PDC is actually the entire CD given out at PDC, surely the C# equivalent cannot be the link you supplied   Once again, a demonstration of MS pushing VB.NET over C#.

    Another point I was very dismayed to find was that the 36 C# snippets are only command structures, but the estimated 300 plus VB.NET snippets, are complete routines.  Once again, a demonstration of MS pushing VB.NET over C#.

    Another point I was dismayed to find is the ratio of C# to VB.NET chat transcripts at http://msdn.microsoft.com/chats/transcripts/vstudio/default.aspx.  Once again, a demonstration of MS pushing VB.NET over C#.

    It is completely obvious that either C# is not being promoted to the extent that VB.NET is, or C# features are being with held from us users, or the C# development team need a good kick in the arse.

    To my dismay none of the above posts truly explain this weird phenomenon sufficiently and I am left with not one reason to develop Windows/Web based software in anything other than VB.NET.  I mean really, learn C# if you want to learn other languages in the future   Surely one would learn another language straight up if that was the only reason for learning C#.  I just want to learn to program on, and for windows, the most popular OS in the world.

    So please, tell me, what is the real point of C# and why on earth would anyone choose to learn it to use with todays Windows architecture   I have really lost faith in C#.  Please give me reason to stick with it, or get rid of the B in VB.NET.

    Thankyou for your time.
    Kind regards,
    Criminet.

  • Nilesh Rade

    If you are not familiar with many programming languages, learn C#.  VB.NET will only help you write Microsoft applications.  If you learn C#, many languages (C, C++, and particularly Java) will come very easy to you.  Plus, once you know C#, it's extremely easy to read/write VB.NET if you'd need to.

    Hope this helps,
    Josh Lindenmuth

  • gs2006

    Thankyou David,
    this clears up some major misconceptions of mine :)
    And as for a C# forum may not be the best place to get an objective answer to this question, i plan to ask a similar question in a VB.NET forum.
    once again, thankyou, I am enlightened!!!

    Could I then assume C# would be a good stepping stone toward C++

  • MattiasO

    Pointers in C#...

    Just a moment. I thought microsoft was trying to do away with pointers, and null point identifiers, and dynamic memory arrays because they were un-safe... Huh



  • Is C# the best language to learn/know?