Microsoft începe să vorbească despre limbajul lor de programare de generație următoare, C# pentru programarea sistemelor

Pictograma timp de citire 3 min. citit


Cititorii ajută la sprijinirea MSpoweruser. Este posibil să primim un comision dacă cumpărați prin link-urile noastre. Pictograma Tooltip

Citiți pagina noastră de dezvăluire pentru a afla cum puteți ajuta MSPoweruser să susțină echipa editorială Află mai multe

Joe Duffy, un arhitect și dezvoltator pentru un sistem de operare de cercetare la Microsoft, a scris pe blog despre limbajul de programare de generație următoare la care au lucrat în ultimii doi ani. Microsoft descrie acum acest limbaj viitor ca extensii de „programare a sistemelor” la C#. Microsoft încearcă să prezinte acest limbaj ca o încrucișare între C# centrat pe siguranță și productivitate, Java etc. și C++ centrat pe performanță.

Iată cele 6 caracteristici importante ale limbii,

) Înțelegerea de-a lungul vieții. C++ are RAII, distrugere deterministă și alocare eficientă a obiectelor. C# și Java îi convinge pe dezvoltatori să se bazeze prea mult pe heap-ul GC și oferă doar suport „vag” pentru distrugerea deterministă prin IDisposable. O parte din ceea ce face echipa mea este să convertească în mod regulat programele C# în acest nou limbaj și nu este neobișnuit să întâlnim 30-50% din timpul petrecut în GC. Pentru servere, acest lucru distruge debitul; pentru clienți, degradează experiența, prin injectarea de latență în interacțiune. Am furat o pagină din C++ - în domenii precum referințele rvalue, semantica mișcării, distrugerea, referințele / împrumuturile - și totuși am păstrat elementele necesare de siguranță și le-am îmbinat cu idei din limbaje funcționale. Acest lucru ne permite să stivuim în mod agresiv obiectele de alocare, să distrugem determinist și multe altele.

2) Înțelegerea efectelor secundare. Aceasta este evoluția a ceea ce am publicat în OOPSLA 2012, oferindu-vă elemente de C++ const (dar din nou cu siguranță), împreună cu imuabilitate și izolare de primă clasă.

3) Programare asincronă la scară. Comunitatea a fost rotund și rotund în această privință, și anume dacă să folosești corutine de continuare-pasare sau de blocare ușoare. Aceasta include C#, dar și aproape orice altă limbă de pe planetă. Inovația cheie aici este un sistem de tip composabil care este agnostic față de modelul de execuție și poate mapa eficient la oricare dintre ele. Ar fi arogant să pretind că avem singura modalitate corectă de a expune aceste lucruri, dar având experiență cu multe alte abordări, îmi place unde am ajuns.

4) Programarea sistemelor de tip sigur. Se pretinde în mod obișnuit că odată cu siguranța tipului vine o pierdere inerentă a performanței. Este adevărat că verificarea limitelor nu este negociabilă și că noi preferăm verificarea depășirii în mod implicit. Este surprinzător ce poate face un compilator de optimizare bun aici, comparativ cu compilarea JIT. (Și trebuie doar să auditați întâmplător unele buletine de securitate recente pentru a vedea de ce aceste caracteristici au merite.) Alte domenii includ faptul că vă permite să faceți mai multe fără alocarea. Ca și cum ar avea API-uri bazate pe lambda care pot fi apelate cu alocări zero (mai degrabă decât cele două obișnuite: unul pentru delegat, unul pentru afișaj). Și posibilitatea de a tăia cu ușurință sub-matrice și sub-șiruri fără a fi alocate.

5) Model de eroare modern. Acesta este încă unul despre care comunitatea nu este de acord. Am ales ceea ce eu cred a fi punctul favorabil: contracte peste tot (precondiții, postcondiții, invarianți, aserțiuni etc), fail-fast ca politică implicită, excepții pentru rarele eșecuri dinamice (analizarea, I/O, etc). și ați introdus excepții numai atunci când aveți absolut nevoie de excepții bogate. Toate sunt integrate în sistemul de tipări într-un mod de clasă 1, astfel încât să obțineți tot comportamentul de subtipare adecvat necesar pentru a-l face în siguranță.

6) Cadre moderne. Acesta este o găleată universală care acoperă lucruri precum LINQ asincron, suport îmbunătățit pentru enumerator care concurează cu iteratoarele C++ în performanță și nu necesită trimiterea cu interfață dublă pentru a extrage elemente etc. Pentru a fi pe deplin sincer, acesta este domeniul pe care îl avem cea mai mare listă de „funcții proiectate, dar neimplementate încă”, cuprinzând lucruri precum void-as-a-1st-class-type, tipuri non-null, trăsături, scriere cu efect de prima clasă și multe altele. Mă aștept să avem câteva dintre acestea la punctul nostru de control de la jumătatea anului 1, dar nu toate.

Citiți mai multe din link aici.

Mai multe despre subiecte: c#, Dezvoltatorii, microsoft