Microsoft begynder at tale om deres næste generations programmeringssprog, C# til systemprogrammering

Ikon for læsetid 3 min. Læs


Læsere hjælper med at understøtte MSpoweruser. Vi får muligvis en kommission, hvis du køber via vores links. Værktøjstip-ikon

Læs vores oplysningsside for at finde ud af, hvordan du kan hjælpe MSPoweruser med at opretholde redaktionen Læs mere

Joe Duffy, en arkitekt og udvikler på et forskningsoperativsystem hos Microsoft, har blogget om den næste generation af programmeringssprog, de har arbejdet på i de sidste par år. Microsoft beskriver nu dette kommende sprog som "systemprogrammering"-udvidelser til C#. Microsoft forsøger at pitche dette sprog som en krydsning mellem Sikkerheds- og Produktivitetscentreret C#, Java osv. og Ydeevnecentreret C++.

Her er de 6 vigtige træk ved sproget,

) Livsvarig forståelse. C++ har RAII, deterministisk destruktion og effektiv allokering af objekter. C# og Java lokker begge udviklere til at stole for meget på GC-heapen og tilbyder kun "løs" support til deterministisk ødelæggelse via IDisposable. En del af det, mit team gør, er regelmæssigt at konvertere C#-programmer til dette nye sprog, og det er ikke ualmindeligt, at vi støder på 30-50 % tid brugt i GC. For servere dræber dette gennemstrømningen; for klienter forringer det oplevelsen ved at injicere latens i interaktionen. Vi har stjålet en side fra C++ — inden for områder som rvalue-referencer, flyttesemantik, destruktion, referencer/lån — og alligevel bevaret de nødvendige sikkerhedselementer og fusioneret dem med ideer fra funktionelle sprog. Dette giver os mulighed for aggressivt at stable allokere objekter, deterministisk ødelægge og mere.

2) Bivirkningsforståelse. Dette er udviklingen af ​​det, vi udgav i OOPSLA 2012, hvilket giver dig elementer af C++ const (men igen med sikkerhed), sammen med førsteklasses uforanderlighed og isolation.

3) Asynkron programmering i skala. Fællesskabet har været 'rundt og' rundt om denne, nemlig om man skal bruge fortsættelses-passering eller letvægts blokerende coroutiner. Dette inkluderer C# men også stort set alle andre sprog på planeten. Nøgleinnovationen her er et komponerbart typesystem, der er agnostisk over for udførelsesmodellen, og som effektivt kan kortlægges til begge. Det ville være arrogant at hævde, at vi har den rigtige måde at afsløre det her på, men at have erfaring med mange andre tilgange, elsker jeg, hvor vi landede.

4) Typesikker systemprogrammering. Det hævdes almindeligvis, at med typesikkerhed følger et iboende tab af ydeevne. Det er rigtigt, at grænsekontrol ikke er til forhandling, og at vi foretrækker overløbskontrol som standard. Det er overraskende, hvad en god optimeringskompiler kan gøre her, kontra JIT-kompilering. (Og man behøver kun tilfældigt at revidere nogle af de seneste sikkerhedsbulletiner for at se, hvorfor disse funktioner har fordele.) Andre områder omfatter at give dig mulighed for at gøre mere uden at tildele. Som at have lambda-baserede API'er, der kan kaldes med nul tildelinger (i stedet for de sædvanlige to: en for delegeret, en for skærmen). Og at være i stand til nemt at udskille sub-arrays og sub-strings uden at allokere.

5) Moderne fejlmodel. Dette er endnu en, som samfundet er uenige om. Vi har valgt, hvad jeg mener er det søde punkt: kontrakter overalt (forudsætninger, postbetingelser, invarianter, påstande osv.), fail-fast som standardpolitikken, undtagelser for den sjældne dynamiske fejl (parsing, I/O osv.), og kun indtastede undtagelser, når du absolut har brug for rige undtagelser. Alt sammen integreret i typesystemet på 1. klasses måde, så du får al den korrekte subtypeadfærd, der er nødvendig for at gøre det sikkert og forsvarligt.

6) Moderne rammer. Dette er en catch-all bucket, der dækker ting som async LINQ, forbedret tællerunderstøttelse, der konkurrerer med C++ iteratorer i ydeevne og ikke kræver dobbeltgrænsefladeafsendelse for at udtrække elementer osv. For at være helt ærlig, er dette det område, vi har den største liste over "designede, men endnu ikke implementerede funktioner", der spænder over ting som void-as-a-1st-class-type, non-null-typer, egenskaber, 1. klasses effektskrivning og mere. Jeg forventer, at vi har et par af disse i vores kontrolpunkt i midten af ​​2014, men ikke dem alle.

Læs mere fra linket link..

Mere om emnerne: c#, udviklere, microsoft