C-- | |
---|---|
Nyelvóra | programozási nyelv |
Megjelent | 1997 [2] |
Szerző | Peyton-Jones, Simon |
Fájlkiterjesztés _ | .c--[3] |
Kiadás |
|
Befolyásolva | Xi |
Weboldal | cs.tufts.edu/~nr/c-- |
A C-- (ejtsd: " C mínusz ") egy hordozható alacsony szintű programozási nyelv , amelyet a szupermagas szintű nyelvek közbenső reprezentációjaként használnak Peyton-Jones és Ramsey Norman funkcionális programozási kutatók készítette az 1990-es évek második felében . A fő megkülönböztető jellemző a bájtkódok különböző változataihoz képest az , hogy a C-ben generált eredmény ember által olvasható szöveg egy C-szerű szintaxisú nyelven .
Mivel a kódgenerátor megírása önmagában meglehetősen nehéz feladat, és az akkori kutatók számára elérhető háttérprogramok bonyolultak és rosszul dokumentáltak voltak, több fordítóprojekt is született, amelyek C kódot generáltak (például a Modula-3 nyelvi fordító létrehozva ). A C nyelv azonban nem a legkényelmesebb választás funkcionális programozási nyelvekhez: nem támogatja a farokrekurziót , a szemétgyűjtést és a hatékony kivételkezelést . A C-- a C alternatívájaként jött létre, amely támogatja néhány ilyen szolgáltatást. Leginnovatívabb funkciója a futásidejű interfész, amely lehetővé teszi hordozható szemétgyűjtők, kivételtámogató rendszerek és egyéb olyan szolgáltatások létrehozását, amelyek bármely C-- fordítóval működnek.
A nyelv szintaxisa főként a C nyelvből származik. A C-- kizárja vagy megváltoztatja egyes szabványos C-jellemzők használatát, mint például a variadic függvények, a mutató szintaxisa és a C típusú rendszer jellemzői, mivel zavarja a C-- nyelv jellemző tulajdonságait, valamint az egyszerű használatot. mely kódgeneráló eszközök használhatják őket. Így például a C-- nem igényli a változók típusának explicit deklarációját, hiányoznak a struktúrák és a mutatók.
A nyelv neve némileg vicc, ami arra utal, hogy a C-- a C rövidített formája, ahogy a C++ a C kiterjesztése. (C-ben és C++-ban a "--" és "++" operátorok azt jelentik, hogy egy változót 1-gyel csökkentenek vagy növelnek.)
C-- a Glasgow Haskell Compiler célplatformja . A C-- fejlesztői közül többen, köztük Peyton-Jones, Dias ( João Dias ) és Ramsey, a Glasgow Haskell Compiler [4] [5] fejlesztésében dolgoznak vagy vettek részt . A GHC kódbázisa és fejlesztése a cambridge- i Microsoft Research központja, bár ez nem egy Microsoft projekt .
A C-- típusrendszert szándékosan úgy alakították ki, hogy a számítógépes hardver által támasztott korlátokat tükrözze, nem pedig a magasabb szintű nyelvek típusrendszereinek hagyományait. A C--ben a regiszterekben vagy a memóriában tárolt érték csak egyféle, bitvektor lehet. A bitvektor azonban polimorf típusú, és különböző méretű lehet: például 8 bites vagy 32 bites. Ezenkívül a C-- amellett, hogy bitvektor, biztosítja a boolean típusú bool -t is, amely lehet egy kifejezés eredménytípusa, programvégrehajtás vezérlésére is használható, és nem tárolható regiszterben vagy memóriában. .