Home

Tüübisüsteemid

Tüübisüsteemid on programmeerimiskeelte osa, mis kirjeldab ja kontrollib andmete tüüpide kasutamist. Tüüp määrab andmete vormi ja käitumise, näiteks täisarv, loend või funktsioon, mis võtab argumente ja tagastab väärtusi. Tüübisüsteemid aitavad tuvastada vigu varakult, suurendavad koodi turvalisust ja võimaldavad kompilaatoril või tõlgil paremini optimeerida.

Peamised klassifikatsioonid on statiline ja dünaamiline tüübikontroll. Statiline tüübikontroll kontrollib tüübid koodi kompileerimise ajal; dünaamiline kontroll

Olulised mõisted on tüübikontroll, tüübinfereerimine, polüomorfism ja generics. Infereerimine võimaldab kompilaatoril välja arvutada tüübi ilma eksplitsiitsest

Näited keeltest: Haskell ja OCaml on tuntud tugeva statilise tüübikontrolli ja laialdaselt kasutatava tüübinfereerimise poolest (Hindley–Milneri

Tüübisüsteemid suurendavad arenduse kvaliteeti ja hooldatavust ning aitavad vigade varajast avastamist, kuid keerukad süsteemid võivad suurendada

teostub
jooksuaeg.
Tugevuse
osas
võib
eristada
tugevat
tüübikontrolli
ja
nõrgemat.
Tüüpide
kirjeldamisel
on
kasutusel
nominaalne
tüüp
(nimi
alusel)
ja
struktuurne
tüüp
(tüüpide
struktuuri
ja
liikmete
alusel).
märkimisest.
Polüomorfism
võimaldab
sama
funktsiooni
või
operatsiooni
kasutada
erinevate
tüüpidega.
Genericsid
lubavad
kirjutada
üldistatud
koodi,
mis
töötab
erinevate
tüüpidega
(nt
loendid).
Subtyping
võimaldab
ühe
tüübi
olla
teises
alamliik
ning
pakub
paindlikkust
tüübivahetuse
korral.
süsteem).
Rusti
tüübikeem
on
samuti
tugev
ja
statiline,
kasutades
generics
ja
trait’e.
Java
ja
C#
on
nominaalse
tüübiga
keeled,
kus
tüübid
ja
alamklassid
on
seotud
hierarhiaga;
TypeScript
pakub
nii
staatilist
kui
ka
struktuurset
tüübikontrolli,
mis
peegeldab
JavaScripti.
Dünaamilised
keeled
nagu
Python
ja
Ruby
kasutavad
peamiselt
dünaamilist
kontrolli,
kuid
neile
lisatakse
valikulised
tüüpimärgendid.
töökoormust
ja
piirata
paindlikkust.
Tüübisüsteemid
on
keskne
tööriist
tarkvara
kvaliteedi
tagamisel
ning
nende
valik
sõltub
keele
eesmärkidest
ja
arenduskontekstist.