Factor ist eine moderne, stackbasierte und concatenative Programmiersprache, die Slava Pestov 2003 zunächst als Skriptsprache für ein Spiel („JFactor“) entwarf. Sie führt die Stack-Idee von Forth und die funktionale Ausdruckskraft von Joy zu einer praxistauglichen Sprache zusammen: dynamische Typisierung, automatische Speicherverwaltung, ein JIT-Compiler (Factor-VM) und eine umfangreiche Standardbibliothek aus Vokabularen — inklusive GUI- und Web-Framework (Furnace).

Words, Vokabulare und Stack-Effekte

Funktionen heißen in Factor Words und werden mit Stack-Effekt-Kommentaren definiert. Der Stack-Effekt ( x y -- z ) dokumentiert, welche Werte ein Word vom Stack nimmt und welche es zurücklässt:

USE: math
: quadrat ( n -- n^2 ) dup * ;
5 quadrat            ! → 25
{ 1 2 3 } [ dup * ] map   ! → { 1 4 9 }

Wichtige Wörter

  • Stack-Shuffler: dup, drop, swap, over, nip, tuck, pick, rot, -rot
  • Definition: : name ( effekt ) body ;, lokale Variablen mit ::, Vokabulare per USE: und IN:
  • Quotations und Kombinatoren: [ ... ], if, when, unless, bi, tri, cleave, spread, each, map, filter, reduce, while, loop

Die Entwicklung ist imagebasiert: Der Compiler übersetzt Words beim Laden in effizienten Maschinencode. Damit verbindet Factor die Produktivität dynamischer Sprachen mit der Geschwindigkeit kompilierter Systeme — ähnlich wie PostScript als älteres stackbasiertes System zeigt, dass das Modell auch für Seitenbeschreibung taugt.