Faktor (programmeringssprog)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 11. marts 2018; checks kræver 4 redigeringer .
faktor
Sprog klasse Konkatenativt programmeringssprog
Dukkede op i 2003
Forfatter Slava Pestov
Udvikler Pestov, Svyatoslav
Frigøre 0,98 ( 31. juli 2018 )
Type system dynamisk , statisk
Blev påvirket Joy , Forth , Lisp , Self
Licens BSD-licens
Internet side factorcode.org

Factor  er et dynamisk skrevet sammenkædet programmeringssprog udviklet og implementeret af Slava Pestov . De vigtigste påvirkninger på Factor-sproget var programmeringssprogene Joy , Forth , Lisp og Self .

Forfatteren definerer Factor som et "praktisk stack-baseret programmeringssprog", vigtige faktorer for at bestemme retningen for dets udvikling er ydeevne, rigdom af udtryksmidler (samtidig med at klarhed og konsistens bevares) og skabelsen af ​​et ret omfattende standardbibliotek.

Ligesom andre sammenkædede sprog har Factor en postfix - syntaks, hvilket betyder, at funktionens argumenter er skrevet før dens navn. For eksempel er Hello world på Factor-sproget:

"Hej verden" print

Factor er et dynamisk skrevet sprog med et unikt objektsystem tæt på CLOS . Factor har et lille sæt af basistyper , og brugere og standardbiblioteket kan oprette deres egne klasser ved hjælp af tupler og andre mekanismer. Faktoren understøtter arv . Ud over klasser, der er tupler, er der andre mekanismer til at skabe klasser ; Faktor understøtter prædikatklasser (undermængder af en bestemt klasse, for hvilke en prædikatbetingelse er opfyldt) og fagforeningsklasser . Factors indbyggede sammensatte datatyper omfatter vektorer med fast og variabel længde og hashtabeller . Ligesom sprog som Common Lisp og Python understøtter Factor et rigt sæt af aritmetiske datatyper: simple heltal, heltal med ubegrænset længde, flydende kommatal. Komplekse tal , brøker (rationale tal) er implementeret i standardbiblioteket. Standardbiblioteket implementerer også linkede lister , arrays af statisk indtastede værdier [1] og andre datastrukturer.

Et af Factors hovedmål er at blive brugt i iterativ testdrevet udvikling , så Factors kerne kan betragtes som en sikker dialekt af Forth . Selvom Factor er et dynamisk skrevet sprog, har compileren adgang til stakdybden af ​​et ord (funktion).

Implementering

Den første offentlige implementering af Factor blev skrevet i Java , men for at øge effektiviteten blev den senere omskrevet i C (og så, i maj 2009, i C++ [2] ), Java-versionen blev opgivet. Mængden af ​​C-kode i implementeringen af ​​sproget er gradvist faldende, og Faktor-koden vokser tilsvarende.

Factor var oprindeligt et rent fortolket sprog, men er nu fuldt implementeret som en compiler (en ikke-optimerende compiler udruller i det væsentlige fortolkningssløjfen [3] [4] ), tolken bibeholdes kun for at give en interaktiv funktionsmåde). Den optimerende compiler til native kode er også skrevet helt i Factor. Det producerer ikke selvstændige eksekverbare filer, men genererer indbygget kode , der gemmes i en billedfil. Disse billeder kører med minimal overhead ved hjælp af en virtuel maskine. Implementeringsundersystemet (deployering) giver dig mulighed for at generere en selvstændig eksekverbar fil fra programmet [5] . Implementeringen af ​​Factor var stærkt påvirket af Steel Bank Common Lisp [6] .

Den seneste stabile udgivelse er dateret 20. april 2013 og har nummeret 0,96 [7] . Mens version 1.0 stadig er under udvikling, udgives Continuous Builds regelmæssigt for alle understøttede platforme [8] .

Mellem udgivelsen af ​​version 0.91 [9] og version 0.92 [10] , der fulgte den , gik der omkring 2 års aktiv udvikling af sproget (med udgivelsen af ​​mellemliggende builds). I løbet af denne tid blev der foretaget væsentlige ændringer både i selve sprogets kerne og i bibliotekerne omkring det (især alt arbejde med strenge blev overført til Unicode med understøttelse af UTF-8 og UTF-16 ). [ti]

Standardbibliotek

Factor har et bibliotek i udvikling med understøttelse af ordbøger , fortsættelser , en HTTP-server og en tilknyttet webramme , en OpenGL - indpakning, et GUI- bibliotek, en XML - parser osv.

Noter

  1. Arrays af primitive værdier uden boks og en hurtigere Mersenne Twister . Hentet 5. marts 2009. Arkiveret fra originalen 6. februar 2009.
  2. Faktor VM overført til C++ . Hentet 15. januar 2010. Arkiveret fra originalen 14. maj 2009.
  3. To-tier compilation kommer til Factor . Hentet 5. marts 2009. Arkiveret fra originalen 14. september 2008.
  4. ↑ Overhaling af compiler . Hentet 5. marts 2009. Arkiveret fra originalen 12. januar 2008.
  5. Implementering af selvstændige applikationer på Windows . Hentet 5. marts 2009. Arkiveret fra originalen 9. juli 2008.
  6. Lisp på concatenative.org . Hentet 5. marts 2009. Arkiveret fra originalen 22. februar 2009.
  7. Faktor 0,96 er nu tilgængelig . Hentet 18. maj 2013. Arkiveret fra originalen 26. maj 2013.
  8. At få faktor . Dato for adgang: 5. marts 2009. Arkiveret fra originalen 24. februar 2009.
  9. Faktor 0,91 er nu tilgængelig . Dato for adgang: 19. juli 2010. Arkiveret fra originalen den 29. november 2010.
  10. 12 Faktor 0,92 nu tilgængelig . Hentet 23. februar 2010. Arkiveret fra originalen 19. februar 2010.

Litteratur

Links