Fattore

Fattore
Paradigmi : multi-paradigmatico
Anno di pubblicazione: 2003
Progettista: Slava Pestov
Sviluppatore: Slava Pestov
Versione attuale  : 0.98   (31 luglio 2018)
Digitazione : dinamico
Influenzato da: Forth , Lisp , Smalltalk , Joy
Licenza : Licenza BSD
factorcode.org

Factor è un linguaggio di programmazione gratuito progettato da Slava Pestov e sviluppato dal 2003. Adotta concetti da Forth , Lisp e Smalltalk-80 . È pensato per essere il successore pratico di Joy e un'implementazione è disponibile con una licenza BSD .

Parole e pila

Tutte le funzioni leggono i loro argomenti dallo stack , scrivono i loro risultati nello stack e vengono chiamate parole . Un programma è una sequenza di lessicali per gli oggetti che sono posti nella pila e le parole che vengono applicate alla pila.

! Kommentar
2 3 + .

Per prima cosa, 2 e 3 vengono messi in pila. +  prende due numeri dalla pila e mette la somma dei due sulla pila. .  prende l'oggetto in cima alla pila e lo stampa. I commenti iniziano con  ! e vai alla fine della riga.

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

Le nuove parole sono definite con :. add2 aggiunge 2 al numero in cima alla pila.

Le parole sono riassunte in vocabolari . Con USE: è indicato, in cui le parole del vocabolario ricercate e IN: in cui sono memorizzate tutte le parole del vocabolario definite seguenti.

Qualsiasi oggetto come numeri, sequenze (array, vettori, stringhe, ...) ecc. Può essere posizionato sullo stack. Una rappresentazione lessicale è definita per tutti i tipi di oggetto.

SYMBOL: foo
"Hello" foo set
foo get

I nomi delle variabili vengono definiti con SYMBOL :, impostati con set e letti con get e memorizzati nello stack. La memoria per gli oggetti viene allocata e rilasciata automaticamente nuovamente dalla procedura di Garbage Collection .

Programmazione funzionale

Le funzioni anonime sono scritte tra parentesi quadre e vengono chiamate virgolette .

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

map prende un array e una citazione dallo stack. La citazione viene applicata a ogni elemento della matrice e i risultati vengono restituiti a una matrice nello stack. volte prende un numero n ed un offerta dalla pila. La quotazione viene quindi eseguita n volte di seguito. bi prende un oggetto e due citazioni dalla pila. Entrambe le virgolette vengono applicate all'oggetto ei due risultati vengono messi in pila. se prende un valore di verità e due citazioni dalla pila. Se il valore è vero , viene eseguita la prima citazione, altrimenti la seconda citazione.

Orientamento agli oggetti

Quando si parla di orientamento agli oggetti, factor adotta concetti dal Common Lisp Object System . Classi e metodi sono definiti indipendentemente l'uno dall'altro.

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

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

10 20 <rectangle> area

Per l'incapsulamento dei dati , viene definita una classe tupla con il nome rettangolo e la larghezza e l' altezza dei due slot . La seguente parola di costruzione <rettangolo> legge due numeri dalla pila e occupa i due slot con essi. Il metodo dell'area definito per il rettangolo prende un oggetto rettangolo dalla pila e calcola l'area. Se c'è un oggetto tupla sullo stack, i dati possono essere letti con slot >> e i dati possono essere scritti nello slot dell'oggetto con >> slot .

Biblioteca

Una libreria completa di funzioni predefinite è inclusa in Factor . C'è un'interfaccia per le librerie C per le estensioni.

Ascoltatore

Image
Factor Listener 0.92

L'ascoltatore è l' ambiente di sviluppo interattivo di Factor. Tutto ciò che inserisci viene letto, compilato e, se necessario, eseguito immediatamente. Con control-h ottieni una guida completa e con control-w puoi scorrere ogni riga in un unico passaggio. Tutte le definizioni attualmente in memoria e il codice compilato vengono salvati in un file immagine con save .

implementazione

La VM di Factor è scritta in C ++ . La maggior parte di Factor, come il parser e il compilatore, è scritto in Factor stesso. Ci sono implementazioni per FreeBSD , Linux , macOS e Windows così come i processori x86 , x86-64 e PowerPC . All'inizio del progetto la VM era scritta in Java . Questo è stato inizialmente sostituito da un'implementazione in C a causa della sua inferiorità tecnica .

Self hosting

Poiché Factor stesso è scritto principalmente in Factor, il sistema di base deve prima essere creato con un'immagine di avvio. Un'immagine di avvio adatta può essere trovata sulla homepage di Factor.

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

Il factor.image creato dipende dal sistema e contiene il sistema di base di Factor, che viene caricato ad ogni avvio.

link internet

Prove individuali

  1. Factor / Java Factor ( en ) In: concatenative.org . Estratto il 23 maggio 2012.