C--

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. március 17-én felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .
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 .

Nyelvi tervezés

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 típusrendszer

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

Jegyzetek

  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 és LLVM . Letöltve: 2017. szeptember 9. Archiválva az eredetiből: 2011. június 25.
  5. Továbbfejlesztett LLVMBackend-GHC . Letöltve: 2017. szeptember 9. Az eredetiből archiválva : 2017. augusztus 13..

Irodalom

Linkek