C--

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 17 martie 2021; verificările necesită 2 modificări .
C--
Clasa de limba limbaj de programare
Aparut in 1997 [2]
Autor Peyton-Jones, Simon
Extensie de fișier .c--[3]
Eliberare
A fost influențat Xi
Site-ul web cs.tufts.edu/~nr/c--

C-- (pronunțat „ C minus minus ”) este un limbaj de programare portabil de nivel scăzut, folosit ca reprezentare intermediară pentru limbaje de nivel super-înalt Creat în a doua jumătate a anilor 1990 de cercetătorii de programare funcțională Peyton-Jones și Ramsey Norman . Principala trăsătură distinctivă în comparație cu diferite variante de coduri octet este că rezultatul generat în C-- este text care poate fi citit de om într-o limbă cu o sintaxă asemănătoare C-ului .

Design limbaj

Deoarece scrierea unui generator de cod în sine este o sarcină destul de dificilă, iar backend-urile disponibile cercetătorilor acei ani erau complexe și slab documentate, au fost create mai multe proiecte de compilare care au generat cod C (de exemplu, compilatorul de limbaj Modula-3 a fost creat ). Cu toate acestea, limbajul C nu este cea mai convenabilă alegere pentru limbajele de programare funcționale: nu acceptă recursiunea cozii , colectarea gunoiului și gestionarea eficientă a excepțiilor . C-- a fost creat ca o alternativă la C, care oferă suport pentru unele dintre aceste caracteristici. Caracteristica sa cea mai inovatoare este o interfață de rulare care vă permite să creați colectoare portabile de gunoi, sisteme de suport pentru excepții și alte caracteristici care vor funcționa cu orice compilator C--.

Sintaxa limbajului este împrumutată în principal din limbajul C. C-- exclude sau modifică utilizarea unor caracteristici standard C, cum ar fi funcțiile variadice, sintaxa pointerului și aspectele sistemului de tip C, deoarece interferează cu caracteristicile inerente ale limbajului C--, precum și cu ușurința cu ce instrumente de generare de cod le pot folosi. Deci, de exemplu, C-- nu necesită o declarație explicită a tipului de variabile, îi lipsesc structuri și pointeri.

Numele limbajului este oarecum o glumă, indicând faptul că C-- este o formă prescurtată a lui C, la fel cum C++ este o extensie a lui C. (În C și C++, operatorii „--” și „++” înseamnă scăderea sau creșterea unei variabile cu 1.)

C-- este platforma țintă pentru Glasgow Haskell Compiler . Câțiva dintre dezvoltatorii C--, inclusiv Peyton-Jones, Dias ( João Dias ) și Ramsey, lucrează sau au fost implicați în dezvoltarea Glasgow Haskell Compiler [4] [5] . Baza de cod și dezvoltarea GHC se bazează la Microsoft Research din Cambridge , deși nu este un proiect Microsoft .

Sistemul de tipuri

Sistemul de tipuri din C-- este proiectat în mod deliberat pentru a reflecta limitările impuse de hardware-ul computerului, mai degrabă decât tradiția sistemelor de tipuri ale limbajelor de nivel superior. În C--, o valoare stocată în registre sau memorie poate fi doar de un tip, un vector de biți. Cu toate acestea, un vector de biți este de tip polimorf și poate avea dimensiuni diferite: de exemplu, 8 biți sau 32 de biți. În plus, pe lângă faptul că este un vector de biți, C-- oferă și tipul boolean bool , care poate fi tipul rezultat al unei expresii, poate fi folosit și pentru a controla execuția programului și nu poate fi stocat într-un registru sau în memorie .

Note

  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. Blogul proiectului LLVM: compilatorul Glasgow Haskell și LLVM . Consultat la 9 septembrie 2017. Arhivat din original pe 25 iunie 2011.
  5. ImprovedLLVMBackend-GHC . Preluat la 9 septembrie 2017. Arhivat din original la 13 august 2017.

Literatură

Link -uri