A Microsoft beszélni kezd a következő generációs programozási nyelvéről, a C# rendszerprogramozáshoz

Olvasási idő ikonra 3 perc olvas


Az olvasók segítenek az MSpoweruser támogatásában. Kaphatunk jutalékot, ha a linkjeinken keresztül vásárol. Eszköztipp ikon

Olvassa el közzétételi oldalunkat, hogy megtudja, hogyan segítheti az MSPowerusert a szerkesztői csapat fenntartásában Tovább

Joe Duffy, a Microsoft kutató operációs rendszerének építésze és fejlesztője blogot írt a következő generációs programozási nyelvről, amelyen az elmúlt néhány évben dolgoztak. A Microsoft most ezt a hamarosan megjelenő nyelvet a C# „rendszerprogramozási” kiterjesztéseként írja le. A Microsoft megpróbálja ezt a nyelvet a biztonság- és termelékenységközpontú C#, Java stb., valamint a teljesítményközpontú C++ keresztezéseként használni.

Íme a nyelv 6 fontos jellemzője,

) Életre szóló megértés. A C++ rendelkezik RAII-val, determinisztikus destrukcióval és hatékony objektumok kiosztással. A C# és a Java egyaránt arra készteti a fejlesztőket, hogy túlságosan is támaszkodjanak a GC kupacra, és csak „laza” támogatást nyújt a determinisztikus megsemmisítéshez az IDisposable segítségével. A csapatom része az, hogy rendszeresen konvertálja a C# programokat erre az új nyelvre, és nem ritka, hogy a GC-vel töltött idő 30-50%-ával találkozunk. A szerverek esetében ez leállítja az átviteli sebességet; az ügyfelek számára rontja az élményt azáltal, hogy késleltetést injektál az interakcióba. Elloptunk egy oldalt a C++-ból – olyan területeken, mint az rértékhivatkozások, áthelyezési szemantika, megsemmisítés, hivatkozások/kölcsönzés –, de megőriztük a szükséges biztonsági elemeket, és egyesítettük azokat funkcionális nyelvekből származó ötletekkel. Ez lehetővé teszi számunkra, hogy agresszíven halmozzuk fel az objektumokat, determinisztikusan megsemmisítsük és így tovább.

2) A mellékhatások megértése. Ez az OOPSLA 2012-ben közzétett evolúciója, amely megadja a C++ const elemeit (de ismét biztonsággal), valamint első osztályú megváltoztathatatlanságot és elszigeteltséget.

3) Aszinkron programozás léptékben. A közösség körbe-körbe járta ezt a kérdést, nevezetesen, hogy továbbadásos vagy könnyű blokkoló korutinokat használjon. Ez magában foglalja a C#-t, de jóformán a bolygó összes többi nyelvét is. A kulcsfontosságú újítás itt egy olyan összeállítható típusrendszer, amely agnosztikus a végrehajtási modellel szemben, és hatékonyan képes leképezni bármelyiket. Arrogáns lenne azt állítani, hogy megvan az egyetlen helyes módja ennek a cuccnak a feltárására, de mivel sok más megközelítésben is van tapasztalatom, szeretem, hová jutottunk.

4) Típusbiztos rendszerek programozása. Általában azt állítják, hogy a típusbiztonság a teljesítmény elvesztésével jár. Igaz, hogy a határellenőrzés nem alku tárgya, és alapértelmezés szerint a túlcsordulás-ellenőrzést részesítjük előnyben. Meglepő, hogy egy jó optimalizáló fordító mire képes itt, szemben a JIT-fordítással. (És csak véletlenül át kell tekinteni néhány legutóbbi biztonsági közleményt, hogy megtudja, miért érdemelnek ezek a szolgáltatások.) Más területek közé tartozik, hogy több tevékenységet végezhet elosztás nélkül. Mint a lambda-alapú API-k, amelyek nulla allokációval hívhatók meg (a szokásos kettő helyett: egy a delegáltnak, egy a kijelzőnek). És könnyen ki lehet faragni altömböket és alkarakterláncokat kiosztás nélkül.

5) Modern hibamodell. Ez egy másik, amiben a közösség nem ért egyet. Kiválasztottuk azt, ami szerintem a legjobb: szerződések mindenhol (előfeltételek, utófeltételek, invariánsok, állítások stb.), a hibamentesség alapértelmezett házirendként, kivételek a ritka dinamikus hibákhoz (elemzés, I/O stb.), és csak akkor írja be a kivételeket, ha feltétlenül gazdag kivételekre van szüksége. Mindegyik első osztályú módon integrálva van a típusrendszerbe, így Ön megkapja a megfelelő altípusozási viselkedést, amely a biztonságos és megbízható működéshez szükséges.

6) Modern keretek. Ez egy mindenre kiterjedő gyűjtőkör, amely magában foglalja az olyan dolgokat, mint az aszinkron LINQ, a továbbfejlesztett enumerátor-támogatás, amely a teljesítményben versenyez a C++ iterátorokkal, és nem igényel kettős interfész elküldést az elemek kinyeréséhez stb. Hogy őszinte legyek, ez az a terület, amivel rendelkezünk. a „tervezett, de még nem megvalósított funkciók” legnagyobb listája, amely olyan dolgokat tartalmaz, mint az első osztályú void-as-a-class, nem nulla típusok, tulajdonságok, 1. osztályú effektus-gépelés stb. Arra számítok, hogy 1 közepén lesz néhány ilyen ellenőrzőpontunk, de nem mindegyik.

Olvass tovább a linkről itt.

Bővebben a témákról: c#, fejlesztők, microsoft