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