C--

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 17. marts 2021; checks kræver 2 redigeringer .
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 .

Sprogdesign

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

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 .

Noter

  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 Project Blog: The Glasgow Haskell Compiler og LLVM . Hentet 9. september 2017. Arkiveret fra originalen 25. juni 2011.
  5. ForbedretLLVMBackend-GHC . Hentet 9. september 2017. Arkiveret fra originalen 13. august 2017.

Litteratur

Links