Factor

Allikas: Vikipeedia
Factor
Paradigma magasinipõhine
Väljalaskeaeg 2003
Looja Slava Pestov
Viimane väljalase 0.92 (16. veebruar 2010) [1]
Tüüpimine tugev, dünaamiline
Mõjutatud keeltest Joy, Forth, Lisp, Self
Mõjutanud keeli Cat[2], Concat [3]
OS Windows, Mac OS, Linux, teised
Litsents BSD litsents
Veebileht factorcode.org

Factor on magasinipõhine programmeerimiskeel. Factor on dünaamilise tüüpimise, automaatse mäluhalduse ning võimsate metaprogammeerimisvahenditega. Sellest keelest on olemas implementatsioon, mis sisaldab optimiseerivat kompilaatorit, interpretaatorit ning IDE-d. Factoril on suur standardteek.

Ajalugu[muuda | redigeeri lähteteksti]

Slava Pestov lõi Factori aastal 2003 skriptimiskeelena arvutimängude jaoks.[4] Algne implementatsioon, mida nüüd teatakse nimega JFactor, oli kirjutatud Javas ning töötas Java virtuaalmasinas. Kuigi see algne versioon sarnanes tänasele Factorile süntaksi poolest, on tänane Factor suuresti teistsuguste põhimõtetega ning ka oluliselt kiirem.

Algselt keskendusid Factori programmid Java objektide manipuleerimisele Java refleksioonivahenditega. Üks läbivaid ideid on olnud kohandada keelt temas kirjutavatele programmidele. Ei JFactoris ega esimestes masinkoodiks kompileerivates kompilaatorites polnud objektisüsteemi, kus programmeerija saaks oma klasse defineerida; tänapäeval on objektisüsteem Factori keskne osa. Muud olulised võimalused nagu ennikuklassid, makrod ning kasutaja-defineeritud parsimissõnad lisati tükkhaaval, vastavalt sellele kui palju ja mil viisil nende järele vajadust oli. Juba varastest aegadest peale on Factoril olnud liides C (programmeerimiskeel) keelde.

JFactor koosnes alguses ainult interpretaatorist, hiljem lisati kompilaator Java baitkoodi. See kompilaator töötas ainult osadel protseduuridel. Javas kirjutatud JFactor asendati C-s ning Factoris kirjutatud Factori implementatsiooniga. Aja jooksul on Factori implementatsioon oluliselt kiiremaks muutunud.[5]

Programmeerimisparadigma[muuda | redigeeri lähteteksti]

Factor on dünaamilise tüüpimisega, funktsionaalne ning objekt-orienteeritud programmeerimiskeel. Kood on struktureeritud väikeste protseduuride ümber, neid nimetatakse sõnadeks. Tavaliselt on nad 1–3 rida pikad, ja rohkem kui 7-realine sõna on väga haruldane. Mis oleks muus keeles üks protseduur, on Factoris tavaliselt mitu.

Iga sõna võtab konstantse arvu argumente ning tagastab konstantse arvu väärtusi. Argumente saadetakse sõnadesse magasini abil, kasutades tagurpidi prefikskuju. Seda magasini kasutatakse ainult sõnade väljakutsumiste korraldamiseks, mitte andmestruktuurina. Factori magasini kasutatakse sarnaselt Forthi omale – neid mõlemaid nimetatakse magasinipõhisteks programmeerimiskeelteks. Näiteks selline näeb välja koodijupp, mis prindib väljundvoogu "hello world":

"hello world" print

print on sõna io sõnastikus; ta võtab ühe stringi magasini pealt ning ei tagasta midagi. Ta prindib sõna käesolevasse väljundvoogu (milleks on vaikimisi kas terminal või graafiline kuular).

Mitte kõiki andmeid ei pea edastama magasiniga. Staatilise skoopimisega saab protseduurisiseselt ajutisi muutujaid väärtustada ning lugeda. Dünaamilise skoopimisega saab muutujaid magasini kasutamata protseduuride väljakutsumistele saata, näiteks töötavad nii sisend- ning väljundvoog.

Factoris on rõhk paindlikkusel ning keele laiendamise võimalustel. On olemas süsteem makrode ning suvaliste keelesüntaksimuutuste jaoks. Neid laiendusi kasutatakse sagedasti, et lubada uut tüüpi sõnadefinitsioone ning literaale andmestruktuuride jaoks. Neid kasutatakse ka näiteks XML teegi jaoks. Näiteks, järgnev sõna võtab argumendiks stringi ning loob XML-dokumendiobjekti:

: make-html ( string – xml )
   dup
   <XML
       <html>
           <head><title><-></title></head>
           <body><h1><-></h1></body>
       </html>
   XML> ;

Sõna dup kloonib magasini pealmist elementi, <-> tähendab siin dokumendi selle osa täitmine magasini pealmise elemendiga.

Viited[muuda | redigeeri lähteteksti]

Välislingid[muuda | redigeeri lähteteksti]