Facteur

Facteur
Paradigmes : multi-paradigmatique
Année d'édition: 2003
Designer: Slava Pestov
Développeur: Slava Pestov
Version actuelle  : 0,98   (31 juillet 2018)
Taper : dynamique
Influencé par: Forth , Lisp , Smalltalk , Joy
Licence : Licence BSD
factorcode.org

Factor est un langage de programmation gratuit conçu par Slava Pestov et développé depuis 2003. Il adopte les concepts de Forth , Lisp et Smalltalk-80 . Il est destiné à être le successeur pratique de Joy et une implémentation est disponible sous une licence BSD .

Mots et pile

Toutes les fonctions lisent leurs arguments depuis la pile , écrivent leurs résultats dans la pile et sont appelées mots . Un programme est une séquence de lexicaux pour les objets qui sont placés sur la pile et les mots qui sont appliqués à la pile.

! Kommentar
2 3 + .

Tout d'abord, 2 et 3 sont mis sur la pile. +  prend deux nombres de la pile et met la somme des deux sur la pile. .  prend l'objet supérieur de la pile et l'imprime. Les commentaires commencent par  ! et allez au bout de la ligne.

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

Les nouveaux mots sont définis avec :. add2 ajoute 2 au nombre supérieur de la pile.

Les mots sont résumés dans des vocabulaires . Avec USE: est indiqué, dans lequel les mots de vocabulaire recherchés et IN: dans lequel tous les mots de vocabulaire définis suivants sont stockés.

Tous les objets tels que les nombres, les séquences (tableaux, vecteurs, chaînes, ...) etc. peuvent être placés sur la pile. Une représentation lexicale est définie pour tous les types d'objets.

SYMBOL: foo
"Hello" foo set
foo get

Les noms des variables sont définis avec SYMBOL :, set avec set et lus avec get et stockés sur la pile. La mémoire des objets est automatiquement allouée et libérée à nouveau par le garbage collection .

Programmation fonctionnelle

Les fonctions anonymes sont écrites entre crochets et sont appelées guillemets .

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

map prend un tableau et une citation de la pile. La citation est appliquée à chaque élément du tableau et les résultats sont renvoyés dans un tableau de la pile. times prend un nombre n et une citation de la pile. La cotation est alors effectuée n fois de suite. bi prend un objet et deux citations de la pile. Les deux citations sont appliquées à l'objet et les deux résultats sont placés sur la pile. if prend une valeur de vérité et deux citations de la pile. Si la valeur est vraie , la première cotation est effectuée, sinon la seconde cotation.

Orientation de l'objet

En ce qui concerne l'orientation des objets, Factor adopte les concepts du Common Lisp Object System . Les classes et les méthodes sont définies indépendamment les unes des autres.

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

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

10 20 <rectangle> area

Pour l'encapsulation des données , une classe de tuple avec le nom rectangle et les deux emplacements largeur et hauteur est définie. Le mot de construction suivant <rectangle> lit deux nombres de la pile et occupe les deux emplacements avec eux. La méthode d' aire définie pour le rectangle prend un objet rectangle de la pile et calcule l'aire. S'il y a un objet tuple sur la pile, les données peuvent être lues avec l' emplacement >> et les données peuvent être écrites dans l'emplacement de l'objet avec >> emplacement .

Bibliothèque

Une bibliothèque complète de fonctions prédéfinies est incluse dans Factor . Il existe une interface vers les bibliothèques C pour les extensions.

Auditeur

Image
Auditeur de facteur 0,92

L'auditeur est l' environnement de développement interactif de Factor. Tout ce que vous entrez est lu, compilé et, si nécessaire, exécuté immédiatement. Avec control-h, vous obtenez une aide complète et avec control-w, vous pouvez parcourir chaque ligne en une seule étape. Toutes les définitions actuellement en mémoire et le code compilé sont enregistrés dans un fichier image avec save .

la mise en oeuvre

La VM de Factor est écrite en C ++ . La plupart de Factor, comme l'analyseur et le compilateur, est écrit dans Factor lui-même. Il existe des implémentations pour FreeBSD , Linux , macOS et Windows ainsi que les processeurs x86 , x86-64 et PowerPC . Au début du projet, la VM était écrite en Java . Cela a été initialement remplacé par une implémentation en C en raison de son infériorité technique .

Auto-hébergement

Puisque Factor est principalement écrit dans Factor lui-même, le système de base doit d'abord être créé avec une image de démarrage. Une image de démarrage appropriée est disponible sur la page d'accueil de Factor.

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

L'image factor.image créée dépend du système et contient le système de base de Factor, qui est chargé à chaque démarrage.

liens web

Preuve individuelle

  1. Factor / Java Factor ( en ) Dans: concatenative.org . Récupéré le 23 mai 2012.