Microsoft begynner å snakke om deres neste generasjons programmeringsspråk, C# for systemprogrammering

Ikon for lesetid 3 min. lese


Lesere hjelper til med å støtte MSpoweruser. Vi kan få provisjon hvis du kjøper gjennom lenkene våre. Verktøytipsikon

Les vår avsløringsside for å finne ut hvordan du kan hjelpe MSPoweruser opprettholde redaksjonen Les mer

Joe Duffy, en arkitekt og utvikler på et forskningsoperativsystem hos Microsoft har blogget om neste generasjons programmeringsspråk de har jobbet med de siste par årene. Microsoft beskriver nå dette kommende språket som "systemprogrammering"-utvidelser til C#. Microsoft prøver å presentere dette språket som en krysning mellom sikkerhet og produktivitet sentrisk C#, Java, etc, og ytelsessentrisk C++.

Her er de 6 viktige egenskapene til språket,

) Livstidsforståelse. C++ har RAII, deterministisk ødeleggelse og effektiv allokering av objekter. C# og Java lokker begge utviklere til å stole for mye på GC-haugen, og tilbyr kun "løs" støtte for deterministisk ødeleggelse via IDisposable. En del av det teamet mitt gjør er å regelmessig konvertere C#-programmer til dette nye språket, og det er ikke uvanlig at vi opplever 30-50 % tid brukt i GC. For servere dreper dette gjennomstrømmingen; for klienter forringer det opplevelsen ved å injisere latens i interaksjonen. Vi har stjålet en side fra C++ – på områder som rvalue-referanser, flyttesemantikk, ødeleggelse, referanser/lån – og likevel beholdt de nødvendige sikkerhetselementene og slått dem sammen med ideer fra funksjonelle språk. Dette lar oss aggressivt stable allokere objekter, deterministisk ødelegge og mer.

2) Bivirkningsforståelse. Dette er utviklingen av det vi publiserte i OOPSLA 2012, og gir deg elementer av C++-konst (men igjen med sikkerhet), sammen med førsteklasses uforanderlighet og isolasjon.

3) Asynkron programmering i skala. Fellesskapet har vært «rundt og» rundt på denne, nemlig om man skal bruke fortsettelses-passering eller lette blokkerende koroutiner. Dette inkluderer C#, men også stort sett alle andre språk på planeten. Nøkkelinnovasjonen her er et komponerbart typesystem som er agnostisk for utførelsesmodellen, og kan kartlegges effektivt til begge. Det ville være arrogant å hevde at vi har den rette måten å avsløre dette på, men etter å ha erfaring med mange andre tilnærminger elsker jeg hvor vi landet.

4) Typesikker systemprogrammering. Det er ofte hevdet at med type-sikkerhet følger et iboende tap av ytelse. Det er sant at grensekontroll ikke er omsettelig, og at vi foretrekker overløpskontroll som standard. Det er overraskende hva en god optimaliseringskompilator kan gjøre her, kontra JIT-kompilering. (Og man trenger bare tilfeldig å revidere noen nyere sikkerhetsbulletiner for å se hvorfor disse funksjonene har fordeler.) Andre områder inkluderer å la deg gjøre mer uten å tildele. Som å ha lambda-baserte API-er som kan kalles med null tildelinger (i stedet for de vanlige to: en for delegaten, en for skjermen). Og å enkelt kunne skjære ut undermatriser og understrenger uten å tildele.

5) Moderne feilmodell. Dette er en annen som samfunnet er uenig om. Vi har valgt det jeg tror er det beste stedet: kontrakter overalt (forutsetninger, postbetingelser, invarianter, påstander, osv.), feilfri som standardpolicy, unntak for den sjeldne dynamiske feilen (parsing, I/O, etc). og skrevet unntak bare når du absolutt trenger rike unntak. Alt integrert i typesystemet på en 1. klasses måte, slik at du får all den riktige subtypeoppførselen som er nødvendig for å gjøre det trygt og forsvarlig.

6) Moderne rammer. Dette er en oppsamlingsbøtte som dekker ting som async LINQ, forbedret tellerstøtte som konkurrerer med C++ iteratorer i ytelse og ikke krever dobbel-grensesnitt for å trekke ut elementer osv. For å være helt ærlig, er dette området vi har den største listen over "designede, men ennå ikke implementerte funksjoner", som omfatter ting som void-as-a-1st-class-type, non-null-typer, egenskaper, 1. klasse effektskriving og mer. Jeg forventer at vi har noen få av disse i sjekkpunktet vårt i midten av 2014, men ikke alle.

Les mer fra lenken her..

Mer om temaene: c#, utviklere, microsoft