Jokaisella ohjelmointikielessä käsitellyllä arvolla (=
[tieto tiedolla ([tieto eli data]) on jokin tyyppi.
Esimerkiksi arvon 3 tyyppi on [luku] ja arvon "heipsis" tyyppi on
[merkkijono]. Jokainen tyyppi on yksinkertainen [tietorakenne].
Tietorakenne on (tietokoneen näkökulmasta) rakenne, joka pystyy
pitämään sisällään tietynlaista tietoa; ohjelmoijan
[tietorakenne] ja määrittää, minkälaista tietoa kyseisentyyppiset
arvot voivat sisältää. Esimerkiksi luku ei voi olla "fioo" eikä
merkkijonoon voi upottaa listaa.
Ohjelmoijan näkökulmasta se on rakenne, jota
käytetään tietyntyyppisen tyyppi määrittyy kahdella tavalla.
Ensinnäkin tiedolla on ''eksplisiittinen'' tyyppi: ohjelmointikieli
pitää kirjaa siitä, mitä tyyppiä mikin tieto on. Pythonilla
eksplisiittisen tyypin saa selville mistä tahansa tiedosta funktiolla
type(). Toisaalta semanttisessa mielessä tiedon
käsittelyyn.
Tietorakenteita on kahdentyyppisiä, sisäänrakennettuja eli
primitiivisiä:
* [luku] * [totuusarvo] * [merkkijono] * [lista] *
[hajautus] tyypin määrittää se, mitä kyseisellä tiedolla voi
tehdä: esimerkiksi lukuja voi laskea yhteen, vähentää ja niin edelleen,
merkkijonoja muuntaa isoiksi tai pieniksi kirjaimiksi, jokaista
[kokoelma]a voi pätkiä ja niin edelleen.
Sekä näitä yhdistelemällä saatuja, monimutkaisempia
tietorakenteita. Joissakin ohjelmointikielissä pystyy
määrittämään ''uusia tyyppejä'', mikä merkitsee, että
ohjelmointikielen toteutuskin tietää, että tietorakenteenne
uudentyyppisten tietojen eksplisiittinen tyyppi on erillinen
kaikista muista tietorakenteista (= tyypeistä); joskus
taas luomme vanhoja tietorakenteita yhdistelemällä uuden, joka
kuitenkaan ei ole ohjelmointikielen näkökulmasta uusi tyyppi.
Esimerkiksi jos esitämme lausetta sanojen listalla, ohjelmointikielen
näkökulmasta kyseessä on yksinkertaisesti [lista], vaikka me
tiedämmekin, että tuo lista sisältää nimenomaan lauseen sanoja.
tyypeistä.
[...]