A Factor programozási nyelv

Bevezetés

Bevezetés

A Factor egy dinamikusan tipizált, kiterjeszthető szintaktikájú, multiparadigmás, stack-alapú, magas-szintű programozási nyelv. Fejlesztését Slava Pestov kezdte meg 2003-ban, egy java alapú játékfejlesztési projekt scriptelhetőségének támogatására, már a kezdetektől a gyakorlati felhasználási lehetőségeket tartva szem előtt. A nyelv hamar egy általános programozási nyelvvé fejlődött.

Rokon és motiváló nyelvek

A Factor több, különböző stílusú programozási nyelvből vett ötleteket, egy rövid lista a főbb behatásokról (a teljesség igénye nélkül):

Mindezek közül (legalábbis legérezhetőbben) a Forth-al való rokonság tűnik a legkézzelfoghatóbbnak.

A verem és a konkatenatív paradigma

A stack alapú nyelvek központi fogalma egy, a szavak között osztott adatverem, mely paraméterek és eredmények átadására szolgál az egyes hívott szavak között. Akárcsak Forth-ban, a programozási filozófia központi gondolata a megoldandó probléma egyre kisebb és egyszerűbb szavakra faktorizálása (innen ered a nyelv neve is), majd ezen szavak segítségével, "pipe-szerűen" a feladat megoldása. További hasonlóság a Forth-hoz, hogy a legtöbb nyelvi funkcionalitást itt is, mint az egyszerű alapnyelvhez kapcsolt könyvtár/szótár próbálják megoldani.

A nyelv megismerését a fenti megfontolások alapján pozitívan befolyásolja, ha az embernek van egy minimális, már előzetes rálátása a konkatenatív stílusra, de fontos tisztázni, hogy a Factor jóval magasabb szinten történő problémamegoldási eszközöket is alkalmaz, mint az egyes Forth-megoldások, így nem árt, az sem, ha az ember tisztában van az objektumelvű és funkcionális paradigmák lényegi elemeivel is.

Egy egyszerű program:

Írjuk meg számok faktoriálisát kiszámoló programunkat Factor nyelven: A program létrehozásához először indítsuk el a listenert(scratchpad), ahol adjuk ki a következő parancsokat:

USE: tools.scaffold "resource:work" "factorialhello" scaffold-vocab

A fenti két lépéssel létrehoztunk egy saját szótárat a listener környezeten belülről. Ezzel a környezet létrehozta számunkra a szükséges könyvtárstruktúrát a factor telepítésünk work könyvtárában és az alatt egy factorialhello.factor fájlt is. Ezt nyissuk meg tetszőleges text-editorral és az ott található forráskód-skeletont alakítsuk a következő formára:

! Copyright (C) 2012 Richard Thier. ! See http://factorcode.org/license.txt for BSD license. USING: math.ranges sequences prettyprint ; IN: factorialhello : factorial ( n -- n! ) 1 [a,b] product ;

Ha ezzel kész vagyunk mentsük el a fájlt és térjünk vissza a listener-be, ahol írjuk be a következőket:

"factorialhello" reload ! F2 lenyomása is elég a listenerben a reloadhoz 5 factorial . 100 factorial .

Ha nem gépeltünk el semmit, akkor 120-at, illetve valami irgalmatlan nagy számot kell kapnunk, ami pont megfelel az elvárásoknak.