Programspesialisering
Programspesialisering, eller program specialization, er en teknikk innen programvareutvikling der man genererer en mer spesialisert og ofte raskere versjon av et program ved å utnytte kjente inngangs- eller kontekstopplysninger. Prosessen flytter beregninger fra kjøringstid til kompileringstid ved å fjerne generisk overhead som gjelder for alle mulige innganger, og dermed skape et residualprogram som tar de gjenstående inngangene som parametere.
Grunntanken er delvis evaluering. Bindingstidsanalyse bestemmer hvilke deler av programmet som kan evalueres på forhånd når
Tilnærminger inkluderer delvis evaluering, ofte i kombinasjon med teknikker som deforestering i funksjonelle språk og andre
Anvendelser inkluderer optimering av tolke- og virtuelle maskinkonsepter, generering av spesialiserte biblioteker eller domenespesifikke språkversjoner, samt
Utfordringer omfatter risiko for kodevekst (kodeeksplosjon), behov for riktig bindingstidsanalyse for å sikre korrekthet og terminering,
---