473,803 Members | 3,380 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

C# and VB.Net?

Hi all

We are an organisation that use C# currently and we have some members who
are not yet trained in .Net or C#, some staff have requested they use VB
instead (probably due to their background).

Given that we are already using C# I think adding VB into the mix is a bad
idea - not with regards to the language itself but the fact that the VB.Net
coders won't learn C# and possibly vice-versa.

Apart from the business reasons not to introduce a 2nd .Net language, are
there any sites with un-biased views as to why both languages are in
effect - equal?

Thanks
Dec 13 '05
44 1917
Michael S <no@mail.com> wrote:

<snip>
And the latter group typically don't adopt OO-principles. They still view a
class as some module you just put code and som Dims in, they keep on
concatinating strings, declaring their arrays, and don't get why an
ArrayList or a StringBuilder could ever be useful. The think in terms of
variables and don't get the 'reference on stack, object on heap' model and
can't undestand why passing a huge array to a method would be the bad thing.


I don't understand why passing a huge array to a method would be a bad
thing either though. Arrays are reference types - you're not passing a
load of data. What kind of problem are you thinking of?

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Dec 13 '05 #21

"Mantorok" <no**@tiscali.c o.uk> wrote in message
news:dn******** **@newsfeed.th. ifl.net...

"Michael S" <no@mail.com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
<ph************ **@hotmail.com> wrote in message
news:11******** **************@ z14g2000cwz.goo glegroups.com.. .
I have developed in every version of Microsoft BASIC from the original
ROM chip that shipped with the IBM PC, under every version of DOS and
Windows. Every single one. I finally made the jump to C# and I must
tell you I am so happy. It is true that the OO syntax of C# is true to
the principals of OO so that it will change the way you think when you
program. When I was trying to do OO in VB, I carried with me all my
experience as dead weight and did not do real OO programming. Your
programmers will be better programmers in the long run if they learn
C#. Your code will be more maintainable and you will have a better
product.


I so totally agree with you.

I remember when I learned how VB.NET handles their weird AND/OR handling
by introducing AndAlso/OrElse. Didn't know if to cry or laugh. What a
stupid thing to do.


My good lord that's awful, the amount of patchwork being applied to the
already confusing language is just going to make it ten times worse.


I'll give you some more 'ammo' for your meeting:

1. Strict Option Off
You are allowed to turn explicit casting off. This was done to make porting
of VB6 code easier. Also why they gave the language AndAlso and OrElse. The
whole syntax is created for easy-porting-purposes. The problem is that
porting Object-Based code into Object-Oriented code is a dumb idea from the
start. Who would 'port' JavaScript into C++? You don't port stuff like that.
You re-write the code and only port (re-use) the idea and feature, not the
design.

C# was not designed for porting, but to be a clever language. I think it is.

2. No-mans land.
At my work we mostly do Java, C#, C++ and Delphi (which is not really a
no-mans land, as most Delphites knows C++ ).

I say mostly - as sometimes our customers wants and insists on VB.NET. And,
like the dirty whores we are, we are happy to supply such a perverted
service. We hide behind the old - The Customer Is Always Right, as not to
offend whores. =)

However, for projects written in C#, we can always call on a Java or C++
developer to help us out if we are out of girl-power. While having a Javait
in your code, not coding a property Count, but insists on writing a
getCount() method, things are not that bad. Atleast the code is dandy and
written in a good pace. And while it may take her some time before she
fathoms that why she can't seem to find a StringBuffer anywhere, not even in
System.Text, is that it is called StringBuilder in .NET. She might grunt a
bit and may need some help, but she gets the job done.

If the same girl was to venture into a VB.NET project she would be doomed.
How would she know that she can't use And but must use AndAlso to get her
if-statements to work. How would you tell her that there are no braces and
that 'for' meets 'next', 'if' meets a 'end if', while 'while' meets a
'wend'.

Actually, I've seen this happen. But it was a guy and not a girl. And he got
so mad he almost screamed at me in frustration - Get me out of this NOW, or
I'll RESIGN!

3. Visual Basic Sucks So Hard It Bends Light.
This is my E=mc^2 argument. I think VB.NET is a gravity-well. Not really a
black-hole as time doesn't really stop, but it slows down a bit, and as time
== money, it earns you less money. While I don't care so much about money, I
rather see it as doing more work for less result.

While a VBers (or Delphites, like myself) may always claim, - 'I write so
fast in my favourite language, you won't know the difference'; both basic
and pascal are verbose languages and you could go faster. Once you talk
Algol-style languages like C#, C++ and Java fluently, you are quite fast in
doing JavaScript for a browser also.

4. Cognition
Our brains are wired to grasp the world in the following order; type,
identity and value.
For the science of this, please use google. I've written several posts on
this here, so you could always google groups for my long (and quite funny)
example.

Anyways, here is a short example;

int i = 5; //type first, identity second and value last.

Dim i as Long 'Dim is useless, identity comes before type. What is it's
value?
i = 5 'Value is not in context with type or identity.

While few studies have been done and nothing proven (how do you prove this?)
our brains tend to work harder when we code basic and pascal, and spend less
energy when doing the algol-style coding our brains like. Wirth did it wrong
when he designed pascal, while Ritchie just happened to get it right. I
don't think any of them even gave it a thought.

Well, there you have another four reasons for staying away from VB.NET.

Happy Coding
- Michael S





Dec 13 '05 #22
Mantorok,
VB.NET is really a first-class member of the .Net family, although I do not
use it myself if I can possibly avoid doing so. I just don't like it anymore
now that I have C#.

The main issue I have with VB.NET is that it brings with it a lot of the
"culture" of the previous Classic VB mentality - and with that, the
sloppiness and potential runtime errors that can come with not setting Option
Strict and Option Explicit to "On" and extensive use of the
Microsoft.Visua lBasic namespace - when the .NET Framework BCL proper already
has everything you need. In addition, you might want to mention to your boss
that unfortunately, the Microsoft.Visua lBasic assembly is not marked
CLS-Compliant and this can cause problems down the road. I understand,
however, that this has been fixed in .NET 2.0.
--Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"Mantorok" wrote:
Hi all

We are an organisation that use C# currently and we have some members who
are not yet trained in .Net or C#, some staff have requested they use VB
instead (probably due to their background).

Given that we are already using C# I think adding VB into the mix is a bad
idea - not with regards to the language itself but the fact that the VB.Net
coders won't learn C# and possibly vice-versa.

Apart from the business reasons not to introduce a 2nd .Net language, are
there any sites with un-biased views as to why both languages are in
effect - equal?

Thanks

Dec 13 '05 #23

"M. Genuini" <mg******@hotma il.com> wrote in message
news:11******** *************@o 13g2000cwo.goog legroups.com...
10 INPUT "WHAT IS YOUR NAME "; X$
20 PRINT "HELLO "; X$


30 INPUT "CONTINUE ? <Y/N>"; Y$
40 IF Y$ = "Y" THEN GOTO 1O
50 PRINT "BYE BYE"

^_________^


LOL!

Yeah, I kinda expanded my code into exactly that, and got help by the
'teacher'.

He was so very cool. He was this lost nird-hippie-wannabe-left-overs who,
never really got over the political 70ies, and got hooked on computers to
escape from the horribly happy clueless elite 80ies.

Poor dude. And a great man. Sitting on his free time, learning a 8 year old
kid what a boolean is. And types.. X is variant, X$ is text and X# is
number. I guess most coders teach their kids this at even earlier ages
nowadays, but in 1982 this was pretty rare. Where would you even find a
computer in a poor suburb to Stockholm, Sweden in 1982? Bet my mom thought
he was molesting me or something *s*.

While growing up I saw him sometimes, like across the street or in a mall or
in the subway. We would just nod to eachother, but I never spoke to him.
Probably becuase while I learned to code, he became a drunk...

But I would like to meet him again. Guess I have a lot to thank him for...

Anyways, here is the cutie:

http://en.wikipedia.org/wiki/Luxor_ABC80

- Michael S


Dec 13 '05 #24

"Jon Skeet [C# MVP]" <sk***@pobox.co m> wrote in message
news:MP******** *************** *@msnews.micros oft.com...
Michael S <no@mail.com> wrote:

<snip>
And the latter group typically don't adopt OO-principles. They still view
a
class as some module you just put code and som Dims in, they keep on
concatinating strings, declaring their arrays, and don't get why an
ArrayList or a StringBuilder could ever be useful. The think in terms of
variables and don't get the 'reference on stack, object on heap' model
and
can't undestand why passing a huge array to a method would be the bad
thing.


I don't understand why passing a huge array to a method would be a bad
thing either though. Arrays are reference types - you're not passing a
load of data. What kind of problem are you thinking of?

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too


My Bad!

I ment huge structs, in loops.

I re-wrote that part a couple of times and wanted to mention value/reference
and also boxing/unboxing. It was not any good, so I erased stuff to get rid
of complex examples, and I guess array just got there and I went along
continuing writing...

Thanks Jon, for making sure people get that passing arrays is not bad.

- Michael S

Dec 13 '05 #25
> New here so be kind... :)

We will be. You are most Welcome.
We only hurt veteran posters we know.... and Flamewarriors.. . and Trolls. =)

"Difference s Between Visual Basic .NET and Visual C# .NET"
http://support.microsoft.com/default...b;en-us;308470

But with NET 2.0 this article is almost obsolete. And with 3.0 there will be
hardly none.
I've worked in VB6 since 1999 but since being involved in c# projects for
the past 3 years, my first preference is c#.


And so you get in here, posting a link updated in june on a legacy topic,
and then tell us you might have lost your brain since 1999, and then brags
about you getting your rationale back?

Great post!

- Michael S

ps.
Now Nicholas will spank me again for being an a-hole.

pps.
iWeb: I'm not really a bastard. Just trying to be funny. Welcome!

Dec 13 '05 #26

"Peter Bromberg [C# MVP]" <pb*******@yaho o.nospammin.com > wrote in message
news:19******** *************** ***********@mic rosoft.com...
Mantorok,
IIn addition, you might want to mention to your boss
that unfortunately, the Microsoft.Visua lBasic assembly is not marked
CLS-Compliant and this can cause problems down the road. I understand,
however, that this has been fixed in .NET 2.0.
--Peter


Nice Peter.

This is an important thing. More 'ammo' to Mantorok.

While C# is not CLS-compliant at all, for example being case-sensitive, C#
kinda inspire you to write good clean managed code.

VB.NET devs typically reference the Microsoft.Visua lBasic namespace, which
(usually) involves COM and makes the code go out of specs by ISO and ECMA.

A C# dev may not conform to CLS; He might go high on crack, and name methods
with the same name, SoHigh(), soHigh(), SOHIGH(); but I think this never
happens.

C# devs tend to know that you shouldn't expose a public overloaded operator
in a public framework, as C++.NET devs knows they shouldn't sport
multi-inherited class as public.

CLS is not a problem!

I really don't think this CLS-thingy is a problem at all; as coders who know
their code will be used by someone else, typically takes more care in making
it good.

In the meantime, VBers are including stuff from the Microsoft namespace just
to get some VB6 feel into their coding, and by so, will never run on Mono.
While this is seldom a requirement and also seldom a problem, I still get
scared. Not for them doing it, but for not even care..

A reference to Microsoft.Visua lBasic is for me a sign (proof) that the devs
are missing VB6 and would rather do that...

Put them on maintainance where they could do some serious (and important)
work, and not on development....

Just my thought.

- Michael S


Dec 13 '05 #27
LOL @ "Visual Basic Sucks So Hard
It Bends Light".

I'll have to remember that one.

Jason

Michael S wrote:
"Mantorok" <no**@tiscali.c o.uk> wrote in message
news:dn******** **@newsfeed.th. ifl.net...
Hi all

We are an organisation that use C# currently and we have some members who
are not yet trained in .Net or C#, some staff have requested they use VB
instead (probably due to their background).

Given that we are already using C# I think adding VB into the mix is a bad
idea - not with regards to the language itself but the fact that the
VB.Net coders won't learn C# and possibly vice-versa.

Apart from the business reasons not to introduce a 2nd .Net language, are
there any sites with un-biased views as to why both languages are in
effect - equal?

Thanks

Hi Mantrorok.

As part of my work I train VB6 developers becomming .NET developers. Both
in-house, but we also sell this service to our customers. Hence, I have
trained VBers in both VB.NET and C#, and I have noticed some important
issues with the two languages.

VB6 devs learning C# - pretty soon learns to forget everything they know
about what they used to do, and adopt OO-principles. C# is new and they
think in new directions.

However, the VBers that moves to VB.NET typically have a lot slower
learning-curve. As the syntax is so like the old basic, they tend to think
of VB.NET as just another complex Visual Basic alas more complex.

And the latter group typically don't adopt OO-principles. They still view a
class as some module you just put code and som Dims in, they keep on
concatinating strings, declaring their arrays, and don't get why an
ArrayList or a StringBuilder could ever be useful. The think in terms of
variables and don't get the 'reference on stack, object on heap' model and
can't undestand why passing a huge array to a method would be the bad thing.

Just this monday I visited a customer to do some simple maintainance for
them, and their VB.NET devs still prefix their types like they was variants:
strName, lngAge, objSqlConnectio n. It is so bleeding obvious why they
choosed VB.NET, not becuase they like it, but becuase they liked what they
had. They want to continue coding in same old way as they are used to. I
think most of them are also frustrated with .NET and just think it's complex
and bothersome.

Another thing about VB.NET and OO is the weird syntax, C# maps pretty well
to common concepts in the OO world, while VB.NET is harder to teach:

If I want to make this method abstract do I mark it as abstract?

C# - - Yes.

VB.NET - No Sir! You write mustinherit.

While I hate VB in any form and truly think that Visual Basic Sucks So Hard
It Bends Light -
I tried to give you some real exemples of my experience with teaching .NET
to VBers.

Hope this helped
- Michael S

Dec 13 '05 #28
While C# is not CLS-compliant at all
CLS compliance is not a property of a language, but of the code you
write. You can write CLS compliant and non-compliant code in both C#
and VB.NET.

VB.NET devs typically reference the Microsoft.Visua lBasic namespace, which
(usually) involves COM
Involves COM in what way?

and makes the code go out of specs by ISO and ECMA.
Are you saying that you shouldn't use any libraries that haven't been
standardized?

A reference to Microsoft.Visua lBasic is for me a sign (proof) that the devs
are missing VB6 and would rather do that...


The Microsoft.Visua lBasic assembly is implicitly referenced by the
compiler (because it implements functionality required by the
language) so you don't have a choice.
Mattias

--
Mattias Sjögren [C# MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
Dec 13 '05 #29
"Michael S" <no@mail.com> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
But with NET 2.0 this article is almost obsolete. And with 3.0 there will
be hardly none.


As you know specs by heart, wouldn't this be something you should write
about on your website.. Just an idea...

- Michael S

Dec 13 '05 #30

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
11252
by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL) on the server because of that. Our site will have an SSL certificate next week, so I would like to use AIM instead of SIM, however, I don't know how to send data via POST over https and recieve data from the Authorize.net server over an https...
2
5847
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues to execute the code until the browser send his reply to the header instruction. So an exit(); after each redirection won't hurt at all
3
23042
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which field is completed.
0
8501
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. 354 roberto@ausone:Build/php-4.3.2> ldd /opt/php4/bin/php libsablot.so.0 => /usr/local/lib/libsablot.so.0 libstdc++.so.5 => /usr/local/lib/libstdc++.so.5 libm.so.1 => /usr/lib/libm.so.1
1
8613
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the column below. The viewer can select states from the drop down lists above the other two columns as well. If the viewer selects only one, only one column fills. If the viewer selects two states, two columns fill. Etc. I could, if appropriate, have...
4
18310
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the user comes back to a page where he had a submitted POST data the browser keeps telling that the data has expired and asks if repost. How to avoid that? I tried registering all POST and GET vars as SESSION vars but
1
6875
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url http://www.mis.gla.ac.uk/biquery/training/ but each of the courses held have maximum of 8 people that could be
2
31448
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value to :parameter I dont like the idea of making the SQL statement on the fly without binding parameters as I dont want a highly polluted SQL cache.
3
23606
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the results of the picture half the size. The PHP I have installed support 1.62 or higher. And all I would like to do is take and image and make it fit a 3x3. Any suggestions to where I should read or look would be appreciated.
0
9703
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9565
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10550
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10295
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10069
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9125
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5633
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4275
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3799
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.