Andmetüüp on informaatikas teatud tüüpi andmete klassifikatsioon või kategooria, mis tavaliselt tähendab võimalike väärtuste hulka; operatsioone, mida saab nende väärtustega läbi viia ja/või viis esindada neid väärtuseid masinatüüpidena.[1] Andmetüübi spetsifikatsioon programmis kitsendab võimalikke väärtusi, mida väljend, nagu näiteks funktsioon või muutuja võib võtta. Enamik programmeerimiskeeli toetavad andmete alustüüpe, näiteks eri suuruses täisarve, ujukomaarve, mis esindavad reaalarve, tähemärke, tõeväärtuseid (Booli väärtuseid) ja sõnesid, mis esindavad teksti.

Kirjeldus muuda

Andmetüüpe spetsifitseeritakse paljudel põhjustel, olgu see sarnasus, mugavus või tähelepanu fokuseerimine. Andmetüübid aitavad kompilaatoritel ka mälu ja masinakoodi efektiivsemalt kasutada. Sageli on see viis koodi organiseerida ning aitab paremini mõista keerulisi definitsioone. Peaaegu kõigil programmeerimiskeeltel on arusaam andmetüüpidest, kuigi võimalikud andmetüübid on sageli piiratud lihtsuse, arvutatavuse või regulaarsuse kaalutlustel. Väljakirjutatud andmetüüp lubab kompilaatoril valida efektiivse viisi esindada väärtust masinas.[2]

Erinevad keeled võivad kasutada erinevaid andmetüüpe või sarnaseid andmetüüpe erineva semantikaga. Näiteks Pythoni programmeerimiskeeles esindab int vaba täpsusega täisarvu, millel on tavalised operatsioonid nagu liitmine, lahutamine ja korrutamine. See-eest näiteks Java programmeerimiskeeles esindab int 32-bitiste täisarvude hulka, mille võimalikud väärtused on kõik arvud arvust -2,147,483,648 kuni 2,147,483,647 (kokku   võimalikku väärtust) aritmeetiliste operatsioonidega, mis piirarvust ülemineku korral viib väärtuse numbriskaala teisele poole ümber. See tähendab, et kui näiteks liita arv 1 kõige suuremale võimalikule väärtusele, on tulemuseks kõige väiksem võimalik väärtus. Rust keeles on selle tüübi nimeks i32 ja see tekitab ülemineku korral "debug"-režiimis programmis paanika.[3]

Viited muuda

  1. Parnas, Shore & Weiss 1976.
  2. Scott, Dana (september 1976). "Data Types as Lattices". SIAM Journal on Computing. 5 (3): 540–541. DOI:10.1137/0205037.
  3. "Rust RFCs - Integer Overflow". The Rust Programming Language. 12. august 2022.