Microsoft: Get rid of VB.NET -- now !

  • Thread starter Thread starter Spare Change
  • Start date Start date
Rob Windsor said:
Can you elaborate on how the release of ASP.NET 2.0 will turn VB
developers
into "push-button monkeys"? Everything I've seen or heard about ASP.NET
2.0
works exactly the same in VB or C#.

I hate to generalize but I see this all the time, C# advocates making
unfounded and unsupported statements about things that VB can't do or how
C#
is a superior tool. The tools are virtually the same now and the slight
divergence we see in 2005 is in Visual Studio tools like the code editor
and
debugger (e.g. expansions and refactoring vs. snippets and
edit-and-continue) not in the capabilities of the languages.

Not in the overall capabilities, no, but most of the major changes to C#
*are* language changes. While there is refactoring support, I consider
expansions, in any language, to be the work of the devil and do not call
them a feature in any sense. Most of the other IDE improvements aren't that
important(and some just suck), however anonymous methods and iterators can
drastically change the way I work, much lik e&c and some of the VB IDE
features can change a VB'ers working habits.

Now, what is annoying about your generalization is that you don't bother to
mention that there are plenty of VB advocates doing the same thing. An
advocate with a supported statement(with complete intent) is about as rare
as a troll with something meaninful to say. It just doesn't happen that
often. *Every* language, OS, platform, and formatting style has its own
advocates who believe in things, express those beliefs, and never provide
any proof. However, since most of the differences are entirly subjective,
they look like rantings and putdowns by those outside of the group.
 
Daniel O'Connell said:
Not in the overall capabilities, no, but most of the major changes to C#
*are* language changes. While there is refactoring support, I consider
expansions, in any language, to be the work of the devil and do not call
them a feature in any sense. Most of the other IDE improvements aren't that
important(and some just suck), however anonymous methods and iterators can
drastically change the way I work, much lik e&c and some of the VB IDE
features can change a VB'ers working habits.

Now, what is annoying about your generalization is that you don't bother to
mention that there are plenty of VB advocates doing the same thing. An
advocate with a supported statement(with complete intent) is about as rare
as a troll with something meaninful to say. It just doesn't happen that
often. *Every* language, OS, platform, and formatting style has its own
advocates who believe in things, express those beliefs, and never provide
any proof. However, since most of the differences are entirly subjective,
they look like rantings and putdowns by those outside of the group.

I have to disagree, I rarely see VB developers making comments about C# that
are just plain wrong but I see the reverse far too often. To sight a
specific example, Jeff Richter recently stated on .NET Rocks! that C# was
inherently faster than VB and that future versions of VB will sacrifice
performance for RAD features. Now Jeff is a smart guy, well respected, and
author of one of the best .NET books I own (Applied .NET Framework
Programming) but these two statements have no foundation in truth. I've also
heard other "luminaries" (MVPs, RDs, authors) speak of the impending death
of VB or even how C# has feature X where feature X has been part of VB since
the early Betas. I recently taught a four day C# programming course that was
designed for C++ and Java developers but more than half of the 22 attendees
where VB Classic developers who were there because they had been told by
consultants or management to move to C# because it was faster than VB, had
features that VB didn't, because Microsoft was going to kill VB and so on.

One thing I want to state clearly is that I am a fan of both languages, I
use both, I teach both, I think they both kick ass. What upsets me is that I
see far too many VB Classic developers struggling to not only learn .NET but
learn a new syntax just because someone in their organization made a
decision based on a sound byte, blog post, article or newsgroup posting that
contained bad information.
 
My 2 cents..

I agree that with the next version of VB.NET, there will be many more RAD
features. However, what annoys the piss out of me is that Microsoft is not
adding those all of those features to C#. Microsoft people seem to be
oblivious to the fact that when .NET first came out, advanced VB6 developers
mostly chose C#. The reason is that C# was far less limiting and provided
the added career bonus that if .NET fell on its face, they could make the
switch to Java easier.

VB.NET, in 1.x is incredibly annoying and limiting to those people building
n-tier components using business objects. This is because Microsoft was
stupid in the way that supported C# operator and conversion overloads in VB.
VB.NET 2.x will make that far nicer, but then we have to deal with VBonics.
I cannot for the life of me fathom why Microsoft chose different words for
the same concept for two new languages. For example, why use "MustInherit"?
VB never had the term before. Since they decided to use "abstract" for C#,
why not use it for VB as well? That way they can converse more easily with
C#, Java, and C++ people?

To be honest, I question Microsoft's stragedy with regards to the two
languages. Using VB for RAD and C# for everything else ignores development
shop situations where you have many developers that have work *with* each
other's code. It makes it harder to have overlap when the developers are
constantly having to switch languages. I think Microsoft would better served
by stating that VB was designed for simple, hello-world apps and that if you
want real RAD functionality (and everything else) you should switch to C#.
However, that said, Microsoft could make the languages and developers play
nicely if they provided the ability to have multiple language projects in
the same solution. If I can step through my GUI developer's VB code and into
my C# code, then I'll live with multiple languages.


Thomas
 
I have to disagree, I rarely see VB developers making comments about C#
that
are just plain wrong but I see the reverse far too often. To sight a
specific example, Jeff Richter recently stated on .NET Rocks! that C# was
inherently faster than VB and that future versions of VB will sacrifice
performance for RAD features. Now Jeff is a smart guy, well respected, and
author of one of the best .NET books I own (Applied .NET Framework
Programming) but these two statements have no foundation in truth. I've
also
heard other "luminaries" (MVPs, RDs, authors) speak of the impending death
of VB or even how C# has feature X where feature X has been part of VB
since
the early Betas. I recently taught a four day C# programming course that
was
designed for C++ and Java developers but more than half of the 22
attendees
where VB Classic developers who were there because they had been told by
consultants or management to move to C# because it was faster than VB, had
features that VB didn't, because Microsoft was going to kill VB and so on.

You may see more unpleasnet posts due to the tendency of C# devs to dislike
VB on a fundamental level(I *really* dislike it, half of its philosophies
are completely at odds with me, personally, but I don't have a problem with
its use and existance. I just don't want to use it personally when I can
avoid it). However it may well be a case of seeing what you want to see. I
see *alot* of VB is easier for... and you can do X in vb but not C#, or X
about C# is just a bad idea, or whatever, none of which are always true. But
then thats about all the VB related messages I read.
Technically, Richter is right. A few features of VB which help with RAD does
reduce performance(I think withevents is the biggest one)...however, I
personally don't think the speed drop is enough to make any decision based
upon it. Infact, I would imagine its quite undetectable.
One thing I want to state clearly is that I am a fan of both languages, I
use both, I teach both, I think they both kick ass. What upsets me is that
I
see far too many VB Classic developers struggling to not only learn .NET
but
learn a new syntax just because someone in their organization made a
decision based on a sound byte, blog post, article or newsgroup posting
that
contained bad information.

Of course, the changes in VB.NET are just as bad, lol. However, false
statements are never a good basis for a language choice.
 
Daniel,

Can you prove what you write about the performance facts and not showing
that as Daniel nicely described on one or the other Blog page. Proving it
showing a Microsoft page is as well a good prove in my opinion.

However, in my and a lot others opinion is the big advantage from VBNet the
IDE.

It helps you to take the right words and the right spelling of those. To
show you that with one however not the only example.

Although VBNet is based on the English language are that some few very
simple basic words or created words as "OrElse".

The IDE helps people to show the simple mistakes especially when option
Strict is ON.

Do not forget that only 8% of the world is using English and .Net is
completely based on English. I always have the idea that a lot of people
forget that.

When that IDE from C# was the same as it is in VBNet and did as well adding
forgotten however needed ; and () and things like that, than the choose for
me would probably go to C#, because it would than even be more natural
language independent and less characters to type.

(Although I would like to have those strong convert functions from VBNet as
well)

Just my thought,

Cor

"Daniel O'Connell
 
Rob Windsor said:
I have to disagree, I rarely see VB developers making comments about
C# that are just plain wrong but I see the reverse far too often.

I often see VB developers making comments about C# developers that are
just plain wrong. Far too often I see people implying that all C#
developers are stuck up and patronising, and that they all look down on
VB programmers. I can understand why the VB community is defensive, but
it doesn't help to tar everyone with the same brush. (Of course, this
does not apply to all VB programmers by any stretch of the imagination,
but I still think it's a significant problem.)
 
Cor Ligthert said:
Daniel,

Can you prove what you write about the performance facts and not showing
that as Daniel nicely described on one or the other Blog page. Proving it
showing a Microsoft page is as well a good prove in my opinion.
Well, here is the set method for a WithEvents variable which handles (It
transforms the variable into a property). This is unoptimized because I
don't care enough to do too much.

..method private specialname static void set_c(class
[System.Windows.Forms]System.Windows.Forms.Control WithEventsValue) cil
managed synchronized
{
.custom instance void
[mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00
00 00 )
// Code size 72 (0x48)
.maxstack 3
IL_0000: ldsfld class
[System.Windows.Forms]System.Windows.Forms.Control
WithEventsTest.Module1::_c
IL_0005: nop
IL_0006: brfalse.s IL_001f
IL_0008: ldsfld class
[System.Windows.Forms]System.Windows.Forms.Control
WithEventsTest.Module1::_c
IL_000d: ldnull
IL_000e: ldftn void WithEventsTest.Module1::Test(object,
class
[mscorlib]System.EventArgs)
IL_0014: newobj instance void
[mscorlib]System.EventHandler::.ctor(object,
native
int)
IL_0019: callvirt instance void
[System.Windows.Forms]System.Windows.Forms.Control::remove_Click(class
[mscorlib]System.EventHandler)
IL_001e: nop
IL_001f: nop
IL_0020: ldarg.0
IL_0021: stsfld class
[System.Windows.Forms]System.Windows.Forms.Control
WithEventsTest.Module1::_c
IL_0026: ldsfld class
[System.Windows.Forms]System.Windows.Forms.Control
WithEventsTest.Module1::_c
IL_002b: nop
IL_002c: brfalse.s IL_0045
IL_002e: ldsfld class
[System.Windows.Forms]System.Windows.Forms.Control
WithEventsTest.Module1::_c
IL_0033: ldnull
IL_0034: ldftn void WithEventsTest.Module1::Test(object,
class
[mscorlib]System.EventArgs)
IL_003a: newobj instance void
[mscorlib]System.EventHandler::.ctor(object,
native
int)
IL_003f: callvirt instance void
[System.Windows.Forms]System.Windows.Forms.Control::add_Click(class
[mscorlib]System.EventHandler)
IL_0044: nop
IL_0045: nop
IL_0046: nop
IL_0047: ret

}

It makes life easier for VB devs, it allows for better RAD features(the
handles clause), but it transforms simple field assignment into a property
with a fairly large set method. That *will* affect performance negativly. It
is, however, unlikely to matter much.

However, in my and a lot others opinion is the big advantage from VBNet
the
IDE.

It helps you to take the right words and the right spelling of those. To
show you that with one however not the only example.


I know. And the VB ide irks me to no end. I don't like IDE's that do things
that I don't want them to. Adding semicolons where it *thinks* I need one or
trying to suggest a different spelling for a word is absolutly *wrong* in an
IDE as far as I'm concerned, but I have no particular problem with people
who like that, I just don't want it myself
Although VBNet is based on the English language are that some few very
simple basic words or created words as "OrElse".

The IDE helps people to show the simple mistakes especially when option
Strict is ON.

Do not forget that only 8% of the world is using English and .Net is
completely based on English. I always have the idea that a lot of people
forget that.

I don't forget it, but you must remember that most(probably all) of the
framework authors speak english, and english is the defacto standard for
languages. I mean, look at ruby. That was written by a japanese guy(Yukihiro
Matsumoto, best I can tell he's a japanese native), but it is still
primarily in english. If you write a langauge that *isn't* in english, you
are simply not going to do well as pretty close to 100% of the developer
community atleast knows enough english to handle programming languages(if,
while, long, int, Int32, etc are not exactly unique to C# after all) while a
very small portion is likely to know whatever language you choose to design
your library in. Some English is pretty close to a requirement for
programming, I dunno if thats a good thing or not, and I'm sure it can be
debated endlessly, but a single standard langauge is certainly a good thing,
IMHO.

I've even seen it suggested that code should be written strictly in English,
no matter what your native language is, but I don't personally have any
particular opinions on that.
When that IDE from C# was the same as it is in VBNet and did as well
adding
forgotten however needed ; and () and things like that, than the choose
for
me would probably go to C#, because it would than even be more natural
language independent and less characters to type.

Again, inserting characters is bad mojo, LOL.
(Although I would like to have those strong convert functions from VBNet
as
well)

I want better conversion functions, but C#'s conversion operator is
perfectly strong(its as strong as they come really), just less pervasive and
unpleasent. They just use that utterly nasty casting syntax the designers
settled on. Casting and converting is probably the ugliest thing about C#.
Casting and conversion should *not* have used the same operator and they
should not have fallen into the C\Java casting trap.

Personally I would like to see
convert<type>(<expression>)
and
cast<type>(<expression>)
instead. Perhaps shortcuts like
MyObject x = cast(<expression>)

so that the type doesn't have to be duplicated when the type is already
apparent(I don't think I'd like it in a method call or whatnot, but in a
variable declaration its not so bad).
 
I was speaking more about technical issues but you're absolutely right that
implying that all C# developers are stuck up and patronising is wrong and
that generalizing leads down a slippery slope. I wish I had only addressed
specific comments in my original post, then maybe it would have sounded less
like "us vs them".

Anyway, I guess there's no end to this "debate" so I resign myself to that
fact and hope for the day that Imports and using can live happily togther.
 
Jon,

I often see VB developers making comments about C# developers that are
just plain wrong. Far too often I see people implying that all C#
developers are stuck up and patronising, and that they all look down on
VB programmers. I can understand why the VB community is defensive, but
it doesn't help to tar everyone with the same brush. (Of course, this
does not apply to all VB programmers by any stretch of the imagination,
but I still think it's a significant problem.)

What do you want to say with this in relation to the message from Rob, it
seems to me a complete new message?

Cor
 
Cor Ligthert said:
What do you want to say with this in relation to the message from Rob, it
seems to me a complete new message?

Not really. Rob was complaining about C# developers often making wrong
and insulting comments about VB.NET and VB.NET developers, and I was
just pointing out that some members of the VB.NET community are
needlessly defensive in return - that it's not a one-way street.
 
Daniel,

I made this code,
\\\
Public Class Form1
Inherits System.Windows.Forms.Form
Public Sub New()
MyBase.New()
Me.Button1 = New Button
AddHandler Button1.Click, AddressOf Button1_Click
Me.Controls.Add(Me.Button1)
End Sub
Private components As System.ComponentModel.IContainer
Friend Button1 As System.Windows.Forms.Button
Private Sub Button1_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs)
MessageBox.Show("Hello I am clicked")
End Sub
End Class
///
I thought that about the event beside the handling of event itself I found
only this.
IL_001b: ldvirtftn instance void
WindowsApplication15.Form1::Button1_Click(object,

class [mscorlib]System.EventArgs)
IL_0021: newobj instance void
[mscorlib]System.EventHandler::.ctor(object,

native int)
IL_0026: callvirt instance void
[System.Windows.Forms]System.Windows.Forms.Control::add_Click(class
[mscorlib]System.EventHandler)

I think that is not so much.
Some English is pretty close to a requirement for
programming, I dunno if thats a good thing or not, and I'm sure it can be
debated endlessly, but a single standard langauge is certainly a good thing,
IMHO.

That is not true, English with his important French, Pictic, Gallic, Viking
influence on an original historical NorthSea language is not that good as
most English people think. I sometimes read that Latin would be much better
for that, however the rest I agree and therefore I think as well that it is
at the moment the best.
I've even seen it suggested that code should be written strictly in English,
no matter what your native language is, but I don't personally have any
particular opinions on that.
BS. That is an advantage for non English programmers, they can much easier
distinct variables from keywords by writting the first in there native
language, by your name I assume you are an native English speaker and does
not know what easy that is to use, maybe you can try it once and when you
are Irish write in by instance Gallic your non keywords.
 
Jon,
Not really. Rob was complaining about C# developers often making wrong
and insulting comments about VB.NET and VB.NET developers, and I was
just pointing out that some members of the VB.NET community are
needlessly defensive in return - that it's not a one-way street.

Robs started his message with telling that he sees rarely VB people making
comments, with that telling that there are people who do that.

In this thread you see not one person from the VBNet communitiy saying.
Microsoft: Get rid of C# Now. I even have not seen that ever, with exception
once in an obvious kind of practical joke, while the last time I see more
and more this kind of messages from the C# side about VBNet.

Cor
 
Cor Ligthert said:
Robs started his message with telling that he sees rarely VB people making
comments, with that telling that there are people who do that.

In this thread you see not one person from the VBNet communitiy saying.
Microsoft: Get rid of C# Now. I even have not seen that ever, with exception
once in an obvious kind of practical joke, while the last time I see more
and more this kind of messages from the C# side about VBNet.

Well, that's your experience - mine is that there are a lot of VB.NET
developers who assume that C# programmers are looking down at them.
They don't tend to insult C# as a language in itself (other than
complaining about "silly" operators etc) so much as the developers.

Again, I stress that this is far from all VB.NET developers, just as
it's far from all C# developers who disrespect VB.NET.
 
Jon Skeet said:
Not really. Rob was complaining about C# developers often making wrong
and insulting comments about VB.NET and VB.NET developers, and I was
just pointing out that some members of the VB.NET community are
needlessly defensive in return - that it's not a one-way street.

Just to clarify, I was only speaking of developers/authors in general making
statements about the capabilities of VB that are false or misleading (e.g.
VB doesn't support delegates, VB is less powerful than C#). I didn't say
anything about comments towards VB developers.
 
Rob Windsor said:
Just to clarify, I was only speaking of developers/authors in general making
statements about the capabilities of VB that are false or misleading (e.g.
VB doesn't support delegates, VB is less powerful than C#). I didn't say
anything about comments towards VB developers.

Sure. I got that - I was just going on from what you said as a starting
point.
 
Cor Ligthert said:
Daniel,

I made this code,
\\\
Public Class Form1
Inherits System.Windows.Forms.Form
Public Sub New()
MyBase.New()
Me.Button1 = New Button
AddHandler Button1.Click, AddressOf Button1_Click
Me.Controls.Add(Me.Button1)
End Sub
Private components As System.ComponentModel.IContainer
Friend Button1 As System.Windows.Forms.Button
Private Sub Button1_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs)
MessageBox.Show("Hello I am clicked")
End Sub
End Class
///
I thought that about the event beside the handling of event itself I found
only this.
IL_001b: ldvirtftn instance void
WindowsApplication15.Form1::Button1_Click(object,

class [mscorlib]System.EventArgs)
IL_0021: newobj instance void
[mscorlib]System.EventHandler::.ctor(object,

native int)
IL_0026: callvirt instance void
[System.Windows.Forms]System.Windows.Forms.Control::add_Click(class
[mscorlib]System.EventHandler)

I think that is not so much.
Some English is pretty close to a requirement for
programming, I dunno if thats a good thing or not, and I'm sure it can be
debated endlessly, but a single standard langauge is certainly a good thing,
IMHO.

That is not true, English with his important French, Pictic, Gallic,
Viking
influence on an original historical NorthSea language is not that good as
most English people think. I sometimes read that Latin would be much
better
for that, however the rest I agree and therefore I think as well that it
is
at the moment the best.

Which is off the point. Any *single* language would be as good as any
other(well, Chinese or other east asian languages may not be terribly good
ideas as they aren't easy for most people to learn.) But English is the
standard and changing that is unlikely, even if opinions on its suitability
vary.

Possibly something like Esperanto or other invented languages could be used,
but that means everyone needs to learn a new language. It just doesn't seem
that practical.
BS. That is an advantage for non English programmers, they can much easier
distinct variables from keywords by writting the first in there native
language, by your name I assume you are an native English speaker and does
not know what easy that is to use, maybe you can try it once and when you
are Irish write in by instance Gallic your non keywords.

I think the argument I read was by an Israeli, but anyway, the point is more
that the language and framework are in one langauge, so you *have* to know
the language to some extent. Writing in your own language is simply a nasty
choice, especially if your application may be shipped to another company for
maitainence in the future. Imagine if you write your app using Italian
application names and then sometime later its outsourced to an Indian
company for maintainence. Chances are only *your* company know's
Italian(sorry, I dunno what your native language is, -_-), while the Indian
company was probably trained in English because English is pretty much
standard.

And, for that matter, I have tried using Japanese in C#. It certainly makes
variables stand out, but they are difficult to read and certainly not
anything that can be shown to other users.
 
mscertified said:
I'm learning .NET all the examples in the book I am currently learning
from
are in both VB.NET and C#. The book is thus almost twice as thick (and
expensive) as it need be. Granted the examples are fairly trivial, but the
code is almost exactly the same. If you substitute the curly braces for
THEN.. END IF and one or two other minor changes like i++ instead of
i=i+1,
they are almost identical.

They are pretty similar in the simple case. The 2.0 versions will be
different enough in the easy case, but the 1.0 are similar.
The My namespace in VB 2.0, for example, will probably change all but the
most basic examples of framework usage to code that will *not* transform
into C#. The same thing can be said about anonymous methods in C#.

That said, after you've learned more, you'll find other fundamental
differences. Expression based behavior is a big one. There is a reason VB
doesn't support the ++ operators. Unsafe code is a minor one, there are a
few other specific issues. It eventually comes down to what you are
comfortable with.
 
Daniel,

The only comment, I should have written "can be an advantage", because we
have for the rest the same idea.

Cor
 
I'm learning .NET all the examples in the book I am currently learning from
are in both VB.NET and C#. The book is thus almost twice as thick (and
expensive) as it need be. Granted the examples are fairly trivial, but the
code is almost exactly the same. If you substitute the curly braces for
THEN.. END IF and one or two other minor changes like i++ instead of i=i+1,
they are almost identical.

And it makes those books for me unreadable because of the pages I have to
use, in any of the two languages. Although there are much more differences
than you now probably think by instance when it comes to casting and things
like that. (I take this one because that is in this thread)

For the I++ not the ++I, I agree with you, however it is a minor while there
is now I +=1 wich is only one character more.

Cor
 
I totally agree, its wasteful and inefficient to support multiple
languages.
There should have been only ONE .NET programming language. I don't care which
one. Having C# and VB.NET books and examples is a total waste. Why cant we
all speak the same language? It also reduces the job market for everyone
since C# programmers wont be wanted for VB.NET jobs and vice versa. Because
Microsoft tried to please everyone, now it will be impossible to ever go back
to a single unified language.
First one language in the world I always write as answer on this kind of
messages, and than Chinese because that is the most important one.

Cor
 
Back
Top