tényező | |
---|---|
Nyelvóra | Konkatenatív programozási nyelv |
Megjelent | 2003 |
Szerző | Szlava Pesztov |
Fejlesztő | Pesztov, Szvjatoszlav |
Kiadás | 0,98 ( 2018. július 31. ) |
Típusrendszer | dinamikus , statikus |
Befolyásolt | Joy , Forth , Lisp , Self |
Engedély | BSD licenc |
Weboldal | factorcode.org |
A Factor egy dinamikusan tipizált konkatenatív programozási nyelv , amelyet Slava Pestov fejlesztett és implementált . A Factor nyelvet a Joy , Forth , Lisp és Self programozási nyelvek befolyásolták leginkább .
A szerző a Factort "gyakorlati verem alapú programozási nyelvként" definiálja, fejlesztési irányának meghatározásában fontos tényezők a teljesítmény, a kifejező eszközök gazdagsága (az áttekinthetőség és a következetesség megőrzése mellett), valamint egy meglehetősen átfogó szabványkönyvtár létrehozása.
A többi konkatenatív nyelvhez hasonlóan a Factornak is van egy postfix szintaxisa, ami azt jelenti, hogy a függvény argumentumai a neve elé íródnak. Például a Hello world Factor nyelven a következő:
"Hello world" nyomatA Factor egy dinamikusan tipizált nyelv, egyedi objektumrendszerrel , amely közel áll a CLOS -hoz . A Factornak van egy kis alaptípuskészlete , és a felhasználók és a szabványos könyvtár saját osztályokat hozhat létre sorok és egyéb mechanizmusok segítségével. A faktor támogatja az öröklődést . A sorok mellett más mechanizmusok is léteznek az osztályok létrehozására ; A faktor támogatja a predikátumosztályokat (egy bizonyos osztály részhalmazait, amelyekre egy predikátumfeltétel teljesül) és az unió osztályokat . A Factor beépített összetett adattípusai közé tartoznak a rögzített és változó hosszúságú vektorok , valamint a hash táblák . Az olyan nyelvekhez hasonlóan, mint a Common Lisp és a Python , a Factor számos aritmetikai adattípust támogat: egyszerű egész számokat, korlátlan hosszúságú egész számokat, lebegőpontos számokat. A komplex számok , a törtek (racionális számok) a szabványos könyvtárban vannak megvalósítva. A szabványos könyvtár emellett linkelt listákat , statikusan beírt értékek tömbjeit [1] és egyéb adatstruktúrákat is megvalósít.
A Factor egyik fő célja az iteratív tesztvezérelt fejlesztésben való felhasználás, így a Factor magja Forth biztonságos dialektusának tekinthető . Bár a Factor egy dinamikusan tipizált nyelv, a fordító hozzáfér a szó (függvény) veremmélységéhez.
A Factor első nyilvános implementációja Java nyelven íródott , azonban a hatékonyság növelése érdekében később C-ben (majd 2009 májusában C++-ban [2] ) átírták , a Java verziót elhagyták. A nyelv implementációjában a C-kód mennyisége fokozatosan csökken, ennek megfelelően a Factor-kód is növekszik.
A Factor eredetileg tisztán értelmezett nyelv volt, de mára teljes egészében fordítóként valósult meg (egy nem optimalizáló fordító lényegében kibontja az értelmezési hurkot [3] [4] ), az interpretátort csak azért tartják meg, hogy interaktív működési módot biztosítson). A natív kódra optimalizáló fordító is teljes egészében Factorban van megírva. Nem hoz létre önálló végrehajtható fájlokat, hanem natív kódot állít elő , amelyet képfájlba ment. Ezek a képek minimális többletköltséggel futnak virtuális gépen. A telepítési alrendszer (deploying) lehetővé teszi, hogy a programból önálló végrehajtható fájlt állítson elő [5] . A Factor megvalósítását nagymértékben befolyásolta a Steel Bank Common Lisp [6] .
A legfrissebb stabil kiadás 2013. április 20-i keltezésű, és a szám 0.96 [7] . Ezenkívül, míg az 1.0-s verzió még fejlesztés alatt áll, a folyamatos összeépítéseket rendszeresen közzéteszik minden támogatott platformra [8] .
A 0.91-es [9] és az azt követő 0.92-es [10] verzió megjelenése között körülbelül 2 év telt el a nyelv aktív fejlesztése között (köztes buildek kiadásával). Ezalatt az idő alatt jelentős változtatásokat hajtottak végre mind a nyelv magjában, mind az azt körülvevő könyvtárakban (különösen a karakterláncokkal végzett munka átkerült az UTF-8 és UTF-16 támogatásával rendelkező Unicode -ba ). [tíz]
A Factor egy fejlődő könyvtárral rendelkezik, amely támogatja a szótárakat , a folytatásokat , a HTTP-kiszolgálót és a csatolt webes keretrendszert , egy OpenGL -burkolót, egy GUI -könyvtárat, egy XML - elemzőt stb.