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 .
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 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 .