Limbajul C# este unul dintre cele mai utilizate limbaje de programare multiparadigmă din lume, fiind clasat în acest moment pe locul 5 mondial, ca nivel de popularitate. Este un limbaj simplu, modern, cu o flexibilitate foarte mare în ceea ce privește dezvoltarea de aplicații și portabilitatea acestora (deși există unele voci care spun că portabilitatea este limitată, vom demonstra în continuare lipsa de veridicitate a acestei afirmații).

1 – Date istorice

Istoria acestui limbaj își are originile la începutul mileniului în care ne aflăm. În iulie 2000 a fost lansată prima distribuție a limbajului C#, deși zvonurile apariției unui limbaj puternic au apărut încă de prin anul precedent. Microsoft a fost corporația care a decis să intre mult mai în forță în lumea dezvoltatorilor, întrucât limbajul Basic își pierduse popularitatea ceea ce a dus la o ușoară scădere a nivelului economic al companiei.

 

Unul dintre principalele motive care au inițiat crearea acestui limbaj de programare a fost legat de faptul că în anul 1995, cei de la Sun Microsystems au creat limbajul Java, primul limbaj multiparadigmă cu o portabilitate foarte mare. A înregistrat un nivel de popularitate exponențial în primii ani de la lansare, și chiar în zilele noastre, este pe primul loc mondial în ceea ce privește popularitatea. Astfel, Microsoft a decis să creeze un limbaj care să ofere mult mai multe elemente dezvoltatorilor.

2 – Caracteristicile limbajului

Printre principalele calități ale limbajului, putem distinge:

  • modernitate, simplitate, utilitate generală, productivitate mare
  • stabilitate în cadrul aplicațiilor complexe, durabilitate
  • este un limbaj total orientat pe obiect (orice entitate din acest limbaj este de fapt un obiect)
  • oferă suport complet pentru dezvoltarea de componente necesare în medii distribuite, deci este și un limbaj
  • orientat către componente

Limbajul C# are aplicabilitate foarte mare în cadrul sistemelor embeded, care includ dispozitive precum mp3 playere, semafoare, automate (vending machines), controlere, telefoane mobile, ceasuri digitale, s.a.m.d.

Deci acum știți că atunci când sunteți opriți la semafor,  un algoritm transpus în C# coordonează controller-ul care dirijază fluxul de trafic.

3 – Platforma .NET

Portabilitatea limbajului se leagă în mod direct de platforma pe care rulează. Așa cum Java rulează în mediul său special, numit JVM (Java Virtual Machine), C# rulează în .NET Framework. Vom discuta acum despre această platformă, întrucât înțelegerea mecanismului care lucrează în spatele acesteia contribuie substanțial la înțelegerea funcționalității limbajului precum și la portabilitatea acestuia.

1188172050_microsoftnetframeworkprerelease_1

 

Să analizăm această diagramă (în partea stângă se află componentele platformei .NET, prezentate generic): pe primul nivel se află limbajele specifice .NET, printre care și C#. Al doilea nivel corespunde CLS-ului, adică un set de trăsături ale platformei, care asigură interoperabilitatea limbajelor .NET. Aceste trăsături pot se regăsesc și la nivel de aplicație, în sensul că developer-ul poate seta anumite feature-uri care să ajusteze execuția programului. Cu alte cuvinte, se poate controla modul de execuție al aplicației prin specificarea acestor elemente care indică particularitatea de execuție a aplicației pe care o creezi.

 

Dintre cele trei elemente de pe fundal verde, noi ne ocupăm doar de Windows Forms, adică de crearea de aplicații cu interfață grafică.

 

Common Language Runtime este probabil cea mai importantă componentă a platformei, responsabilă de executarea fiecărei aplicații. Practic CLR-ul este mediul de execuție al platformei. Acesta conține toate tool-urile care permit executarea raportată la sistemul de operare a aplicației dezvoltate, printre care: garbage collector-ul, adică mecanismul de gestionare automată a memoriei – spre deosebire de C sau C++, acolo unde programatorul trebuia să decidă în ce punct al aplicației să aloce o zonă de memorie, și în ce punct să elibereze acea zonă, C# are acest feature foarte important, care eliberează automat memoria ocupată de obiecte atunci când știe că acestea nu vor mai fi folosite în cadrul aplicației; mecanismul de tratare automată a excepțiilor, adică a erorilor runtime, cele care apar în timpul execuției programului. Desigur că programatorul trebuie să își creeze propriul sistem de tratare a erorilor de execuție, numai că există situații în care nu se acoperă toate cazurile în care execuția poate fi întreruptă, de aceea acest mecanism de tratare automată a excepțiilor face medierea între sistemul de operare și platforma .NET.

De asemenea o parte foarte importantă a platformei, alături de CLR, este și bibloteca de clase .NET sau base class library, pe scurt BCL. Practic, aici este tot codul creat de Microsoft pentru a construi limbajele .NET. Toate funcțiile, clasele, metodele, sunt aici în stare precompilată, ceea ce ușurează substanțial execuția programelor, timpul alocat pentru compilarea lor fiind practic inexistent.

4 – Compilarea in .NET

 

Să analizăm următoarea diagramă sugestivă:

01

Practic, codul scris în limbaj .NET este compilat cu ajutorul compilatorului special al limbajului. Acest compilator nu generează cod executabil, ci un cod specific platformei, denumit CIL, adică Common Intermediate Language. Pe diagramă scrie MSIL, de la Microsoft Intermediate Language. Acest cod specific platformei este de fapt nucleul portabilității limbajului. Oriunde este instalată platforma, ea poate rula cod în C#, întrucât acest CIL este direct dependent de platformă, și nu de sistemul de operare.

După compilare, intrăm în faza de execuție, deci CLR-ul intră în scenă. Codul intermediar, CIL-ul, intră într-o a doua compilare, dar de data aceasta compilatorul este unul special, denumit JIT (Just-In-Time), care generează codul în binar, accesibil mașinii de pe care se rulează.

 

Acestea sunt principalele elemente pe care orice programator în C# ar trebui să le cunoască, pentru a putea ajunge la un nivel rezonabil în cunoașterea limbajului. Evident, pentru cei pasionați, există sute de site-uri specializate pe acest limbaj, pagina de wikipedia, și multe alte surse, din care puteți învăța multe lucruri interesante despre elementele ce gravitează în jurul acestui limbaj.

 

Sper că m-am făcut înțeles.

 

Respectfully, Ioniță Cosmin.

Leave a comment

Your email address will not be published. Required fields are marked *