Factor

Factor
Paradigme : multiparadigmatic
Anul publicării: 2003
Proiectant: Slava Pestov
Dezvoltator: Slava Pestov
Versiunea actuală  : 0,98   (31 iulie 2018)
Tastare : dinamic
Influențată de: Forth , Lisp , Smalltalk , Joy
Licență : Licență BSD
factorcode.org

Factor este un limbaj de programare gratuit conceput de Slava Pestov și dezvoltat din 2003. Adoptă concepte de la Forth , Lisp și Smalltalk-80 . Se intenționează să fie un succesor practic al Joy și o implementare este disponibilă sub licență BSD .

Cuvinte și stivă

Toate funcțiile își citesc argumentele din stivă , își scriu rezultatele în stivă și sunt denumite cuvinte . Un program este o secvență de lexicale pentru obiecte care sunt plasate pe teanc și cuvinte care sunt aplicate pe teanc.

! Kommentar
2 3 + .

În primul rând, 2 și 3 sunt puse pe stivă. +  ia două numere de pe stivă și pune suma celor două pe stivă. .  preia obiectul de sus din stivă și îl imprimă. Comentariile încep cu  ! și du-te la sfârșitul liniei.

: add2 ( n -- n' ) 2 + ;
5 add2

Cuvintele noi sunt definite cu :. add2 adaugă 2 la numărul de sus din stivă.

Cuvintele sunt rezumate în vocabulare . Cu USE: este indicat, în care sunt căutate cuvinte de vocabular și IN: în care sunt stocate toate cuvintele de vocabular definite care urmează.

Orice obiecte precum numere, secvențe (tablouri, vectori, șiruri, etc.) etc. pot fi așezate pe stivă. O reprezentare lexicală este definită pentru toate tipurile de obiecte.

SYMBOL: foo
"Hello" foo set
foo get

Numele variabilelor sunt definite cu SYMBOL :, setate cu set și citite cu get și stocate în stivă. Memoria pentru obiecte este alocată automat și eliberată din nou prin colectarea gunoiului .

Programare funcțională

Funcțiile anonime sunt scrise între paranteze pătrate și sunt denumite citate .

{ 1 2 3 } [ 3 + ] map
10 [ "Hello world" print ] times
4 [ 2 + ] [ 3 * ] bi
10 0 < [ "yes" print ] [ "no" print ] if

harta ia un tablou și un citat din stivă. Cotația se aplică fiecărui element al tabloului și rezultatele sunt returnate unui tablou din stivă. times ia un număr n și un citat din stivă. Cotația este apoi efectuată de n ori la rând. bi ia un obiect și două citate din stivă. Ambele ghilimele sunt aplicate obiectului și cele două rezultate sunt plasate pe stivă. dacă ia o valoare de adevăr și două citate din stivă. Dacă valoarea este adevărată , se efectuează prima cotație, în caz contrar a doua cotație.

Orientarea obiectului

Când vine vorba de orientarea obiectului, Factor adoptă concepte din sistemul de obiecte Common Lisp . Clasele și metodele sunt definite independent unul de celălalt.

TUPLE: rectangle width height ;
: <rectangle> ( width height -- rectangle ) rectangle boa ;

GENERIC: area ( object -- x )
M: rectangle area [ width>> ] [ height>> ] bi * ;

10 20 <rectangle> area

Pentru încapsularea datelor este definită o clasă de tupluri cu numele dreptunghi și lățimea și înălțimea celor două sloturi . Următorul cuvânt de construcție <dreptunghi> citește două numere din stivă și ocupă cele două sloturi cu ele. Metoda zonei definită pentru dreptunghi ia un obiect dreptunghiular din stivă și calculează aria. Dacă un tuple este pe stivă, datele pot fi citite cu slot >> și datele pot fi scrise în slotul obiectului cu >> slot .

Bibliotecă

O bibliotecă cuprinzătoare de funcții predefinite este inclusă în Factor . Există o interfață pentru bibliotecile C pentru extensii.

Ascultător

Image
Ascultător de factori 0.92

Ascultătorul este mediul de dezvoltare interactivă Factor. Tot ce introduceți este citit, compilat și, dacă este necesar, executat imediat. Cu control-h ajungi la ajutor cuprinzător și cu control-w poți parcurge fiecare linie într-un proces cu un singur pas. Toate definițiile aflate în prezent în memorie și codul compilat sunt salvate într-un fișier imagine cu salvare .

implementare

VM de factor este in C ++ scris. Cea mai mare parte a Factorului, precum analizorul și compilatorul, este scrisă în Factor în sine. Există implementări pentru FreeBSD , Linux , macOS și Windows , precum și procesoare x86 , x86-64 și PowerPC . La începutul proiectului VM a fost scris în Java . Aceasta a fost inițial înlocuită de o implementare în C datorită inferiorității sale tehnice .

Găzduire autonomă

Deoarece Factor în sine este scris în principal în Factor, sistemul de bază trebuie mai întâi creat cu o imagine de boot. O imagine de încărcare adecvată poate fi găsită pe pagina principală Factor.

$ factor -i=boot.<cpu>.image

Imaginea factor.image creată depinde de sistem și conține sistemul de bază al factorului, care este încărcat la fiecare pornire.

Link-uri web

Dovezi individuale

  1. Factor / Factor Java ( en ) În: concatenative.org . Adus la 23 mai 2012.