C--

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 17 mars 2021; kontroller kräver 2 redigeringar .
C--
Språkklass programmeringsspråk
Framträdde i 1997 [2]
Författare Peyton-Jones, Simon
Filtillägg _ .c--[3]
Släpp
Blivit påverkad Xi
Hemsida cs.tufts.edu/~nr/c--

C-- (uttalas " C minus minus ") är ett bärbart programmeringsspråk på låg nivå som används som en mellanrepresentation för superhögnivåspråk Skapad under andra hälften av 1990-talet av funktionell programmeringsforskare Peyton-Jones och Ramsey Norman . Den huvudsakliga utmärkande egenskapen i jämförelse med olika varianter av bytekoder är att det genererade resultatet i C-- är läsbar text på ett språk med en C-liknande syntax .

Språkdesign

Eftersom att skriva en kodgenerator i sig är en ganska svår uppgift, och de backends som var tillgängliga för forskare under dessa år var komplexa och dåligt dokumenterade, skapades flera kompilatorprojekt som genererade C-kod (till exempel var språkkompilatorn Modula-3 skapad ). Men C-språket är inte det mest bekväma valet för funktionella programmeringsspråk: det stöder inte svansrekursion , sophämtning och effektiv undantagshantering . C-- skapades som ett alternativ till C, som ger stöd för några av dessa funktioner. Dess mest innovativa funktion är ett runtime-gränssnitt som låter dig skapa bärbara sophämtare, undantagsstödsystem och andra funktioner som fungerar med vilken C-- kompilator som helst.

Språkets syntax är huvudsakligen lånad från C-språket. C-- utesluter eller ändrar användningen av vissa standard C-funktioner, såsom variadiska funktioner, pekarsyntax och aspekter av C-typsystemet, eftersom det stör de inneboende funktionerna i C-- språket, såväl som lättheten med vilka kodgenereringsverktyg som kan använda dem. Så, till exempel, C-- kräver ingen explicit deklaration av typen av variabler, den saknar strukturer och pekare.

Namnet på språket är något av ett skämt, vilket indikerar att C-- är en förkortad form av C, precis som C++ är en förlängning av C. (I C och C++ betyder operatorerna "--" och "++" att minska eller öka en variabel med 1.)

C-- är målplattformen för Glasgow Haskell Compiler . Flera av utvecklarna av C--, inklusive Peyton-Jones, Dias ( João Dias ) och Ramsey, arbetar eller har varit involverade i utvecklingen av Glasgow Haskell Compiler [4] [5] . Kodbasen och utvecklingen av GHC är baserad på Microsoft Research i Cambridge , även om det inte är ett Microsoft- projekt .

Typsystemet

Typsystemet i C-- är avsiktligt utformat för att återspegla de begränsningar som datorhårdvaran ålägger, snarare än traditionen med typsystem av språk på högre nivå. I C-- kan ett värde lagrat i register eller minne bara vara av en typ, en bitvektor. En bitvektor är dock en polymorf typ och kan ha olika storlekar: till exempel 8-bitars eller 32-bitars. Dessutom, förutom att vara en bitvektor, tillhandahåller C-- också den booleska typen bool , som kan vara resultattypen av ett uttryck, kan också användas för att styra programexekveringen och kan inte lagras i ett register eller i minnet .

Anteckningar

  1. https://www.cs.tufts.edu/~nr/c--/extern/man2.pdf
  2. https://www.cs.tufts.edu/~nr/c--/abstracts/pal-ifl.html
  3. https://github.com/nrnrnr/qc--/tree/master/test2/src
  4. LLVM-projektbloggen: Glasgow Haskell-kompilatorn och LLVM . Hämtad 9 september 2017. Arkiverad från originalet 25 juni 2011.
  5. FörbättradLLVMBackend-GHC . Hämtad 9 september 2017. Arkiverad från originalet 13 augusti 2017.

Litteratur

Länkar