Gå til innhold

Anbefalte innlegg

Hei!

 

Debattene har i lang tid rast om hvilket av disse to språkene som er "best". Siden jeg hadde brukt vb6 ble det naturlig for meg å gå videre til vb.net. Jeg har registrert at flere her inne foretrekker c# og at Manfred har et noe anstrengt forhold til vb :) I Gamle dager kan jeg skjønne at folk foretrakk c/c++ foran classic vb men skal ikke disse to nye språkene produsere ganske lik kode? Er det ennå slik at man lærer endel uvaner ved å bruke vb? Den eneste grunnen til at jeg kan tenke meg å lære c# er at det er språket som helst brukes i xna.

 

Har ikke lyst til at dette skal bli en fanboi-flamewar men skulle gjerne hørt noen saklige argumenter på hvorfor det ene er bedre enn det andre.

 

(litt trøtt her på mårran så litt rotete innlegg)

Lenke til kommentar
Videoannonse
Annonse

Du kan jo ta en titt her: http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

 

Et lite utrag:

VB.NET

Private _size As Integer

Public Property Size() As Integer
 Get
Return _size
 End Get
 Set (ByVal Value As Integer)
If Value < 0 Then
  _size = 0
Else
  _size = Value
End If
 End Set
End Property

foo.Size += 1

 

C#

private int _size;

public int Size {
 get {
return _size;
 }
 set {
if (value < 0)
  _size = 0;
else
  _size = value;
 }
}


foo.Size++;

 

 

 

'nuff said ;)

Lenke til kommentar
Har ikke lyst til at dette skal bli en fanboi-flamewar men skulle gjerne hørt noen saklige argumenter på hvorfor det ene er bedre enn det andre.

 

Optimist! :!:

 

Som du ser, så er VB mye mer oversiktelig :D

 

Smak og behag. Jeg syntes C# er myyye mer oversiktlig, og jeg har hatt store prosjekter i begge språkene.

 

 

 

Den kompilerte koden blir så og si lik.

 

* C# er "strengere" enn VB.Net. VB.Net kan derfor være enklere for nybegynnere, men "latskapen" gjør at man kan få runtime feil/bugs. Noe av dette kan man unngå ved å forandre instillingene på prosjektet, men hvor mange gjør det?

* C# har flere avanserte muligheter enn VB.Net. Ex. unsafe kode.

* Visual Studio oppfører seg litt anderledes for språkene. VB.Net har litt mer funksjonalitet som gjør visse oppgaver litt enklere.

* I jobbsammenheng er C# å foretrekke fordi det blir sett på som mer profesjonelt. Det er mye flere ledige jobber innen C# enn VB.Net.

* Microsoft satser mer på C# virker det som. Lettere å finne god dokumentasjon, eksempler og tutorials.

* Av en eller annen rar(?) grunn klarer alle som bruker C# å lese VB.Net kode helt fint (selv om de klager å syter på at det er rotete), men VB.Net utviklerene blir hysteriske (fordi de ikke forstår noenting) om de må lese en liten snutt C# kode...

* C# ligner mer på Java, JavaScript, C/C++, etc. Slik at man får et bedre utgangspunkt til å jobbe med andre språk.

 

* VB er IKKE det samme som VB.Net. Gamle VB programmere tar ofte med seg de dårlige uvanene de har brukt i VB (fordi VB er dårlig) over i VB.Net.

Lenke til kommentar

Jeg har ganske nylig gått over fra VB.net til C#, og har ikke tenkt meg tilbake. Jeg har ikke noe imot VB.net, men som Jørn sier er egentlig C# myyyye mer oversiktlig.

 

Jeg mener også at man kan skrive et program raskere i C# enn i VB.net, fordi du slipper å styre med lange nøkkelord som "then", "end sub", "end select", "end X", osv., men heller har de pene {}. Og så har du fine snarveier, som feks å skrive "prop" eller "for" og trykke tab to ganger, og så får du ferdig kode for henholdsvis en egenskap (Property) (som du ser i eksempelet til Spartakus) eller en for-løkke ferdig skrevet, og det gjenstår bare å endre nøkkeldelene så det passer til ditt behov (det er mulig dette finnes i VB også, men det tror jeg ikke).

 

C#-IDEet er også såvidt jeg vet raskere enn VB.net-IDEet, siden sistnevnte driver med forskjellige ting mens du jobber, i stedet for når du kompilerer (som C# gjør).

 

Og så er jeg veldig enig i alt Jørn sier i posten over.

 

 

(Og hvis noen er interesserte i å oversette de gamle VB.net-prosjektene mine til C# (for et pent klapp på skulderen) er det bare å si fra!)

Endret av Degeim
Lenke til kommentar

Tusen takk for gode svar :) Det med at det finnes flere eksempler til c# har jeg flere ganger oppdaget. Er ikke bestandig helt lett å få konvertert de over vb. Lurer på en ting. I gamle dager når man trengte å gi vb6 litt ekstra hjelp så skrev man en liten rutine i c/asm og kalte den fra vb. Dette er vel fremdeles mulig med .net? akkurat det her med api i vb.net synes jeg er blitt en ekkel sak.

Lenke til kommentar
Tusen takk for gode svar :) Det med at det finnes flere eksempler til c# har jeg flere ganger oppdaget. Er ikke bestandig helt lett å få konvertert de over vb. Lurer på en ting. I gamle dager når man trengte å gi vb6 litt ekstra hjelp så skrev man en liten rutine i c/asm og kalte den fra vb. Dette er vel fremdeles mulig med .net? akkurat det her med api i vb.net synes jeg er blitt en ekkel sak.

 

Man har muligheter for å kjøre interop på kode som ligger i "gammeldagse" DLL filer og win32 api ja.

Lenke til kommentar
* Av en eller annen rar(?) grunn klarer alle som bruker C# å lese VB.Net kode helt fint (selv om de klager å syter på at det er rotete), men VB.Net utviklerene blir hysteriske (fordi de ikke forstår noenting) om de må lese en liten snutt C# kode...

Jeg klarer da å lese C# helt perfekt :D

 

Enig i at det er mer tutorials i C#, men det tar jo ikke evigheter å konvertere det til VB.NET, så sant det lar seg gjøre da... Eneste jeg har vært borti som ikke lar seg convertere er noe Unchecked integer eller noe...

Lenke til kommentar

En av grunnene til at jeg sluttet med Visual Basic.net var det at store prosjekter blir fort uoversiktelig.

 

Men synes jeg dette er fordi Visual basic kode inneholder så mye uviktig informasjon

som End Sub, End Interface etc. der alle disse kunne vært byttet ut med bare End som det er i Pascal.

 

Også type konvertering synes jeg er enklere (og bedre) i C#, i tillegg har man flere muligheter i C#

 

Har også inntrykket av at de fleste som begynner med VB.NET går forholdsvis raskt over til C#.

 

Det som ikke lar seg konvertere til VB.NET:

 

public unsafe void ProcessBitmap32(Bitmap src)
{
System.Drawing.Imaging.BitmapData data = src.LockBits(new Rectangle(0, 0, src.Size.Width, src.Size.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, src.PixelFormat);

unchecked
{
	uint* ptr = (uint*)data.Scan0.ToPointer();

	int pixels = src.Size.Width * src.Size.Height;

	for (int x = 0; x < pixels; x++)
	{
		// Get red/green/blue values
		uint red = (*ptr & 0x00ff0000) >> 16;
		uint green = (*ptr & 0x0000ff00) >> 8;
		uint blue = (*ptr & 0x000000ff);
		// Store alpha, so we don't lose it
		uint alpha = (*ptr & 0xff000000);
		// Calculate max value
		uint mx = max(red, green, blue);
		uint mn = min(red, green, blue);
		// Calculate 
		uint delta = mx - mn;
		// Divide by 2
		uint delta_2 = (delta / 2)  + mn;

		*ptr++ = alpha | (delta_2 << 16) | (delta_2 << 8) | (delta_2);

	}
}

src.UnlockBits(data);

}

 

Det denne koden gjør, er å konvertere et fargebilde til et sort/hvitt bilde.

Lenke til kommentar
  • 1 måned senere...

Det som er er at det stort sett er smak og behag som avgjør om en bruker VB.Net eller C#, man kan lage pretty much akkurat de samme applikasjonene med de to språkene.

 

Man kan ikke akkurat si det samme om VB6 og C++, f.eks.

 

Selv jobber jeg med C#, og må si jeg synes VB.net virker som om det har mye mer tungvint syntaks.

Lenke til kommentar

VB.NET har en mye tyngre syntaks, dette mye på grunn av alle nøkkelorda som språket bruker som C# ikke har (sub, function end, property.

 

Jeg mener at dette er ikke snakk om smak og behag, jeg er temmelig sikker på at de som mener dette er smak og behag, ikke har laaang erfaring i begge to.

 

C# > VB.NET

 

Jeg har laaaaaaang erfaring med VB fra VB3.0 og oppover, også VB.NET brukte jeg i et par år, men nå bruker jeg kun C# fordi:

- enklere syntaks (færre nøkkelord, pluss endel logiske vendinger som ikke er i VB.NET)

- mye mer oversiktelig kode

- flere muligheter (pekere blant annet)

 

Blant annet liker jeg at C# gjør forskjell på:

- sammenligning og verdisetting (== mot =)

- binære og logiske operasjoner (&& mot &)

 

ting som er i C# men ikke i VB.NET

Increment/decrement:

int i = 0;
i++

 

Operator as

foreach(object o in collection)
{
 IDisposable disp = o as IDisposable;
 if(disp != null)
disp.Dispose();
}

 

Assignment og sammenligning i samme setning:

string s = null;
while((s = reader.ReadLine()) != null)
 DoSomething(s);

 

Kommentarer over flere linjer

/*
Hei på
Du
*/

 

Pekere:

 

public unsafe void PointerSample()
{
 int *ptr; // Lag en peker
 int i = 0; // Definer en verdi
 ptr = &i; // La pekeren peke til i
 *ptr = 200; // Lagre 200 til der ptr peker til (i)

 // Nytt eksempel
 int[] arr = new int[255];

 fixed(int *arr_ptr = (int*)arr)
 {
for(i = 0; i < arr.Length; i++, arr_ptr++)
 *arr_ptr = 200;
 }
}

 

For de som enda ikke har turt å røre C#: prøv! C# er bedre på alle måter, og dette kommer fra en som begynte å lære seg programmering i VB3 og QuickBasic.

Lenke til kommentar
  • 2 uker senere...

Når det gjelder tung syntax, så er det et veldig lite relevant argument for å bytte over til c# hvis en først er vant med vb.

 

Tror ikke det er så veldig mange programmere som sitter og skriver kode med touch hele dagen og som blir holdt tilbake av at de må skrive så mange linjer, hadde det vært det store problemet hadde vi byttet til Ruby hele gjengen :p

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...