Se afișează postările cu eticheta VB. Afișați toate postările
Se afișează postările cu eticheta VB. Afișați toate postările

luni, 8 decembrie 2008

C# vs. VB - Partea a doua

Revin cu partea a doua a micutei noastre comparatii intre C# si VB, si va voi prezenta in continuare diferentele concrete, la nivel de sintaxa, intre cele doua limbaje.

Structura
Din punct de vedere al organizarii generale, codul C# si cel VB sunt foarte asemanatoare, majoritatea diferentelor fiind pur cosmetice - spre exemplu, C# foloseste acolade pentru a deschide si inchide blocuri, VB - "End ". Ceea ce este, insa, bine de stiut, este faptul ca in timp ce C# permite scrierea mai multor instructiuni pe o singura linie, sau a unei singure instructiuni pe mai multe linii, VB nu permite acest lucru. Cu alte cuvinte, in VB avem "linia si intructiunea", sau putem folosi caracterul "_" (underscore) pentru a continua pe linia urmatoare. Majoritatea tutorialelor de tip "coding style guidelines" chiar recomanda folosirea acestei alternative pentru a face codul cat mai lizibil.

Comentarii
La prima vedere, aceasta sectiune poate parea nu foarte importanta, dar de dragul coding style (din nou) si al documentarii codului (mai ales in cazul lucrului in echipa, sau al unui proiect al carui cod sursa urmeaza a fi inspectat de un superior, client, etc.) - voi discuta si acest aspect. Ce este interesant de observat - si o bila alba pentru C# in defavoarea lui VB - este faptul ca C# ofera o mult mai mare flexibilitate a comentariilor - se pot comenta atat cate o linie intreaga sau o portiune finala de linie ("//"), cat si mai multe linii consecutive ("/*...*/"). In VB, in schimb, nu se pot comenta decat linii intregi sau portiuni finale de linii (prin inserarea unui apostrof), si nu paragrafe. Din fericire, insa, Visual Studio compenseaza acest neajuns prin optiunea de a comenta automat o selectie a cursorului.
O facilitate demna de mentionat (chiar daca nu reprezinta o diferenta, fiind accesibila pentru ambele limbaje) este aceea de adauga un summary oricarei functii sau metode.

Tipuri de date
Tipurile primitive de date sunt aceleasi atat in C#, cat si in VB, singurele diferente fiind de scriere a denumirilor acestora. Ca regula, in VB denumirile sunt scrise cu litera mare, iar in C# cu litera mica, singura exceptie fiind DateTime din C#. Tipurile principale de date la care apar si alte diferente sunt (VB/C#): Boolean/bool, Integer/int, UInteger/uint, Single/float, Date/DateTime.
Ce ar mai fi de mentionat aici este conversia intre tipuri. In VB, cea generala se face prin functia CType(obiect, tip), cu forme particulare, cum ar fi CInt, CStr, etc. Iar in C#, conversia se face prin cast, de forma (tip_nou)obiect.

Constante si enumerari
Nu se pot spune prea multe la acest capitol - declararea si folosirea constantelor si a enumerarilor sunt aproape identice intre cele doua limbaje, iar cuvintele cheie (const, respectiv enum), sunt si ele aceleasi (mai putin capitalizarea).

Operatori
Principalele diferente intre operatorii C# si cei VB sunt faptul ca C#, spre deosebire de VB, foloseste doi operatori diferiti pentru atribuire si comparatie de egalitate (=, respectiv ==), si apropierea de limbajul natural a operatorilor logici in VB, fata de C# - spre exemplu AndAlso/And, fata de &&/&, OrElse/Or, fata de ||/|, etc.

Voi continua in posturile urmatoare cu restul diferentelor. Intre timp, puteti arunca un ochi aici, pentru exemple de cod si pentru detalii suplimentare pe marginea a ceea ce am mentionat de mai sus, dar nu uitati sa va intoarceti pentru explicatii :).

Catalina

luni, 1 decembrie 2008

C# vs. VB - The Series

Salutare din nou!

Intamplator m-am intalnit zilele trecute cu amic "fellow .NET monkey". Evident, cand conversatia a ajuns la capitolul "cu ce te ocupi?", prima intrebare a fost "VB sau C#?". Cum aceasta pare intrebarea zilei (de cam multe zile), m-am gandit sa incerc sa formulez si propriul meu raspuns.

Prima parte a acestui raspuns va trata aspectul istoric, sa spunem asa, al diferentelor intre cele doua limbaje - mai exact, contextul in care a aparut fiecare si publicul caruia ii era fiecare destinat.

1. Visual Basic

Scopul limbajului Visual Basic a fost de a crea o piata mai larga pentru uneltele de software development. Inainte de aparitia sa, in martie 1991, limbajele de programare erau percepute ca fiind complexe si accesibile numai programatorilor cu multa pregatire si experienta. VB, in schimb, este simplu din punct de vedere sintactic, apropiat de limbajul natural, si permite practic oricui sa creeze aplicatii de baza, dupa numai cateva ore de exercitiu. In contextul in care la momentul aparitiei VB, programarea era vazuta ca un soi de arta elitista, posibilitatea de a se alatura acestei "elite" a generat o adevarata miscare de masa in randurile "calculatoristilor" cu experienta in "butonare", dar nu in programare.

Faptul ca Visual Basic (cel de la vremea aceea, cel putin), nu dispunea de uneltele de baza ale programarii orientate pe obiecte nu a contat foarte mult pe moment. Aplicatiile pentru care exista cerere erau inca suficient de simple - client-server in cel mai fericit caz, iar aplicatiile web nu depaseau stadiul de experimente si improvizatii. Fapt ce a reprezentat o lama cu doua taisuri.

Varful "modei" VB a coincis cu varful fenomenului numit "Internet boom". Armate de programatori cu lacune grave in pregatire si in gandire erau platiti cu sume fabuloase pentru a incropi orice semana cat de cat cu o aplicatie software. Iar limbajul VB, cu lipsa sa de formalitate si de constrangeri, a constituit mediul perfect.

Schimbarea a intervenit in 2000, cand Microsoft a anuntat lansarea .NET, iar tot ceea ce a insemnat pana atunci VB a fost inlocuit cu un model cu totul nou. Engine-ul din spate a fost rescris de la zero, si toate uneltele third party mai mult sau mai putin functionale, elegante, etc. au fost inlocuite cu un framework nou, organizat, si consistent. Cu aceste schimbari, functionalitatea VB a fost adusa la nivelul unui C# si Java.

Cu toate acestea, mentalitatea VB a ramas pana astazi cam aceeasi, si exista o explicatie pentru care, statistic vorbind, programatorul mediu C# da dovada de ceva mai multa disciplina decat cel VB. Evident, cu exceptiile de rigoare.

2. C#

Prin comparatie, C# a pastrat formalitatea si constrangerile specifice C, apoi Java. Efectul indirect a fost perpetuarea mentalitatii oarecum elitiste ce domina aria programarii pana la aparitia VB. Multi programatori C# inca ii privesc cu un anume aer de superioritate pe cei VB. O posibila explicatie a mentalitatii C# ar fi sintaxa putin mai abstracta, fata de cea VB, foarte apropiata de limbajul natural. O alta, dupa cum am precizat mai sus, numarul mult mai mare de programatori VB.

Adevarul este, in proprie experienta, cel putin, ca din punct de vedere functional, cele doua limbaje ofera aceleasi unelte si se pot realiza aceleasi lucruri la fel de bine. Dovada sta faptul ca orice sursa poate fi tradusa dintr-un limbaj in celalalt. Diferenta este ca unele "bucatele" de functionalitate pot fi implementate mai usor/mai repede/in mai putine linii, in C# fata de VB, sau invers.

Iar exact aceste diferente concrete in sintaxa, evaluare, organizare a memoriei, vor constitui subiectul urmatoarelor articole din aceasta mini-serie.

Pe data viitoare,
Catalina

Articolele noastre