Microsoft strävar efter enkelhet med Bosque programmeringsspråk

Microsoft har lanserat ett nytt open source-projekt för att utveckla Bosque programmeringsspråk. Syftet med Bosque-språkprojektet är att bygga ett funktionellt programmeringsspråk som undviker ”oavsiktlig komplexitet” i utvecklingsprocessen.

Designmål för Bosque-språket inkluderar förbättrad produktivitet för utvecklare, bättre programvarukvalitet och möjliggörande av en rad nya kompilatorer och verktygsupplevelser. Det nya språket är placerat som ett experiment i normaliserad design för en maskinassisterad, snabb och pålitlig livscykel för mjukvaruutveckling.

Ett viktigt mål är att eliminera oavsiktlig komplexitet. Bosque-koden ska vara enkel och lätt att förstå för både maskiner och människor. Men Bosque är fortfarande mycket under utveckling just nu; förespråkare rekommenderar inte att man använder Bosque för något produktionsarbete. Utvecklare uppmuntras att experimentera med det.

Vissa funktioner och designval som gjorts för Bosque inkluderar följande:

  • Alla värden är oföränderliga, där Bosque antar en funktionell modell med oföränderliga data. Att förstå effekten av ett uttalande av kodblock är förenklat när det är bieffektivt, säger Bosque-dokumentationen. Funktionella språk har dragit nytta av förenklingar till programutveckling, sofistikerade verktyg och kompilatoroptimeringar som aktiverats av denna modell.
  • Funktionell programmering är smält med blockomfång och {…}hängslen genom att tillåta flera tilldelningar till uppdaterbara variabler var!.
  • Funktioner är förstklassiga värden och typer.
  • Lambdakonstruktörer kombinerar koddefinition för lambdakroppen med en semantik med variabel kopia för att fånga variabler vid skapande av lambda.
  • Ett enkelt, icke-yttrande typsystem möjliggör användning av en rad strukturella, kombinations- och nominella typer för att förmedla avsikt och koda relevanta funktioner i problemdomänen.
  • Typade strängar ger en mekanism för att lyfta känd struktur om innehållet i en sträng i typen på ett sätt som är meningsfullt för människor och används av typkontrollen.
  • Parametrar kan gängas genom refargumentöverföring. Ett alternativ till flera returvärden, detta förenklar scenarier där en variabel skickas till en metod som kan använda och uppdatera den. Att tillåta uppdateringen i parametern eliminerar den extra returvärdeshantering som skulle krävas. Denna funktion är ännu inte implementerad.
  • Namngivna argument tillhandahålls, liksom viloperioder för spridning och spridning. Dessa kan utföra datamanipulation som en del av anrop och konstruktörsoperationer.
  • Första klassens support erbjuds för att uttrycka en rad invarianter, sanityskontroller och diagnostiska påståenden.
  • Bulkalgebraiska datoperationer i Bosque börjar med massläsningar och uppdateringar av datavärden. Operatörer producerade hjälp fokusera kod på övergripande avsikt och låta utvecklare utföra algebraisk resonemang på datastruktur operationer. Algebraiska operationer tillhandahålls för datatyper, tappar, poster och nominella typer samt för operationer inklusive projektion, multiuppdatering och sammanfogning.
  • Med en iterativ bearbetningskapacitet handlas strukturerade loopar för iterativa bearbetningskonstruktioner på hög nivå. Att ta bort pannan för att skriva samma loopar eliminerar felklasser inklusive bundna beräkningar; avsikt görs avsikt klart.

Bosque blir det senaste språkprojektet på Microsoft, som har producerat språk inklusive C #, ett objektorienterat språk; F #, ett funktionellt språk; och TypeScript, ett typat superset av JavaScript. Programvarugiganten har haft en bra grad av framgång med att utveckla språk som blir populära. C #, till exempel, rankades femte och TypeScript 12: e på de senaste RedMonk-språkrankningarna, som är baserade på diskussioner i Stack Overflow och kodanvändning i GitHub. 

Du hittar Bosque-dokumentation, exempel och en referensimplementering på GitHub. Självstudier är på gång.