Faktor

Faktor
Paradigmer : multiparadigmatisk
Publiceringsår: 2003
Designer: Slava Pestov
Utvecklaren: Slava Pestov
Aktuell  version : 0,98   (31 juli 2018)
Skriva : dynamisk
Påverkad av: Forth , Lisp , Smalltalk , Joy
Licens : BSD-licens
factorcode.org

Factor är ett gratis programmeringsspråk designat av Slava Pestov och utvecklat sedan 2003. Det antar koncept från Forth , Lisp och Smalltalk-80 . Det är tänkt att vara en praktisk efterträdare till Joy och en implementering är tillgänglig under en BSD-licens .

Ord och stack

Alla funktioner läser sina argument från stacken , skriver deras resultat till stacken och kallas ord . Ett program är en sekvens av lexikaler för objekt som placeras på stacken och ord som appliceras på stacken.

! Kommentar
2 3 + .

Först läggs 2 och 3 på stacken. +  tar två nummer från stacken och lägger summan av de två på stacken. .  tar toppobjektet från stacken och skriver ut det. Kommentarer börjar med  ! och gå till slutet av raden.

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

Nya ord definieras med :. add2 lägger till 2 till toppnumret på stacken.

Ord sammanfattas i ordförråd . Med ANVÄNDNING: indikeras, där sökta ordförrådsord och IN: där alla definierade ordförrådsord lagras.

Alla objekt som siffror, sekvenser (matriser, vektorer, strängar, ...) etc. kan placeras på stacken. En lexikal representation definieras för alla objekttyper.

SYMBOL: foo
"Hello" foo set
foo get

Namn på variabler definieras med SYMBOL : , med set och läst ut med get och lagrat på stacken. Minne för objekten allokeras automatiskt och släpps igen genom sopuppsamling .

Funktionell programmering

Anonyma funktioner skrivs inom hakparentes och kallas citat .

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

map tar en matris och ett citat från stacken. Citatet tillämpas på varje element i matrisen och resultaten returneras till en matris i stacken. gånger tar ett nummer n och ett citat från stacken. Offertet genomförs sedan n gånger i rad. bi tar ett objekt och två citat från stacken. Båda offerten tillämpas på objektet och de två resultaten läggs på stacken. if tar ett sanningsvärde och två citat från stacken. Om värdet är sant utförs det första offertet, annars det andra offertet.

Objektorientering

När det gäller objektorientering antar Factor begrepp från Common Lisp Object System . Klasser och metoder definieras oberoende av varandra.

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

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

10 20 <rectangle> area

För datakapsling definieras en tupleklass med namnet rektangel och de två platserna bredd och höjd . Följande konstruktionsord <rektangel> läser två siffror från stacken och upptar de två platserna med dem. Det område Metoden definierad för rektangel tar en rektangel objekt från stapeln och beräknar arean. Om det finns ett tupelobjekt på stacken kan data läsas ut med kortplats >> och data kan skrivas in i kortplatsen för objektet med >> kortplats .

Bibliotek

Ett omfattande bibliotek med fördefinierade funktioner ingår i Factor . Det finns ett gränssnitt till C-bibliotek för tillägg.

Lyssnare

Image
Faktorlyssnare 0,92

Lyssnaren är Faktors interaktiva utvecklingsmiljö . Allt du anger läses, sammanställs och vid behov körs omedelbart. Med kontroll-h kommer du till omfattande hjälp och med kontroll-w kan du gå igenom varje rad i en enstegsprocess. Alla definitioner för närvarande i minnet och den kompilerade koden sparas i en bildfilen med save .

genomförande

Den VM av faktor är i C ++ skrivas. Det mesta av Factor, som parser och kompilator, är skrivet i Factor själv. Det finns implementeringar för FreeBSD , Linux , macOS och Windows samt processorerna x86 , x86-64 och PowerPC . I början av projektet skrevs den virtuella datorn i Java . Detta ersattes ursprungligen av en implementering i C på grund av dess tekniska underlägsenhet .

Egen värd

Eftersom faktorn i sig huvudsakligen är skriven i faktor måste bassystemet först skapas med en startavbild. En lämplig startbild finns på Faktors hemsida.

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

Den skapade factor.image beror på systemet och innehåller det grundläggande systemet för Factor, som laddas vid varje start.

webb-länkar

Individuella bevis

  1. Faktor / Java-faktor ( sv ) I: concatenative.org . Hämtad 23 maj 2012.