C--

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 17. března 2021; kontroly vyžadují 2 úpravy .
C--
Jazyková třída programovací jazyk
Objevil se v 1997 [2]
Autor Peyton-Jones, Simon
Přípona souboru .c--[3]
Uvolnění
Byl ovlivněn Xi
webová stránka cs.tufts.edu/~nr/c--

C-- (vyslovuje se " C minus minus ") je přenosný nízkoúrovňový programovací jazyk používaný jako střední reprezentace jazyků na super vysoké úrovni Vytvořeno v druhé polovině 90. let výzkumníky funkčního programování Peyton-Jones a Ramsey Norman . Hlavním rozlišovacím znakem ve srovnání s různými variantami bajtových kódů je to, že vygenerovaný výsledek v C – je člověkem čitelný – text v jazyce se syntaxí podobnou C.

Jazykový design

Vzhledem k tomu, že psaní generátoru kódu samo o sobě je poměrně obtížný úkol a backendy, které měli vědci v té době k dispozici, byly složité a špatně zdokumentované, bylo vytvořeno několik projektů kompilátorů, které generovaly kód C (například kompilátor jazyka Modula-3 byl vytvořeno ). Jazyk C však není nejpohodlnější volbou pro funkcionální programovací jazyky: nepodporuje tail recursion , garbage collection a efektivní zpracování výjimek . C-- byl vytvořen jako alternativa k C, která poskytuje podporu pro některé z těchto funkcí. Jeho nejinovativnější funkcí je runtime rozhraní, které vám umožňuje vytvářet přenosné garbage collectory, systémy podpory výjimek a další funkce, které budou fungovat s jakýmkoli C--kompilátorem.

Syntaxe jazyka je převzata především z jazyka C. C-- vylučuje nebo mění použití některých standardních funkcí jazyka C, jako jsou variadic funkce, syntaxe ukazatele a aspekty systému typu C, protože to narušuje přirozené vlastnosti jazyka C a také snadnost které nástroje pro generování kódu je mohou používat. Takže například C-- nevyžaduje explicitní deklaraci typu proměnných, chybí mu struktury a ukazatele.

Název jazyka je poněkud vtipný, což naznačuje, že C-- je zkrácená forma C, stejně jako C++ je rozšíření C. (V C a C++ znamenají operátory "--" a "++" snížení nebo zvýšení proměnné o 1.)

C-- je cílová platforma pro Glasgow Haskell Compiler . Několik vývojářů C--, včetně Peyton-Jones, Dias ( João Dias ) a Ramsey, pracuje nebo se podílelo na vývoji Glasgow Haskell Compiler [4] [5] . Kódová základna a vývoj GHC je založen na Microsoft Research v Cambridge , ačkoli to není projekt Microsoftu .

Typový systém

Typový systém v C-- je záměrně navržen tak, aby odrážel omezení uložená počítačovým hardwarem, spíše než tradici typových systémů jazyků vyšší úrovně. V C-- může být hodnota uložená v registrech nebo paměti pouze jednoho typu, bitový vektor. Bitový vektor je však polymorfní typ a může mít různé velikosti: například 8bitový nebo 32bitový. Kromě toho, že C-- je bitový vektor, poskytuje také booleovský typ bool , který může být výsledným typem výrazu, lze jej také použít k řízení provádění programu a nelze jej uložit do registru nebo do paměti. .

Poznámky

  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. Blog projektu LLVM: The Glasgow Haskell Compiler and LLVM . Získáno 9. září 2017. Archivováno z originálu 25. června 2011.
  5. Vylepšený LLVMBackend-GHC . Získáno 9. září 2017. Archivováno z originálu 13. srpna 2017.

Literatura

Odkazy