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
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
- sito ufficiale (inglese)
- Wiki about Factor (inglese)
- Istruzioni (inglese)
Prove individuali
- ↑ Factor / Java Factor ( en ) In: concatenative.org . Estratto il 23 maggio 2012.