Faktor
| Faktor | |
|---|---|
| Paradigmer : | multi-paradigmatisk |
| Utgivelsesår: | 2003 |
| Designer: | Slava Pestov |
| Utvikler: | Slava Pestov |
| Gjeldende versjon : | 0,98 (31. juli 2018) |
| Skrive : | dynamisk |
| Påvirket av: | Forth , Lisp , Smalltalk , Joy |
| Lisens : | BSD-lisens |
| factorcode.org | |
Factor er et gratis programmeringsspråk designet av Slava Pestov og utviklet siden 2003. Den vedtar konsepter fra Forth , Lisp og Smalltalk-80 . Det er ment å være en praktisk etterfølger til Joy, og en implementering er tilgjengelig under en BSD-lisens .
Ord og stabel
Alle funksjoner leser argumentene sine fra bunken , skriver resultatene til bunken og blir referert til som ord . Et program er en sekvens med leksikaler for objekter som plasseres på bunken og ord som brukes på bunken.
! Kommentar
2 3 + .
Først settes 2 og 3 på bunken. + Tar to tall fra stabelen og legger summen av de to på stabelen. . tar toppobjektet fra bunken og skriver det ut. Kommentarer starter med ! og gå til slutten av linjen.
: add2 ( n -- n' ) 2 + ;
5 add2
Nye ord defineres med :. add2 legger til 2 til toppnummeret på bunken.
Ord er oppsummert i vokabular . Med USE: er angitt, der søkte ordforrådsord og IN: der alle definerte ordforrådsord er lagret.
Eventuelle objekter som tall, sekvenser (matriser, vektorer, strenger, ...) osv. Kan plasseres på bunken. En leksikal representasjon er definert for alle objekttyper.
SYMBOL: foo
"Hello" foo set
foo get
Navn på variabler er definert med SYMBOL :, sett med sett og lest ut med get og lagret på bunken. Minne til objektene tildeles automatisk og frigjøres igjen ved søppeloppsamling .
Funksjonell programmering
Anonyme funksjoner er skrevet i parentes og blir referert til som sitater .
{ 1 2 3 } [ 3 + ] map
10 [ "Hello world" print ] times
4 [ 2 + ] [ 3 * ] bi
10 0 < [ "yes" print ] [ "no" print ] if
kart tar en matrise og et sitat fra bunken. Tilbudet blir brukt på hvert element i matrisen, og resultatene returneres til en matrise på bunken. ganger tar et tall n og et sitat fra bunken. Sitatet blir deretter utført n ganger på rad. bi tar et objekt og to sitater fra bunken. Begge sitatene blir brukt på objektet, og de to resultatene plasseres på bunken. hvis tar en sannhetsverdi og to sitater fra bunken. Hvis verdien er sann , blir det første tilbudet utført, ellers det andre tilbudet.
Objektorientering
Når det gjelder objektorientering, vedtar Factor konsepter fra Common Lisp Object System . Klasser og metoder defineres uavhengig av hverandre.
TUPLE: rectangle width height ;
: <rectangle> ( width height -- rectangle ) rectangle boa ;
GENERIC: area ( object -- x )
M: rectangle area [ width>> ] [ height>> ] bi * ;
10 20 <rectangle> area
En dataklasse med navnet rektangel og de to sporene bredde og høyde er definert for datakapsling . Det følgende konstruksjonsordet <rectangle> leser to tall fra bunken og opptar de to sporene med dem. Arealmetoden som er definert for rektangel, tar et rektangelobjekt fra stabelen og beregner området. Hvis et tupleobjekt er på bunken, kan dataene leses ut med spor >> og dataene kan skrives inn i sporet til objektet med >> spor .
Bibliotek
Et omfattende bibliotek med forhåndsdefinerte funksjoner er inkludert i Factor . Det er et grensesnitt til C-biblioteker for utvidelser.
Lytter
Lytteren er Faktors interaktive utviklingsmiljø . Alt du skriver inn blir lest, samlet og om nødvendig utført umiddelbart. Med control-h kommer du til omfattende hjelp, og med control-w kan du gå gjennom hver linje i en enkelt-trinns prosess. Alle definisjoner som er i minnet og den kompilerte koden lagres i en bildefil med lagre .
gjennomføring
Den VM av faktor er i C ++ skrevet. Det meste av Factor, som parser og kompilator, er skrevet i Factor selv. Det er implementeringer for FreeBSD , Linux , macOS og Windows samt prosessorene x86 , x86-64 og PowerPC . I begynnelsen av prosjektet ble VM skrevet på Java . Dette ble opprinnelig erstattet av en implementering i C på grunn av teknisk underlegenhet .
Selvhotell
Siden Factor i seg selv hovedsakelig er skrevet i Factor, må basesystemet først opprettes med et oppstartsbilde. Et passende oppstartsbilde finner du på Factor-hjemmesiden.
$ factor -i=boot.<cpu>.image
Den opprettet factor.image avhenger av systemet og inneholder det grunnleggende systemet for Factor, som lastes inn ved hver start.
weblenker
- offisiell nettside (engelsk)
- Wiki om faktor (engelsk)
- Instruksjoner (engelsk)
Individuelle bevis
- ↑ Factor / Java Factor ( en ) I: concatenative.org . Hentet 23. mai 2012.