Factor (limbaj de programare)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 11 martie 2018; verificările necesită 4 modificări .
factor
Clasa de limba Limbajul de programare concatenativ
Aparut in 2003
Autor Slava Pestov
Dezvoltator Pestov, Sviatoslav
Eliberare 0,98 ( 31 iulie 2018 )
Tip sistem dinamic , static
A fost influențat Bucurie , Forth , Lisp , Self
Licență Licență BSD
Site-ul web factorcode.org

Factor este un limbaj de programare concatenative  tip dinamic dezvoltat și implementat de Slava Pestov . Principalele influențe asupra limbajului Factor au fost limbajele de programare Joy , Forth , Lisp și Self .

Autorul definește Factor ca un „limbaj de programare practic bazat pe stivă”, factori importanți în determinarea direcției de dezvoltare a acestuia sunt performanța, bogăția mijloacelor expresive (în același timp menținând claritatea și consistența) și crearea unei biblioteci standard destul de cuprinzătoare.

Ca și alte limbaje concatenative , Factor are o sintaxă postfixă , ceea ce înseamnă că argumentele funcției sunt scrise înaintea numelui acesteia. De exemplu, Hello world în limbajul Factor este:

Imprimare „Bună lume”.

Factor este un limbaj tipizat dinamic cu un sistem de obiecte unic apropiat de CLOS . Factor are un set mic de tipuri de bază , iar utilizatorii și biblioteca standard își pot crea propriile clase folosind tupluri și alte mecanisme. Factorul sprijină moștenirea . Pe lângă clasele care sunt tupluri, există și alte mecanisme pentru crearea claselor ; Factor acceptă clase de predicate (subseturi ale unei anumite clase pentru care este îndeplinită o condiție de predicat) și clase de uniune . Tipurile de date compuse încorporate în Factor includ vectori cu lungime fixă ​​și variabilă și tabele hash . La fel ca limbaje precum Common Lisp și Python , Factor acceptă un set bogat de tipuri de date aritmetice: numere întregi simple, numere întregi de lungime nelimitată, numere în virgulă mobilă. Numerele complexe , fracțiile (numerele raționale) sunt implementate în biblioteca standard. Biblioteca standard implementează, de asemenea , liste legate , matrice de valori tipizate static [1] și alte structuri de date.

Unul dintre obiectivele principale ale lui Factor este acela de a fi utilizat în dezvoltarea iterativă bazată pe teste , astfel încât nucleul lui Factor poate fi considerat un dialect sigur al Forth . Deși Factor este un limbaj tipizat dinamic, compilatorul are acces la adâncimea stivei unui cuvânt (funcție).

Implementare

Prima implementare publică a lui Factor a fost scrisă în Java , însă, pentru a crește eficiența, a fost rescrisă ulterior în C (și apoi, în mai 2009, în C++ [2] ), versiunea Java a fost abandonată. Cantitatea de cod C în implementarea limbajului scade treptat, iar codul factor crește în consecință.

Factor a fost inițial un limbaj pur interpretat , dar acum este implementat pe deplin ca compilator (un compilator neoptimizator derulează în esență bucla de interpretare [3] [4] ), interpretul este reținut doar pentru a oferi un mod interactiv de operare). Compilatorul de optimizare la codul nativ este, de asemenea, scris în întregime în Factor. Nu produce executabile autonome, dar generează cod nativ care este salvat într-un fișier imagine. Aceste imagini rulează cu o suprasarcină minimă folosind o mașină virtuală. Subsistemul de implementare (deploying) vă permite să generați un fișier executabil independent din program [5] . Implementarea Factor a fost puternic influențată de Steel Bank Common Lisp [6] .

Cea mai recentă versiune stabilă este datată 20 aprilie 2013 și are numărul 0.96 [7] . De asemenea, în timp ce versiunea 1.0 este încă în dezvoltare, Continuous Builds sunt publicate în mod regulat pentru toate platformele acceptate [8] .

Între lansarea versiunilor 0.91 [9] și versiunea 0.92 [10] care a urmat-o , au trecut aproximativ 2 ani de dezvoltare activă a limbajului (cu lansarea versiunilor intermediare). În acest timp, s-au făcut modificări semnificative atât în ​​centrul limbajului în sine, cât și în bibliotecile din jurul acestuia (în special, toate lucrările cu șiruri de caractere au fost transferate la Unicode cu suport pentru UTF-8 și UTF-16 ). [zece]

Bibliotecă standard

Factor are o bibliotecă în evoluție cu suport pentru dicționare , continuări , un server HTTP și un cadru web atașat , un wrapper OpenGL , o bibliotecă GUI , un parser XML etc.

Note

  1. Matrice de valori primitive necutie și un Mersenne Twister mai rapid . Consultat la 5 martie 2009. Arhivat din original pe 6 februarie 2009.
  2. Factor VM portat în C++ . Consultat la 15 ianuarie 2010. Arhivat din original la 14 mai 2009.
  3. Compilarea pe două niveluri vine la Factor . Consultat la 5 martie 2009. Arhivat din original la 14 septembrie 2008.
  4. Revizuirea compilatorului . Consultat la 5 martie 2009. Arhivat din original la 12 ianuarie 2008.
  5. Implementarea aplicațiilor autonome pe Windows . Consultat la 5 martie 2009. Arhivat din original pe 9 iulie 2008.
  6. Lisp pe concatenative.org . Consultat la 5 martie 2009. Arhivat din original pe 22 februarie 2009.
  7. Factorul 0,96 acum disponibil . Consultat la 18 mai 2013. Arhivat din original pe 26 mai 2013.
  8. Factorul de obținere . Data accesului: 5 martie 2009. Arhivat din original la 24 februarie 2009.
  9. Factorul 0,91 acum disponibil . Data accesului: 19 iulie 2010. Arhivat din original pe 29 noiembrie 2010.
  10. 12 Factorul 0,92 acum disponibil . Consultat la 23 februarie 2010. Arhivat din original pe 19 februarie 2010.

Literatură

Link -uri