Microsoft začína hovoriť o svojom programovacom jazyku novej generácie, C# pre systémové programovanie

Ikona času čítania 3 min. čítať


Čítačky pomáhajú podporovať MSpoweruser. Ak nakupujete prostredníctvom našich odkazov, môžeme získať províziu. Ikona popisu

Prečítajte si našu informačnú stránku a zistite, ako môžete pomôcť MSPoweruser udržať redakčný tím Čítaj viac

Joe Duffy, architekt a vývojár pre výskumný operačný systém v spoločnosti Microsoft, napísal blog o novej generácii programovacieho jazyka, na ktorom pracovali v posledných rokoch. Microsoft teraz opisuje tento nadchádzajúci jazyk ako rozšírenie C# o „systémové programovanie“. Microsoft sa snaží predstaviť tento jazyk ako kríženec medzi C# zameranými na bezpečnosť a produktivitu, Java atď., a C++ zameraný na výkon.

Tu je 6 dôležitých funkcií jazyka,

) Porozumenie na celý život. C++ má RAII, deterministické ničenie a efektívne prideľovanie objektov. C# a Java presviedčajú vývojárov, aby sa príliš spoliehali na haldu GC, a ponúkajú iba „voľnú“ podporu pre deterministické zničenie prostredníctvom IDisposable. Súčasťou toho, čo robí môj tím, je pravidelná konverzia programov C# do tohto nového jazyka a nie je nezvyčajné, že sa stretávame s 30-50% času stráveného v GC. Pre servery to zabíja priepustnosť; pre klientov to zhoršuje zážitok tým, že do interakcie vnáša latenciu. Ukradli sme stránku z C++ – v oblastiach ako referencie rvalue, sémantika presunu, deštrukcia, referencie / výpožičky – a napriek tomu sme zachovali potrebné prvky bezpečnosti a spojili sme ich s nápadmi z funkčných jazykov. To nám umožňuje agresívne ukladať alokované objekty, deterministicky ničiť a ďalšie.

2) Pochopenie vedľajších účinkov. Toto je evolúcia toho, čo sme zverejnili v OOPSLA 2012, poskytujúc vám prvky C++ const (ale opäť s bezpečnosťou), spolu s prvotriednou nemennosťou a izoláciou.

3) Asynchrónne programovanie v mierke. Komunita bola v tejto otázke „dokola a dokola“, konkrétne či použiť korutíny s pokračovaním alebo odľahčené blokovanie. To zahŕňa C#, ale aj takmer každý iný jazyk na planéte. Kľúčovou inováciou je tu skladateľný typový systém, ktorý je agnostický k modelu vykonávania a môže sa efektívne mapovať na ktorýkoľvek z nich. Bolo by arogantné tvrdiť, že máme ten správny spôsob, ako tieto veci odhaliť, ale keďže mám skúsenosti s mnohými inými prístupmi, milujem, kam sme pristáli.

4) Programovanie typovo bezpečných systémov. Bežne sa tvrdí, že s typovou bezpečnosťou prichádza inherentná strata výkonu. Je pravda, že o kontrole hraníc sa nedá vyjednávať a že štandardne preferujeme kontrolu pretečenia. Je prekvapujúce, čo tu dokáže dobrý optimalizačný kompilátor oproti kompilácii JIT. (A stačí len náhodne skontrolovať niektoré nedávne bezpečnostné bulletiny, aby ste zistili, prečo majú tieto funkcie svoje opodstatnenie.) Medzi ďalšie oblasti patrí možnosť robiť viac bez prideľovania. Ako keby ste mali API založené na lambda, ktoré je možné volať s nulovým pridelením (namiesto obvyklých dvoch: jedno pre delegáta, jedno pre displej). A schopnosť jednoducho vyrezať podpolia a podreťazce bez prideľovania.

5) Moderný chybový model. Toto je ďalšia vec, na ktorej sa komunita nezhoduje. Vybrali sme to, čo považujem za najlepšie miesto: zmluvy všade (predbežné podmienky, dodatočné podmienky, invarianty, tvrdenia atď.), rýchle zlyhanie ako predvolená politika, výnimky pre zriedkavé dynamické zlyhanie (analýza, I/O atď.), a zadávané výnimky iba vtedy, keď nevyhnutne potrebujete bohaté výnimky. Všetky sú integrované do systému písania spôsobom 1. triedy, takže získate všetky náležité správanie pri podpísaní potrebné na to, aby to bolo bezpečné a zdravé.

6) Moderné rámce. Toto je univerzálny balík, ktorý pokrýva veci ako asynchrónny LINQ, vylepšenú podporu enumerátorov, ktorá konkuruje iterátorom C++ vo výkone a nevyžaduje odoslanie pomocou dvojitého rozhrania na extrakciu prvkov atď. Úprimne povedané, toto je oblasť, ktorú máme najväčší zoznam „navrhnutých, ale ešte neimplementovaných funkcií“, zahŕňajúci veci ako typ void-as-a-1st-class, non-null typy, vlastnosti, písanie efektov 1. triedy a ďalšie. Očakávam, že na našom kontrolnom stanovišti v polovici roku 2014 ich budeme mať niekoľko, ale nie všetky.

Prečítajte si viac z odkazu tu.

Viac o témach: c#, vývojári, microsoft