Microsoft začíná mluvit o svém programovacím jazyce nové generace, C# pro systémové programování

Ikona času čtení 3 min. číst


Čtenáři pomáhají podporovat MSpoweruser. Pokud nakoupíte prostřednictvím našich odkazů, můžeme získat provizi. Ikona popisku

Přečtěte si naši informační stránku a zjistěte, jak můžete pomoci MSPoweruser udržet redakční tým Dozvědět se více

Joe Duffy, architekt a vývojář výzkumného operačního systému ve společnosti Microsoft, napsal blog o programovacím jazyku nové generace, na kterém v posledních několika letech pracovali. Microsoft nyní popisuje tento nadcházející jazyk jako rozšíření C# o „systémové programování“. Microsoft se snaží představit tento jazyk jako kříženec mezi C# zaměřeným na bezpečnost a produktivitu, Java atd., a C++ zaměřeným na výkon.

Zde je 6 důležitých vlastností jazyka,

) Celoživotní porozumění. C++ má RAII, deterministické ničení a efektivní alokaci objektů. C# a Java oba přemlouvají vývojáře, aby se příliš spoléhali na haldu GC, a nabízejí pouze „volnou“ podporu pro deterministickou destrukci prostřednictvím IDisposable. Součástí toho, co můj tým dělá, je pravidelně převádět programy C# do tohoto nového jazyka a není neobvyklé, že se setkáváme s 30–50 % času stráveného v GC. U serverů to zabije propustnost; pro klienty to zhoršuje zážitek tím, že do interakce vnáší latenci. Ukradli jsme stránku z C++ – v oblastech jako rvalue reference, move sémantika, destrukce, reference / výpůjčky – a přesto jsme zachovali nezbytné prvky bezpečnosti a spojili je s nápady z funkčních jazyků. To nám umožňuje agresivně skládat alokované objekty, deterministicky ničit a další.

2) Pochopení vedlejších účinků. Toto je evoluce toho, co jsme publikovali v OOPSLA 2012, a poskytuje vám prvky C++ const (ale opět s bezpečností), spolu s prvotřídní neměnností a izolací.

3) Asynchronní programování v měřítku. Komunita byla v této otázce „kolem a kolem“, jmenovitě, zda použít continuation-passing nebo lehké blokovací korutiny. To zahrnuje C#, ale také téměř každý jiný jazyk na planetě. Klíčovou inovací je zde skládací typový systém, který je agnostický k modelu provedení a může se efektivně mapovat na kterýkoli z nich. Bylo by arogantní tvrdit, že máme ten správný způsob, jak tyto věci odhalit, ale mám zkušenosti s mnoha jinými přístupy a miluji, kam jsme přistáli.

4) Programování typově bezpečných systémů. Běžně se tvrdí, že s typovou bezpečností přichází inherentní ztráta výkonu. Je pravda, že o kontrole hranic nelze vyjednávat a že ve výchozím nastavení preferujeme kontrolu přetečení. Je překvapivé, co zde dokáže dobrý optimalizační kompilátor oproti JIT kompilaci. (A stačí jen náhodně auditovat některé nedávné bezpečnostní bulletiny, aby se zjistilo, proč jsou tyto funkce přínosné.) Mezi další oblasti patří možnost udělat více bez přidělování. Jako mít lambda-založená API, která lze volat s nulovými alokacemi (namísto obvyklých dvou: jedno pro delegáta, jedno pro displej). A schopnost snadno vyřezávat dílčí pole a podřetězce bez alokace.

5) Moderní chybový model. To je další věc, na které komunita nesouhlasí. Vybrali jsme to, co považuji za nejlepší: smlouvy všude (předběžné podmínky, dodatečné podmínky, invarianty, tvrzení atd.), rychlé selhání jako výchozí politika, výjimky pro vzácná dynamická selhání (analýza, I/O atd.), a zadali výjimky pouze v případě, že nezbytně potřebujete bohaté výjimky. Vše integrováno do systému typů způsobem 1. třídy, takže získáte veškeré správné chování při psaní podtypů nezbytné k tomu, aby bylo bezpečné a zdravé.

6) Moderní rámce. Toto je univerzální bucket, který pokrývá věci jako asynchronní LINQ, vylepšená podpora enumerátorů, která konkuruje iterátorům C++ ve výkonu a nevyžaduje odesílání pomocí dvojitého rozhraní pro extrahování prvků atd. Abych byl zcela upřímný, toto je oblast, kterou máme největší seznam „navržených, ale dosud neimplementovaných funkcí“, zahrnující věci jako void-as-a-1st-class-type, non-null typy, rysy, typování efektů 1. třídy a další. Očekávám, že jich na kontrolním stanovišti v polovině roku 2014 budeme mít několik, ale ne všechny.

Přečtěte si více z odkazu zde.

Více o tématech: c#, Vývojáři, microsoft