The academic environment is full of inovation and keeping the pace


Capitolul 2. Motivația pentru alegerea platformelor și a limbajului



Yüklə 263,83 Kb.
səhifə4/11
tarix20.02.2018
ölçüsü263,83 Kb.
#42917
1   2   3   4   5   6   7   8   9   10   11

Capitolul 2. Motivația pentru alegerea platformelor și a limbajului


Sunt în general o persoană foarte deschisă spre nou și spre asimilarea de noi cunoștințe. În pregătirea temei alese am trecut printr-o serie de limbaje și platforme care m-au impresionat și mi-au stimulat interesul. Înițial am dorit să realizez aplicația în Java pentru că este o platformă stabilă și matură. Nu aș vrea să pretind că este deficitară mașina virtuală sau limbajul Java, însă gândirea mea este structurată puțin altfel și dobândirea unui ritm de programare acceptabil pentru mine nu a fost ușor de obținut. Deși am învățat multe, abordarea anumitor tematici mi s-a părut prea constrânsă de anumite șabloane și tehnologii, fapt pentru care am renunțat.

Al doilea limbaj a fost Groovy și tehnologia aleasă Grails. Limbajul este o combinare de Java și Python aș putea zice. Oferă o mulțime de facilități foarte similare limbajului ales de mine, iar platforma e impresionantă datorită eleganței. Uneletele puse la dispoziție erau în schimb mult inferioare facilităților oferite. Oricum am mari speranțe pentru Groovy și sper să dezvolt ceva mai mult decât aplicații simple în viitorul apropiat cu această tehnologie.

Din dorința de a fi cât mai eficient și a crea o infrastructură robustă pe care să dezvolt aplicații ușor în viitor am ales platforma .NET și limbajul C#, fiindu-mi foarte familiare datorită experienței acumulate de-a lungul anilor atât ca hobby cât și în mediul profesional.

Voi prezenta câteva aspecte de însemnătate ale platformei, limbajului și tehnologiei cu care am lucrat.


2.1 Aspecte generale ale platformei .NET


Platforma .NET este o componentă integrală a suitei Windows care permite construcția și execuția următoarei generații de aplicații și servicii web-xml. Platforma a fost proiectată pentru atingerea următoarelor obiective :

  • Să ofere un model de programare orientat-obiect consistent indiferent dacă codul obiect este stocat și executat local, distribuit prin internet și executat local, sau executat remote;

  • Să ofere un mediu de execuție care minimizează deployment-ul și conflictul între versiuni;

  • Sa ofere un mediu de execuție sigur pentru codul generat de terți necunoscuți sau semi-cunoscuți;

  • Să ofere o experiență consistentă pe o gamă largă de modele de aplicații, fie ele windows sau web;

  • Să ofere modele de comunicare conforme cu standardele industriei și care să asigure integrarea platformei .NET cu alte surse.

Framework-ul este alcătuit din două componente principale: CLR 11 și librăriile de clase care alcătuiesc platforma. CLR-ul este fundația platformei .NET. Runtime-ul este agentul care gestionează execuția codului, oferind servicii de administrare a memoriei, a firelor de execuție și remoting. În același timp aplică politica de securitate pentru tipurile de date reprezentate și alte forme de acuratețe a codului care promovează siguranța și robustețea execuției. Codul care este compilat pentru platforma .NET poartă denumirea de cod managed12, evident codul care nu e compilat pentru platforma .NET e numit unmanaged13. A doua partea a platformei este conpusă din librăriile de clase, o colecție de obiecte reutilizabile care permit dezvoltarea rapidă de aplicații, începând cu tradiționala linie de comandă sau interfața cu utilizatorul și continuând cu ultimele inovații oferite de platforma ASP.NET.

Platforma poate fi găzduită de către componente unmanaged care sunt capabile să încarce CLR-ul în cadrul procesului propiu și să inițializeze execuția codului managed. Platforma vine echipată cu astfel de runtime-uri, și permite crearea de către terți a unora noi. Spre exemplu, ASP.NET este o gazdă care oferă o soluție scalabilă pe partea de server pentru codul managed. [wNetFramework, Esposito2009, Liberty2005]


2.2 Aspecte ale limbajului C#


Deși relativ limitat în prima versiune lansată de către Microsoft în 2002, limbajul a evoluat considerabil pe parcursul acestor ani. Deși am asistat activ la aceste schimbări, dezvoltând aplicații încă din 2003 cu acest limbaj, trebuie să recunosc că au fost momente în care noile facilități de limbaj mi s-au părut puțin intimidante.

Modelul pe care s-a prezentat în prima versiune era extrem de similar facilităților oferite de Java și C++, de unde și numeroase discuții legate de strategia de marketing și o serie de reproșuri cum că ar fi copiat Java. Limbajul a fost și este un real succes, reușind să depășească relativ ușor limitările primei versiuni, prin limitări mă refer la lipsa metodelor generice, fiind acceptat și promovat rapid de către comunitatea programatorilor.

Versiunea 2.0 a limbajului și implicit a compilatorului a rezvoltat neajunsul impus de neexistența unor mecanisme de generalizare a claselor și metodelor și a adus o serie de îmbunătățiri atât mediului de dezvoltare, cât mai ales librariei de clase și serviciilor oferite de compilator. Adiția majoră nu a fost capacitatea de a scrie un cod mai puternic tipizat prin impunerea de șabloane în cod, ci, în ceea ce mă privește, a reprezentat-o noțiunea de clase parțiale care eu încă nu am regăsit-o în nici un alt limbaj. O clasă parțială marcată prin cuvântul cheie partial poate fi scrisă în mai multe fișiere sursă, existând posibilitatea de a separa atât logic, cât și fizic anumite părți ale codului.

Versiunea 3.0 nu a schimbat compilatorul, ci a adus o gamă întreagă de adiții librăriei de clase pentru a ușura comunicarea (WCF14), îmbunătățiri ale stratului de prezentare (WPF15), multe optimizări ale claselor existente și completări. O facilitate grozavă a limbajului a fost introducerea expresiilor lambda, oferind un model de programare similar celui regăsit în limbajele funcționale. Deși implementarea lui nu a necesitat schimbarea compilatorului, modurile de întrebuințare descoperite au simplificat stilul în care se poate scrie codul. A doua mare facilitate introdusă este capacitatea de a extinde clase deja existente cu metode noi fără a afecta codul deja scris și fără a necesita recompilarea unor librării existente. Codul trebuie întotdeauna să exprime clar intenția, cea de-a doua facilitate permite scrierea foarte ușoară a unor mini-DSL16-uri care îmbunătățesc expresivitatea codului scris. Un exemplu în acest sens ar putea fi: 2.days()+3.hours()-20.minutes(), varianta alternatvă fiind new DateTime().AddDays(2).AddHours(3).Subtract(new DateTime().AddMinutes(2)).

Versiunea 3.5 introduce în schimb un nou construct de limbaj prin introducere conceptului de LINQ17 care permite scrirea de interogări direct în limbaj, aceste interogări ulterior fiind transformate de către obiecte speciale, denumite Provider, în SQL, parsări XML, prelucrări de colecții de obiecte ș.a.m.d.

Versiunea 4.0 promite a veni cu și mai multe inovații legate de varianță și contravarianță pe tipuri, tipuri de date dinamice cunoscute ca duck-tipes – pe principiu că dacă face quac ca și o rață și merge ca și o rață atunci trebuie să fie o rață. Nu e intenția mea de a da mai multe informații referitoare la aspectele pe care versiunea 4.0 le va aduce, întrucât unele sunt încă în fază de proiect.

Am revizuit pe scurt schimbările suferite de limbaj în doar 7 ani și pot spune că am fost impresionat de fiecare dată, ba chiar m-am simțit ca un neofit uneori fiindu-mi greu să înțeleg anumite aspecte în lipsa unor explicații de nivel mai jos, pe care le-am asimilat însă prin decompilarea codului generat și prin testarea pe viu chiar și în medii de producție a eficienței unora din ele. [Liberty2008, Snell2009, Stellman2005, Stoecker2009]


Yüklə 263,83 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10   11




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin