Microsoft počinje govoriti o svom programskom jeziku sljedeće generacije, C# za programiranje sustava

Ikona vremena čitanja 3 min. čitati


Čitatelji pomažu pri podršci MSpoweruser. Možda ćemo dobiti proviziju ako kupujete putem naših veza. Ikona opisa alata

Pročitajte našu stranicu za otkrivanje kako biste saznali kako možete pomoći MSPoweruseru da održi urednički tim Čitaj više

Joe Duffy, arhitekt i programer istraživačkog operativnog sustava u Microsoftu, objavio je blog o programskom jeziku sljedeće generacije na kojem su radili u posljednjih nekoliko godina. Microsoft sada ovaj nadolazeći jezik opisuje kao proširenja za "programiranje sustava" za C#. Microsoft pokušava predstaviti ovaj jezik kao križanac između C#, Jave, itd. usmjerenog na sigurnost i produktivnost, i C++ usmjerenog na performanse.

Evo 6 važnih značajki jezika,

) Doživotno razumijevanje. C++ ima RAII, determinističko uništavanje i učinkovitu alokaciju objekata. C# i Java nagovaraju programere da se previše oslanjaju na GC hrpu i nude samo "labavu" podršku za determinističko uništavanje putem IDisposablea. Dio onoga što moj tim radi je redovito pretvaranje C# programa u ovaj novi jezik, a nije neuobičajeno da naiđemo na 30-50% vremena provedenog u GC-u. Za poslužitelje to ubija propusnost; za klijente, degradira iskustvo ubrizgavanjem latencije u interakciju. Ukrali smo stranicu iz C++-a — u područjima kao što su reference rvalue, semantika kretanja, uništavanje, reference/posuđivanje — a ipak smo zadržali potrebne elemente sigurnosti i spojili ih s idejama iz funkcionalnih jezika. To nam omogućuje agresivno slaganje dodijeljenih objekata, deterministički uništavanje i još mnogo toga.

2) Razumijevanje nuspojava. Ovo je evolucija onoga što smo objavili u OOPSLA 2012, dajući vam elemente C++ const (ali opet sa sigurnošću), zajedno s prvoklasnom nepromjenjivosti i izolacijom.

3) Asinkrono programiranje u razmjeru. Zajednica je bila 'kružna' oko ovoga, naime treba li koristiti nastavno-prolazne ili lagane korutine za blokiranje. To uključuje C#, ali i gotovo sve druge jezike na planeti. Ključna inovacija ovdje je sastavljajući tip-sustav koji je agnostičan prema izvedbenom modelu i može se učinkovito mapirati na bilo koji od njih. Bilo bi arogantno tvrditi da imamo jedan pravi način da razotkrijemo ove stvari, ali s iskustvom s mnogim drugim pristupima, sviđa mi se gdje smo stigli.

4) Programiranje sustava sigurnog tipa. Obično se tvrdi da sigurnost tipa dolazi do inherentnog gubitka performansi. Istina je da se o provjeravanju granica ne može pregovarati i da preferiramo provjeru prekoračenja prema zadanim postavkama. Iznenađujuće je što ovdje može napraviti dobar kompajler za optimizaciju u odnosu na JIT kompajliranje. (A potrebno je samo ležerno pregledati neke nedavne sigurnosne biltene kako biste vidjeli zašto ove značajke imaju zasluge.) Ostala područja uključuju dopuštanje da učinite više bez dodjele. Kao da imate API-je temeljene na lambda-i koji se mogu pozvati s nultom dodjelom (umjesto uobičajenih dvaju: jedan za delegata, jedan za zaslon). I mogućnost jednostavnog izrezivanja podnizova i podnizova bez dodjele.

5) Moderni model pogreške. Ovo je još jedna stvar oko koje se zajednica ne slaže. Odabrali smo ono što vjerujem da je slatka točka: ugovori posvuda (preduvjeti, postuvjeti, invarijante, tvrdnje, itd.), brzi otkazi kao zadana politika, iznimke za rijetke dinamičke neuspjehe (parsing, I/O, itd.), i upisane iznimke samo kada su vam apsolutno potrebne bogate iznimke. Sve je integrirano u sustav tipova na prvorazredni način, tako da dobijete svo ispravno ponašanje podtipova potrebno da bude siguran i čvrst.

6) Moderni okviri. Ovo je sveobuhvatna kutija koja pokriva stvari kao što je async LINQ, poboljšana podrška za popisivače koja se natječe s C++ iteratorima u izvedbi i ne zahtijeva slanje dvostrukog sučelja za izdvajanje elemenata, itd. Da budemo potpuno iskreni, ovo je područje koje imamo najveći popis "dizajniranih, ali još ne implementiranih značajki", koji obuhvaća stvari kao što su void-as-a-1st-class-type, non-null tipovi, osobine, tipkanje efekta 1. klase i još mnogo toga. Očekujem da ćemo ih imati nekoliko na kontrolnoj točki sredinom 2014., ali ne sve.

Više pročitajte na poveznici ovdje.

Više o temama: c#, programeri, Microsoft