Tarkvara
Tarkvara ehk arvuti tarkvara on masinloetav juhend, mis suunab arvuti protsessorit spetsiifilisi toiminguid sooritama. Tarkvara hõlmab kõiki mittefüüsilisi arvuti tööks vajalikke või rakenduslikke komponente, eelkõige arvutiprogramme ning nende andmeid – andmefaile, seadeid, dokumentatsiooni, jne. Tarkvara mõistet kasutatakse vastandina arvuti riistvara mõistele, need on arvuti füüsilised seadmed ja ühendused (näiteks protsessor), millel on tarkvara talletatud ja mis teostavad antud juhised. Arvuti riist- ja tarkvara vajavad üksteist ja kumbagi ei saa reaalselt kasutada ilma teiseta. "Tarkvara" on üldine termin. See võib viidata kõikidele arvuti juhistele üldiselt või mistahes konkreetsele juhisele. See hõlmab nii masinjuhiseid (kahendkood, mida protsessor "Mõistab") kui ka lähtekoodist (inimesele arusaadavamad juhendid, mis tuleb enne käivitamist tõlkida masinkoodi). Arvuti tarkvara on komplekt programme, protseduure, funktsioone, seotud andmeid ja nende dokumentatsioone, kui võimalik. Programmi tarkvara täidab rakendatava programmi ülesande, kas andes juhised otse digitaalsele elektroonikale või töötavad sisendina mõne teise tarkvara jaoks. Erinevalt riistvarast on käivitatav tarkvara salvestatud andmetena arvuti süsteemis ning seega ei saa seda füüsiliselt puudutada. Madalaimal tasandil käivitatav kood koosneb masinkeelsetest juhistest, mis on spetsiifilised ühele individuaalsele protsessorile. Masinkeel koosneb kahendväärtuste rühmadest, mis tähistavad protsessori juhiseid, mis muudavad arvuti olekut. Näiteks võib mõni juhis muuta konkreetsesse kohta salvestatud väärtuse (mida kasutaja silmaga ei näe) või (kaudselt) panna arvuti ekraanile ilmuma mõne objekti (mida näeb kasutaja ka ise). Protsessor täidab juhiseid nende esitatud järjekorras, välja arvatud olukorras, kui tal on kästud "hüpata" mõnele teisele käsule või kui toiming on katkestatud. Tarkvara on tavaliselt kirjutatud kõrgetasemelises programmeerimiskeeles, mida on inimestel lihtsam ja tõhusam kasutada (sarnaneb rohkem loomuliku keelega) kui masinkeelt. Kõrgetasemelised keeled on koostatud või tõlgitakse masinkeele objektikoodi. Tarkvara võib olla kirjutatud ka assemblerkeeles, sisuliselt meeldejäävam variant masinkeelest, kasutades loomuliku keele tähestikku. Assemblerkeel tuleb koostada objektikoodi koostaja (assembler) abil.