Microsoft začenja govoriti o svojem programskem jeziku naslednje generacije, C# za sistemsko programiranje

Ikona časa branja 3 min. prebrati


Bralci pomagajo pri podpori MSpoweruser. Če kupujete prek naših povezav, lahko prejmemo provizijo. Ikona opisa orodja

Preberite našo stran za razkritje, če želite izvedeti, kako lahko pomagate MSPoweruser vzdrževati uredniško skupino Preberi več

Joe Duffy, arhitekt in razvijalec raziskovalnega operacijskega sistema pri Microsoftu, je pisal blog o programskem jeziku naslednje generacije, na katerem so delali v zadnjih nekaj letih. Microsoft zdaj ta prihajajoči jezik opisuje kot razširitve za "sistemsko programiranje" za C#. Microsoft poskuša predstaviti ta jezik kot križanca med C#, Javo itd., osredotočenim na varnost in produktivnost, in C++, osredotočenim na zmogljivost.

Tukaj je 6 pomembnih značilnosti jezika,

) Vseživljenjsko razumevanje. C++ ima RAII, deterministično uničenje in učinkovito dodeljevanje objektov. C# in Java nagovarjata razvijalce, da se preveč zanašajo na kopico GC, in ponujata samo "ohlapno" podporo za deterministično uničenje prek IDisposable. Del moje ekipe je, da redno pretvarja programe C# v ta novi jezik in ni neobičajno, da naletimo na 30-50 % časa, preživetega v GC. Za strežnike to ubije prepustnost; za stranke poslabša izkušnjo z vnosom zakasnitve v interakcijo. Ukradli smo stran iz C++ – na področjih, kot so reference rvalue, semantika premikanja, uničenje, reference/izposoja – in kljub temu obdržali potrebne elemente varnosti ter jih združili z idejami iz funkcionalnih jezikov. To nam omogoča agresivno zlaganje dodeljevanja objektov, deterministično uničevanje in drugo.

2) Razumevanje stranskih učinkov. To je razvoj tega, kar smo objavili v OOPSLA 2012, ki vam daje elemente C++ const (vendar spet z varnostjo), skupaj s prvorazredno nespremenljivostjo in izolacijo.

3) Asinhrono programiranje v merilu. Skupnost se je o tem dogovarjala, in sicer, ali uporabiti korutine s podajanjem nadaljevanja ali lahkimi blokirnimi rutinami. To vključuje C#, pa tudi skoraj vse druge jezike na planetu. Ključna novost tukaj je sestavljiv tipski sistem, ki je agnostičen glede na izvedbeni model in se lahko učinkovito preslika v katerega koli od njih. Arogantno bi bilo trditi, da imamo edini pravi način za razkritje teh stvari, a ker imam izkušnje s številnimi drugimi pristopi, mi je všeč, kje smo pristali.

4) Tipsko varno sistemsko programiranje. Običajno se trdi, da je z varnostjo tipa povezana izguba zmogljivosti. Res je, da se o preverjanju meja ni mogoče pogajati in da imamo privzeto raje preverjanje prekoračitve. Presenetljivo je, kaj lahko dober optimizacijski prevajalnik naredi tukaj v primerjavi s prevajanjem JIT. (In samo mimogrede je treba pregledati nekaj nedavnih varnostnih biltenov, da ugotovimo, zakaj so te funkcije vredne.) Druga področja vključujejo omogočanje, da naredite več brez dodeljevanja. Kot bi imeli API-je na osnovi lambda, ki jih je mogoče poklicati z ničelnimi dodelitvami (namesto običajnih dveh: enega za delegata, enega za zaslon). In zmožnost preprostega izrezovanja podnizov in podnizov brez dodeljevanja.

5) Sodobni model napak. To je še ena stvar, o kateri se skupnost ne strinja. Izbrali smo tisto, kar menim, da je najboljša točka: pogodbe povsod (predpogoji, popogoji, invariante, trditve itd.), Fail-fast kot privzeta politika, izjeme za redke dinamične napake (razčlenjevanje, I/O itd.), in tipizirane izjeme le, ko nujno potrebujete bogate izjeme. Vse je integrirano v tipski sistem na način 1. razreda, tako da dobite vse pravilno vedenje podtipov, ki je potrebno, da je varno in zdravo.

6) Sodobni okviri. To je vseobsegajoče vedro, ki zajema stvari, kot je async LINQ, izboljšana podpora za enumerator, ki tekmuje z iteratorji C++ v zmogljivosti in ne zahteva pošiljanja dvojnega vmesnika za ekstrahiranje elementov itd. Če sem povsem iskren, je to področje, ki ga imamo največji seznam »načrtovanih, vendar še neizvedenih funkcij«, ki obsega stvari, kot so void-as-a-1st-class-type, neničelni tipi, lastnosti, tipkanje učinkov 1. razreda in drugo. Pričakujem, da bomo imeli nekaj teh na naši kontrolni točki sredi leta 2014, vendar ne vseh.

Preberite več na povezavi tukaj.

Več o temah: c#, Razvijalci, microsoft