Trenutno se bavim programiranjem u Visual Basicu pa me zanima da li trebam razmišljati o prelasku na C# i šta mi možete reći o tom jeziku.
Sa Visual Basica na C#
- poruka: 24
- |
- čitano: 2.915
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Jednostavno: Preporučam prelazak......
Prešao i nisam požalio. Iznimno lagan prijelaz, vrlo sam zadovoljan sa C# i ne bih se vraćao na VB nikada...
Na C# ćeš lagano s bilo kojeg jezika, a ne sa .Net jezika na .Net jezik. Biti će ti jako lagano i definitivno se isplati (npr. ako te zanima izrada igara, imaš XNA framework za C#).
Jedina prednost C# naspram VB-a bi bila nikakva. Gubiš više nego dobivaš. Ako ti je sintaksa VB-a prirodnija nemoj niti pomišljat na C# a XNA možeš i u VB-u radit.
Jedina prednost C# naspram VB-a bi bila nikakva. Gubiš više nego dobivaš. Ako ti je sintaksa VB-a prirodnija nemoj niti pomišljat na C# a XNA možeš i u VB-u radit.
Kakvi su konkretni argumenti za tu izjavu? Što točno gubiš?
recimo My namespace, late binding, com interop, xml literals
Jedina prednost C# naspram VB-a bi bila nikakva. Gubiš više nego dobivaš. Ako ti je sintaksa VB-a prirodnija nemoj niti pomišljat na C# a XNA možeš i u VB-u radit.
C# je vrhunac evolucije programskog jezika, a vb je sranje koje, istina, je kompatibilno sa c#, al se održava samo zato što ima dosta ljudi koji su se navikli na vb iz vrimena dok je jedina alternativa bila c++ i win32 api...
definitivno preporučavam prelazak...
Ja i naxeem smo se debelo raspravljali dal je C# bolji od VB.Net... dosli smo do zakljucka da nije. :) Bar ja. U svakom slucaju, sve sto mozes u jednom mozes u drugom. ALI... istina, kod je malo uredniji u C#... ja sam presao na C# posto su mi i VB.Net i C# kao jezici familijarni tako da mi je prelazak bio u 15 min... (dok se nisam naviko na ;...)
U svakom slucaju... pokusaj... i nemoj da te vrijedja to sta VB.net zovu inferiornim jezikom jer to nije...
A ti bi to trebao znati mariik, zadnji put kada si koristio VB je bilo kad još c# nije bio ni izmišljen...
Pogledaj samo nove verzije koji izlaze slijedeće godine. I ti misliš da će Microsoft napustiti "svoj" jezik za C#, oba se razvijaju podjednako.
Sa novom verzijom po mom mišljenju VB je bolji od C#.
Pazi samo ovo:
Public Property BoljiJezik As String = "VB.NET"
ili
Dim thread As New Thread(Sub()
For Each o In scores
Console.WriteLine(o.ToString)
Next
End Sub
Ja sam pred cca 4 godine presao sa vb.net na c# i samo mogu reci da nikada nebi isao nazad. XML literali i slicno je samo manje bitni syntatic sugar.
Kada vidim keyworde Dim Sub ByVal ByRef Begin Sub... naprosto mi se smuci. Od tolike sume rijeci ne vidis sto je picas (programer) htio reci.
Takodjer, cinjenica da je 95% open source frameworka na c# (mislim da je jos samo DNN na VBu), da skoro svi blogori (hanselman, haack, aftwood, rob conery, ayende, skoro sva Loch Techies i CodeBetter ekipa) koristi c# meni je dovoljan povod da se prijedze na njega, ako nista zivot ce ti bi laksi jer ces moci citati tutoriale i googlat za primjerima koda, a to je naravno danas veliki dio programiranja ;)
A ti bi to trebao znati mariik, zadnji put kada si koristio VB je bilo kad još c# nije bio ni izmišljen...
Pogledaj samo nove verzije koji izlaze slijedeće godine. I ti misliš da će Microsoft napustiti "svoj" jezik za C#, oba se razvijaju podjednako.
Sa novom verzijom po mom mišljenju VB je bolji od C#.
Pazi samo ovo:
Public Property BoljiJezik As String = "VB.NET"
ili
Dim thread As New Thread(Sub()
For Each o In scores
Console.WriteLine(o.ToString)
Next
End Sub
ma nisan ja koristio vb nikad, proba jesan, al kad san vidio te dim, as, sub, ovo, ono odma san odusta... a nisan ni reka da je vb nemoćniji jezik, dapače, kompatibilni su, sve što je napravljeno u jednom, more se naoravit i u drugom... ali probaj taj svoj primjer napisat u c# pa ćeš i sam vidit zbog čega govorin da je bolji, ili makar pokaži nekome ko se nikad nije bavio ni c# ni vb-om pa ćeš vidit šta će ti reć šta je logičnije i razumljivije...
a i uostalom, kad pogledaš svi programeri ovdje na forumu kažu da se nikad ne bi vratili sa c# na vb, a i to nešto govori...
Trenutno ni ne mogu jer to samo VB ima..
Pa sasvim je izvjesno da se u VB i C# mogu napraviti iste stvari. Kao što sam spomenuo prije, prešao sam na C# prošle godine i ne bih se vraćao na VB nikada. Ima VB par stvari koje su bolje, ali to su poprilično sitne stvari - My namespace (kao što je spomenuto), optional parametri i još neke sitnice.
Jedna stvar koja mi nedostaje u C# a postoji u VB je slijedeća:
(možda malo "omašim" sintaksu)
Select case true
case 1=2
...
case "a"="c"
...
case false=false
...
end select
Dakle, trči se kroz case-ove dok se ne pronađe onaj koji je true. Možda se nešto slično može izvesti u C# ali nisam previše eksperimentirao - analogna sintaksa ne radi.
Trenutno ni ne mogu jer to samo VB ima..
očito nisan baš obraća pozornoš na to šta si napisa... iako, kad sad bolje pogledan, zgodne stvari, ali ne bih baš reka da je nešto pretjerano korisno...
a ti pogledaj sad ovo:
vb:
Dim i as Integer = 1
c#:
int i = 1;
triba li još išta reć?
VB stari:
Private _BoljiJezik As String
Public Property BoljiJezik() As String
Get
Return _BoljiJezik
End Get
Set(ByVal value As String)
_BoljiJezik = value
End Set
End Property
C# stari/novi:
private string _BoljiJezik;
public string BoljiJezik {
get { return _BoljiJezik; }
set { _BoljiJezik = value; }
}
VB novi:
Public Property BoljiJezik As String
pa ti prosudi, a koliko često trebaš propertije, nije korisno?
VB stari:
Private _BoljiJezik As String
Public Property BoljiJezik() As String
Get
Return _BoljiJezik
End Get
Set(ByVal value As String)
_BoljiJezik = value
End Set
End Property
C# stari/novi:
private string _BoljiJezik;
public string BoljiJezik {
get { return _BoljiJezik; }
set { _BoljiJezik = value; }
}
VB novi:
Public Property BoljiJezik As String
pa ti prosudi, a koliko često trebaš propertije, nije korisno?
Ali sa Get/set možeš dodatno kemijati, ne?
npr:
private int? _BoljiJezik;
public int? BoljiJezik
{
get { return (_BoljiJezik ?? 0); }
set { _BoljiJezik = value; }
}
Ovo je banalan primjer, mogućnosti su kudikamo veće (umjesto nule može biti neki drugi broj/varijabla)
Nikako se ne bih htio ograničiti samo na Public Property BoljiJezik As String
Public Property BoljiJezik As String
Zašto onda property? Mogao si odmah globalnu varijablu...
VB stari:
Private _BoljiJezik As String
Public Property BoljiJezik() As String
Get
Return _BoljiJezik
End Get
Set(ByVal value As String)
_BoljiJezik = value
End Set
End Property
C# stari/novi:
private string _BoljiJezik;
public string BoljiJezik {
get { return _BoljiJezik; }
set { _BoljiJezik = value; }
}
VB novi:
Public Property BoljiJezik As String
pa ti prosudi, a koliko često trebaš propertije, nije korisno?
ustvari c# novi je:
public string BoljiJezik { get; set; }
istina ne može se u jednom redu odma i upisat nešto u property, al meni osobno ovo preglednije izgleda...
a i ako zatriba dodat neki uvjet lakše je nadodat...
@itf4n: neke stvari iz nekih, valjda samo microsoftovim programerima poznatih razloga, ne rade sa običnim varijablama, nego samo sa propertyma
Da može se kemijati, ako trebaš nešto posebno koristiš staru sintaksu, u biti compiler 'infer'-a to kao klasični get set. samo ne trebaš to sve bezveze pisati.
Da može se kemijati, ako trebaš nešto posebno koristiš staru sintaksu, u biti compiler 'infer'-a to kao klasični get set. samo ne trebaš to sve bezveze pisati.
Pa nije baš da bezveze pišem. Takve idiotske stvari mi odrađuje CodeSmith. Tome i služe generatori.
Jednom sam morao pisati vb.net projekt, pa sam zapeo kod ovoga (primjer u c#):
lista.ForEach( x=> {
Akcija1(x);
Akcija2(x);
....
});
znaci, kako napraviti lambda izraz sa vise naredbi unutar anonimnog delegata?
Kopka me to vec neko vrijeme...
recimo My namespace, late binding, com interop, xml literals
late binding i com interop? hmmm..nemoj se blamirat.
što se tiče ostaloga - nepotrebno. što god ti isprogramirao sa My u 10 linija ja ću bez My sa 3.
a sad - pitanje (iskreno, zaista ne znam) - kako VB stoji sa lambda izrazima, neimenovanim definicijama funkcija, multicast delegatima, definicijama funkcija unutar delegata, extension metodama i sličnim c# forama?
što se tiče ostaloga - nepotrebno. što god ti isprogramirao sa My u 10 linija ja ću bez My sa 3.
U jezicima koji ne koriste newline/cr kao delimiter za naredbe mozes cijeli program isprogramirati u jednoj liniji.
No to ne znaci da to trebas raditi.
Basic ima takvu deskriptivnu sintaksu sa razlogom: da bude jednostavna za citanje.
To sto vecini nas sintactic sugar predstavlja distrakciju je profesionalna deformacija.