C-- | |
---|---|
Sprog klasse | programmeringssprog |
Dukkede op i | 1997 [2] |
Forfatter | Peyton-Jones, Simon |
Filtypenavn _ | .c--[3] |
Frigøre |
|
Blev påvirket | Xi |
Internet side | cs.tufts.edu/~nr/c-- |
C-- (udtales " C minus minus ") er et bærbart programmeringssprog på lavt niveau , der bruges som en mellemrepræsentation for sprog på superhøjt niveau Skabt i anden halvdel af 1990'erne af funktionel programmeringsforskere Peyton-Jones og Ramsey Norman . Det vigtigste kendetegn i sammenligning med forskellige varianter af bytekoder er, at det genererede resultat i C-- er menneskelig-læsbar-tekst på et sprog med en C-lignende syntaks .
Da det i sig selv er en temmelig vanskelig opgave at skrive en kodegenerator, og de backends, der var tilgængelige for forskere fra disse år, var komplekse og dårligt dokumenterede, blev der oprettet adskillige compilerprojekter, der genererede C-kode (f.eks. var Modula-3 sprogkompileren oprettet ). C-sproget er dog ikke det mest bekvemme valg til funktionelle programmeringssprog: det understøtter ikke halerekursion , skraldopsamling og effektiv håndtering af undtagelser . C-- blev oprettet som et alternativ til C, som understøtter nogle af disse funktioner. Dens mest innovative funktion er en runtime-grænseflade, der giver dig mulighed for at oprette bærbare skraldeopsamlere, undtagelsesstøttesystemer og andre funktioner, der fungerer med enhver C-- compiler.
Sprogets syntaks er primært lånt fra C-sproget. C-- udelukker eller ændrer brugen af nogle standard C-funktioner, såsom variadiske funktioner, pointersyntaks og aspekter af C-typesystemet, fordi det interfererer med de iboende funktioner i C-- sproget, såvel som letheden med hvilke kodegenereringsværktøjer, der kan bruge dem. Så for eksempel kræver C-- ikke en eksplicit deklaration af typen af variable, den mangler strukturer og pointer.
Navnet på sproget er lidt af en joke, hvilket indikerer, at C-- er en forkortet form af C, ligesom C++ er en forlængelse af C. (I C og C++ betyder operatorerne "--" og "++" at reducere eller øge en variabel med 1.)
C-- er målplatformen for Glasgow Haskell Compiler . Flere af udviklerne af C--, herunder Peyton-Jones, Dias ( João Dias ) og Ramsey, arbejder eller har været involveret i udviklingen af Glasgow Haskell Compiler [4] [5] . Kodebasen og udviklingen af GHC er baseret på Microsoft Research i Cambridge , selvom det ikke er et Microsoft- projekt .
Typesystemet i C-- er bevidst designet til at afspejle de begrænsninger, som computerhardwaren pålægger, snarere end traditionen med typesystemerne for sprog på højere niveau. I C-- kan en værdi lagret i registre eller hukommelse kun være af én type, en bitvektor. En bitvektor er dog en polymorf type og kan have forskellige størrelser: for eksempel 8-bit eller 32-bit. Derudover, udover at være en bitvektor, giver C-- også den boolske type bool , som kan være resultattypen af et udtryk, kan også bruges til at styre programudførelse og kan ikke lagres i et register eller i hukommelsen .