faktor | |
---|---|
Språkklass | Konkatenativt programmeringsspråk |
Framträdde i | 2003 |
Författare | Slava Pestov |
Utvecklaren | Pestov, Svyatoslav |
Släpp | 0,98 ( 31 juli 2018 ) |
Typ system | dynamisk , statisk |
Blivit påverkad | Joy , Forth , Lisp , Self |
Licens | BSD-licens |
Hemsida | factorcode.org |
Factor är ett dynamiskt skrivet konkatenativt programmeringsspråk utvecklat och implementerat av Slava Pestov . De främsta influenserna på Factor-språket var programmeringsspråken Joy , Forth , Lisp och Self .
Författaren definierar Factor som ett "praktiskt stackbaserat programmeringsspråk", viktiga faktorer för att bestämma riktningen för dess utveckling är prestanda, rikedom av uttrycksfulla medel (med bibehållen klarhet och konsistens), och skapandet av ett ganska omfattande standardbibliotek.
Liksom andra sammanlänkade språk har Factor en postfix- syntax, vilket innebär att funktionens argument skrivs före dess namn. Till exempel är Hello world på Factor-språket:
"Hej världen" tryckFactor är ett dynamiskt skrivet språk med ett unikt objektsystem nära CLOS . Factor har en liten uppsättning bastyper och användare och standardbiblioteket kan skapa sina egna klasser med hjälp av tupler och andra mekanismer. Faktorn stödjer arv . Förutom klasser som är tuplar, finns det andra mekanismer för att skapa klasser ; Faktor stöder predikatklasser (undermängder av en viss klass för vilka ett predikatvillkor är uppfyllt) och fackföreningsklasser . Factors inbyggda sammansatta datatyper inkluderar vektorer med fast och variabel längd och hashtabeller . Liksom språk som Common Lisp och Python stöder Factor en rik uppsättning aritmetiska datatyper: enkla heltal, heltal med obegränsad längd, flyttal. Komplexa tal , bråk (rationella tal) är implementerade i standardbiblioteket. Standardbiblioteket implementerar också länkade listor , arrayer med statiskt skrivna värden [1] och andra datastrukturer.
Ett av Factors huvudmål är att användas i iterativ testdriven utveckling , så Factors kärna kan betraktas som en säker dialekt av Forth . Även om Factor är ett dynamiskt skrivet språk, har kompilatorn tillgång till stackdjupet för ett ord (funktion).
Den första offentliga implementeringen av Factor skrevs i Java , men för att öka effektiviteten skrevs den senare om i C (och sedan, i maj 2009, i C++ [2] ), Java-versionen övergavs. Mängden C-kod i implementeringen av språket minskar gradvis, och faktorkoden växer i enlighet med detta.
Faktor var ursprungligen ett rent tolkat språk, men är nu fullt implementerat som en kompilator (en icke-optimerande kompilator rullar i huvudsak upp tolkningsslingan [3] [4] ), tolken behålls endast för att tillhandahålla ett interaktivt driftsätt). Den optimerande kompilatorn till inbyggd kod är också skriven helt i Factor. Den producerar inte fristående körbara filer, utan genererar inbyggd kod som sparas i en bildfil. Dessa bilder körs med minimal overhead med en virtuell maskin. Distributionsundersystemet (deploying) låter dig generera en fristående körbar fil från programmet [5] . Implementeringen av Factor påverkades starkt av Steel Bank Common Lisp [6] .
Den senaste stabila utgåvan är daterad 20 april 2013 och har numret 0,96 [7] . Även om version 1.0 fortfarande är under utveckling, publiceras kontinuerliga byggnader regelbundet för alla plattformar som stöds [8] .
Mellan releasen av version 0.91 [9] och version 0.92 [10] som följde den , gick det cirka 2 år av aktiv utveckling av språket (med utgivningen av mellanliggande versioner). Under denna tid gjordes betydande förändringar både i själva kärnan av språket och i biblioteken som omger det (särskilt allt arbete med strängar överfördes till Unicode med stöd för UTF-8 och UTF-16 ). [tio]
Factor har ett utvecklande bibliotek med stöd för ordböcker , fortsättningar , en HTTP-server och ett bifogat webbramverk , en OpenGL - wrapper, ett GUI- bibliotek, en XML -parser , etc.