Kuni 14. juulini toimuvad maateaduste-teemaliste artiklite kirjutamise talgud! Vaata IT-võistluse võitjaid.
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-t. Factoril on suur standardteek.
Sisukord[peida] |
[redigeeri] Ajalugu
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 reflektsioonivahenditega. Ü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]
[redigeeri] Programmeerimisparadigma
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.