» »

VB vs. C#

VB vs. C#

roli ::

Čisto tako nekako sem danes spet začel razmišljati o programiranju. Pred malo več kot pol leta sem se učil še osnov Visual basica (.net - visual studio express) nato pa mi je nekako zmanjkalo časa. Zdaj bi pa spet rad začel in se ne morem odločiti kaj bi izbral. V VBju sem prišel nekje do open file... stvari. Zanima me ali je velika razlika med VB in C#? Predvsem me C# vleče zto, ker bi rad šel bolj na XNA studio (za katerega je podlaga C#). Torej kaj naj naredim?

In morda kaki linki do tutorialov za XNA studio bi bili dobri (sicer je nekaj na MSjevi spletni strani... ampak rabim malo več).
http://www.r00li.com

kihc ::

Če se boš začel učit C# boš mogu it kar lepo od začetka, ker v XNAju pridejo v upoštev vse bolj sofisticirane zadeve kot so dedovanje, interfaci in še marsikaj, katerih pa mislim da VB ne pozna.

Za XNA je pa imo alfa & omega & zeta ... ta knjiga. hint: emula. Je pa zelo fino prej vsaj mal poznat C# preden se je lotis.

//edit zdej sm vidu, da VB dejansko podpira vse kar sm gor naštel. My bad.
x

Zgodovina sprememb…

  • spremenil: kihc ()

Backup22 ::

Razlika je v bistvu samo v sintaksi (vsaj mislim, da je tako in še nisem videl stvari, ki bi jo v C# lahko naredil, v VBju pa ne [ali obratno]). Meni osebno je C# veliko bolj domač... VB sintaksa se mi zdi nepregledna in grda (to je sicer samo moje mnenje). C# je pač podoben C++, Javi, kjer sem sam začel.

Za XNA, pa poglej to, to, ali še kaj podobnega iz googla...

Dodatek:

Za C# najdeš veliko video tutorialov, ki so na začetku zelo dobrodošli...
klik (spodaj maš learning resources ali kaj podobnega)...
Super so tudi video tutoriali iz learnvisualstudio.net/, ki pa so nažalost plačljivi (verjetno jih znaš dobit "ceneje")...
//

Zgodovina sprememb…

  • spremenilo: Backup22 ()

roli ::

Hja no to, da bi moral jit od začetka vem - ker tudi za visual basic sem že nekako skoraj vse pozabil. Potem pa bi pač rabil nekaj C# vodičev. Tisti iz learnvisualstudio (ki so tudi na MSjevi spletni strani) so meni precej zanič - vsaj tisti za Visual Basic. Jaz sem mel za visual studio vodiče iz tukaj in so mi bili blazno dobri. Čepoznate kaj dobrega ali podobnega tistemu iz mojega linka - se priporočam. Drugače bom sicer še malo sam poiskal.

Edino nekaj me zanima - pri C# je važno ali je velika črka ali mala? Ker pri VB ni in to mi je blazno všeč, ker ne rabim še razmišljat al napišem Blabla al BLAblA - vse je isto.
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()

Kami ::

Je važno.

darkolord ::

Pri C# ti tudi ni treba razmišljat o tem, ker ti IntelliSense od Visual Studia sproti predlaga imena pri pisanju

roli ::

aha! No IntelliSense sem že tako ali tako uporabljal pri visual basicu samo včasih pa raje kaj sam napišem kot, da ga uporabim.

Edino morda še kak tutorial podoben tistemu kar sem dal prej link?
Potem pa v napad:D !
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()

roli ::

Malo gledal tutoriale za C# in lahko rečem samo 8-O ! Tole se pa veliko zakomplicira za razliko od Visual Basica - pa sem mislil, da je tisti zakompliciran:D . Najbrž bi sicer moral jit lepo počas in bi skapiral - nekoč:D . Sicer se vsi tutoriali bolj nagibajo v smer programiranja za ukazno vrstico (brez GUI) - ampak to je najbrž bolje, če mislim XNA potem začeti?
http://www.r00li.com

Backup22 ::

Meni so vodiči iz learnvisualstudio bili zelo všeč. Začne lepo z osnovami - kaj sploh OO jezik je, nekaj primerov, potem spremenljivke, metode, potem pride GUI ali pa Web Development (tudi z AJAXom). Na MSjevi strani je tut fajn primer za .NET web aplikacijo (mislim, da je neki kviz), za win forms pa RSS reader. Gre pa lepo vse od začetka (načrtovanje, implementacija, testiranje)...

C# je case sensitive ja. Pri poimenovanju itaq mora bit red... jaz spremenljivke poimenjujem z malo začetnico, metode pa z veliko.
//

mHook ::

Kar je .NET je vseeno ali je VB.NET ali C# (ker oba uporabljata .NET Framework).
VB.NET je po funkcionalnosti zelo podoben kot C#, je pa za začetnika lažji in "izgleda" bolj berljiv.

Enkrat sem nekje zasledil, da so bili primeri samo v VB.NET (razlaga je bila, da tisti ki razume C# bo tudi VB.NET razumel, obratno pa ni nujno res).

Pe še en primerček v obeh jezikih:
//C#
int x = (pogoj) ? 1 : 0;

vs
'VB.NET
Dim x As Integer
If pogoj
Then
    x = 1
Else
    x = 0
End If

Tisti, ki bi uporabil IIf, naj opozorim, ta je to funkcija

mHook ::

Pa še to: VB.NET nima bolkovnega komentarja (/*...*/).

Loki ::

v cem pa j prednost tega "?" pred IF stavki? in kaj se obicajno uporablja?
I left my wallet in El Segundo

mHook ::

To je inline if in se uporablaj za kakšne enostavne prireditve vrednosti.

Primer: vsaka druga vrsta naj se obarva drugače:
barva = (n % 2 == 0) ? barva1 : barva2;


Včasih ga nekateri tudi zlorabljajo. Spodnji primer je že na meji.
Npr. če je danes nedelja naj bo barva rdeča, sicer črna.
test.ForeColor = (DateTime.Today.DayOfWeek == DayOfWeek.Sunday) ? Color.Red : Color.Black;

jype ::

Nimam časa prebrat, kaj so svetovali ostali, ampak...

Ne se učit basica:

It is practically impossible to teach good programming style to students
that have had prior exposure to BASIC: as potential programmers they are
mentally mutilated beyond hope of regeneration.
           -- Edsger W. Dijkstra, SIGPLAN Notices, Volume 17, Number 5

C# je eden najodličnejših sodobnih jezikov.

Loki> v cem pa j prednost tega "?" pred IF stavki? in kaj se obicajno uporablja?

Ko ravno gledam kodo:
printf ("%%%%Orientation: %s\n", rotate?"Landscape":"Portrait");

Zgodovina sprememb…

  • spremenilo: jype ()

xeon ::

XNA lahko uporabljaš tudi v VB-jem. Klik

roli ::

Mah se bom moral z C# potrudit. Ker XNA in VB sicer očitno deluje ampak samo za računalnik in glede na to, da sem lastnik xškatle360 bi si morda v prihodnosti kdaj kaj zaželel sprogramirati zanj - će bom preživel učenje C#:D !

Ravnokar sem opazil, da se pri C# zaključuje vrstice z ;. Hihi tole se bo treba navadit!
Sem našel eno knjigo, ki razlaga tole. Samo ne vem katero bi izbral - Microsoft Visual C# 2005 Step by step ali Beginning C# 2008: From Novice To Professional. Ali pa kaki online tutoriali? Ker to kar sem na googlu našel je neprimerno zame - morda sem kaj spustil.

EDIT:
Zdaj še visual studia ne morem namestit - dobim samo tole:
Setup has encountered a problem while trying to copy:
f:\58e74a3d02af09be7\$shtdwn$.req
Press retry to ....

Pa kaj mu je? disk F je v resnici ext2 pogon mountan v XPjih preko enega programčka ampak ne vem zakaj bi ga to motilo?
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()

Loki ::

jjpe ni mi jasno nic, kaj si mislil s tem. jaz sem spraseval za ? kot substitut if.
kot tudi, kaj je narobe s tistim drugim primerom, ki ga je podal mhhok? v tak if ne smes tlacit expressionov ali funkcij?
I left my wallet in El Segundo

jype ::

jype> printf ("%%%%Orientation: %s\n", rotate?"Landscape":"Portrait");

bi lahko zapisal tudi kot

if (rotate)
    printf ("%%%%Orientation: Landscape\n");
else
    printf ("%%%%Orientation: Portrait\n");

mHook ::

Lahko namečeš kar želiš, samo potem postane nepregledno, in lahko da ne deluje tako kot si mislil (če pozabiš kakšne oklepaje ali kaj podobnega).

frudi ::

VB.NET pozna podobno zadevo, ki pa deluje nekoliko drugače: IIf funkcija. Eden prejšnjih primerov bi tako bil:
barva = IIf(n mod 2 = 0, barva1, barva2)

Je pa posledično ena fundamentalna razlika v primerjavi s C#-jevim ? operatorjem - ker je IIf funkcija, se vsi parametri ovrednotijo (ali kakorkoli bi se že prevedlo 'evaluate') že ob klicu. Zaradi tega recimo naslednji primer ne deluje:
rezultat = IIf(b = 0, 0, a/b)
medtem ko C# prav lepo prebavi:
rezultat = (b == 0) ? 0 : (a * 1.0)/b;
VB.NET bo najprej ovrednotil izraza '0' in a/b in če je b = 0, boš dobil divide by zero.
Mimogrede, tisti (a * 1.0) je tam za primer, če sta a in b celoštevilskega tipa; operator / v C# v tem primeru pomeni celoštevilsko deljenje.
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)

roli ::

Torej a res nihče ne ve zakaj ne morem namestiti Visual studia? Govorim seveda o Visual studio express 2008- tista napaka pa se pojavi že ob začetku namestitve (pri odpakiranju datotek).
http://www.r00li.com

mHook ::

poskusi pred zagonom setupa narediti unmount tega diska (izgleda, da ga setup uporabi za začasni disk - verjetno ima največ prostega diska).

roli ::

Sem se spomnil že včeraj ponoči to - in deluje!
Ga je namestilo!
http://www.r00li.com

roli ::

Hja no ampak zdi se mi, da mu nekaj manjka - čudno zgleda:


Je to normalno? Ker vem, da sem imel 2005 verzijo Visual studia (sicer za visual basic) in je izgledalo to besedilo lepše pa tudi polja z dodatnimi nastavitvami so bila. Pa tudi v vseh vodičih je to drugače kakor imam jaz. Prav tako mi je na začetku težil, da nimam povezave z interntom (tam kjer prikazuje novičke).

Mislim, da ni OK! Sem pa sredi namestitve sicer vklopil tisto praticijo nazaj in ga je morda to zmotilo.
http://www.r00li.com

darkolord ::

Men zgleda čist v redu.

roli ::

OK dobro!
Samo fonti mi malo čudno izgledajo tam, pa v VB sta spodaj pri new project še dva polja in ena kljukica. Tukaj pa očitno ni nič.

Zdaj pa gremo na učenje:D !
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()

mHook ::

S fonti očitno ni nekaj v redu.
Mogoče je problem v temi (minimize in maximize gumba že nista "normalna").
Sicer pa se poskusi prijavit v sistem s kakšnim drugim userjem (če ga nimaš, ga naredi) in preveri kako deluje tam - lahko da je problem v profilu ali registru.

sverde21 ::

Fonti so verjetno čudni, ker jih pobere od windows teme, tako da probaj z default windows temo, mogoče bo bolje ;)
<?php echo `w`; ?>

roli ::

Danes sem prišel do 4 lekcije iz microsoftove spletne strani - videi so v resnici iz learnvisualstudio.net. Do tukaj je še vse skupaj praktično enako kot pri VBju (razen, da si tam string dobil takole - dim nekaj as string - tukaj pa takole string nekaj)
http://www.r00li.com

StratOS ::

Še velika razlika je, npr da VB ne pozna unsigned tipa, pač pa samo signed :(
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

mHook ::

Tipi niso stvar jezika, ampak so del .NETa: npr. UInt32 dela tudi v VB.NET.

StratOS ::

VB in VB.NET sta dva različna pojma.
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

mHook ::

Ja, VB in VB.NET imata toliko skupnega kot fičo in ferari.

alum ::

Tipi niso stvar jezika, ampak so del .NETa


Tukaj mi nekaj ni čisto jasno. VB .NET sicer pozna UInteger. Tudi marshal unsigned tipa iz C# v VB deluje brez problemov (vsaj ne da bi jih jaz opazil).

Na drugi strani pa je na MSDN-ju objavljeno, da uporaba unsigned tipov ni CLS-Compilant ( klik).

Kako je s tem?

BlueRunner ::

CLS (Common Language Specification) je podmnožica CTS, ki jo morajo (must) implementirati vsi prevajalniki, ki prevajajo v CLR. V bistvu je to najmanjši skupni imenovalec podatkovnih tipov, ki jih morajo jeziki poznati in podpirati, da je za njih smiselno napisati prevajalnik v CLR. Nepredznačenih celoštevilskih tipov, razen 8-bitnega zloga, v njemu pač ni, ker jih tudi ni v starem VB-ju, ali pa recimo v J#, ki uporablja Java sintakso. To ne pomeni, da ni možno uporabljati nepredznačenih in ostalih tipov, ki so implementirani v CTS, samo ti tipi pač ne spadajo v CLS. Praktično pa je to omejitev s katero se ne rabiš kaj dosti obremenjevati, ker v zagrajenem okolju .NET nima praktičnih posledic.

CTS (Common Type System) je sistem podatkovnih tipov, ki je namenjen podpori velikega števila objektnih in proceduralnih jezikov. Npr. F# kot izvedenka Fortran sintakse in Eiffel.NET kot implementacija Eiffel sistema, se oba zanašata na isti CTS, čeprav je en strogo proceduralen, drug pa strogo objekten jezik. Tukaj najdeš vse primitivne tipe in ogrodje za izgradnjo poljubnih kompleksnih tipov.

CLR (Common Language Runtime) je okolje sestavljeno iz JIT, GC in standardne knjižnice. JIT (Just-In-Time compiler) skrbi za sprotno prevajanje CLR kode v strojno kodo in izvajanje le te. GC (Garbage Collector) skrbi za delo s pomnilnikom, standardne knjižnice pa so tisto, kar da okolju dejansko substanco. CLR je ekvivalent JVM + standardni knjižnici za Javo.



Kar se pa tiče tiste Dijsktrine zgodbe o jeziku BASIC, pa se lahko to zelo hitro zaključi. Citat je sicer čisto lep in simpatičen za malo šale, vendar pa je potrebno vedeti, da je star že več kot 30 let. Marsikdo na teh forumih takrat ni bil še niti rojen, marsikdo pa tudi verjetno še ni videl nakterih mlajših dialektov BASIC-a (ZX-81, ZX Spectrum, C-64, Simon's Basic, ...) iz 80-ih let. Dijsktra je pisal o neki grozi, ki ni poznala rekurzije, parametrov, blokov, ločljivosti spremenljivk, ... vse vrstice so bile predznačene z zaporedno številko, bistveni stavki, ki so se uporabljali pa so bili GOTO, GOSUB in RETURN, podatkovna tipa sta bila dva: številski in znakovni z dolarji. Skratka, nekaj kar je resnično "uničilo" mlade možgane, čeprav (zaradi sebe) upam, da ne dokončno.

Microsoft je s to dediščino temeljito pometel že z VisualBasic dialektom, ki se je od BASIC-a oddaljil tako daleč, kot nendertalec od opice. Številke vrstic so se izgubile, GOSUB in RETURN sta izginila, dobili smo prave podprograme s parametri, spremeljivke so dobile svojo ločljivost, pojavili so se razredi (vendar ne še OOP!), dobili smo rekurzijo, popolne podatkovne tipe, ... V bistvu je od BASIC-a ostala samo osnoven sintaktični okvir: stavki se ločujejo z novimi vrsticami, ali pa z dvopičji, za primerjanje in prirejanje se uporablja enojni enačaj, imena vseh elementov (besed in spremenljivk) so neobčutljiva na velikost znakov.

VB.NET pa je bil znova preskok, v katerem (smo prišli do modernega človeka...) smo dobili celoten OOP, bloke, lambda izraze (v verziji 3), zapore, osnovno podporo za elementarno večnitnost, standardno (CLR) knjižnico, ... in še in še. Microsoft ima verjetno nekje na kakšnem letaku celoten seznam "cukrčkov," ki so dostopni v okolju, kjer lahko uprabljamo sintakso, ki še vedno kaže svoje korenine v BASIC-u iz Dijkstrinih 70-ih let. Vendar pa, če kdo resno trdi, da je VB.NET v letu 2007 zanič samo zato, ker je Dijkstra 1975 rekel, da je njegov pra-pra-pra-pra-stari oče zanič, potem nujno potrebuje še malo "zic-ledra" in nekaj dobrih knjig, da ugotovi, kaj se je zadnjih 30 let okoli njega dogajalo.

VB.NET je dejansko bližje Javi, kot pa nekem starem BASIC-u, tudi zato, ker dejansko omogoča da z njim v celoti izkoristimo vse danosti CLR-ja. C# je morda res seksi in bolj, ampak Microsoft vloži ogromno časa in energije v to, da VB.NET ostaja na čisto enakem nivoju, kot je C#. Že zaradi tega je bedak, kdor ga podcenjuje samo na podlagi nekih starih mnenj in ne na podlagi lastnih izkušenj.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Znane podrobnosti o Windows Store

Oddelek: Novice / Operacijski sistemi
318362 (2517) acookook
»

VB2008 vprašanje

Oddelek: Programiranje
71012 (844) Looooooka
»

Visual Studio 2008 in .NET Framework 3.5 (strani: 1 2 )

Oddelek: Novice / Ostala programska oprema
609094 (7234) darkolord
»

Visual Basic.NET - za začetnika ?

Oddelek: Programiranje
304771 (3890) mHook
»

Visual Basic, C#, C++, razlike... (strani: 1 2 3 )

Oddelek: Programiranje
12212616 (10287) 64202

Več podobnih tem