Forrit

**Forrit** er safn skipana sem lýsa verkefni eða verkefnum sem tölva á að vinna.

Með orðinu „forrit“ er átt við frumkóða sem ritaður er á forritunarmáli eða keyrslukóða sem gerður hefur verið eftir því. Tölvuforrit eru oftast nefnd hugbúnaður eða keyrsluforrit eða bara einfaldlega „forrit“. Frumkóði flestra tölvuforrita er röð skipana sem eiga að framkvæma skrefin í reikniritum á beinan hátt. Í öðrum forritum er því sem framkvæma á lýst þannig að viðkomandi verkvangur (enska: „platform“) geti séð um það.

Forrit eru oft rituð af forriturum, en einnig geta önnur forrit búið þau til.

## Orðasafn
Forrit sem látin eru notendum í té eru nefnd notendahugbúnaður þar sem virkni þeirra beinist að því sem á að nota tölvuna í, umfram það sem stýrikerfi hennar (til dæmis Windows) sér um. Í raun og veru kallast bæði notendahugbúnaður og stýrikefið „hugbúnaður“, rétt eins og safn ýmssa forritaþátta sem er innbyggt í vélbúnaðinn. Þau forrit sem gefa vélbúnaðinum beinar skipanir eru á formi sem örgjörvinn skilur og bregst við með því að virkja aðrar skipanir eða framkvæma einfaldar reikniaðgerðir eins og til dæmis samlagningu. En tölvur framkvæma milljónir slíkra skipana á sekúndu og það er þannig heild sem forritið lætur verða til - skipanir sem hver á fætur annarri gera eitthvað gagnlegt í sameiningu og sem oftast má endurtaka og treysta að verki á sama hátt.

## Keyrsla forrits
Forriti er hlaðið í minni tölvunnar (venjulega af stýrikerfinu) og það síðan „keyrt“ með því að láta tölvuna framkvæma skipanir þess þangað til þær eru ekki fleiri eða keyrslan stöðvuð eða villa kemur upp, annað hvort í hugbúnaði eða vélbúnaði.

Áður en tölva getur keyrt forrit, hverrar gerðar sem það er (þar með talið stýrikerfið, sem einnig er forrit), verður að ræsa vélbúnaðinn. Þetta er gert á venjulegum PC-tövlum með því að hleypa straum á kísilflögu sem oftast er á móðurborði tölvunnar og setja þannig af stað einfalt forrit sem hleður stýrikerfinu inn í vinnsluminnið af harða diskinum. Þessi kísilflaga er nefnd BIOS eða BIOS-kubburinn. Eftir það getur tölvan tekið við flóknari skipunum.

## Forrit eða gögn
Keyranlegt form forrits (oft kallað innanlegt form, þar sem skipanirnar eru viðfangskóði) er stundum greint að frá þeim gögnum sem forritið vinnur með. Í sumum tilvikum hverfur þessi aðgreining þegar forritið sjálft býr til eða breytir gögnum sem verða svo hluti af sama forritinu (þetta gerist til að mynda oft í Lisp-forritunarmállýskum).

## Forritun
Sköpun forrits kallast *forritun*. Í forriti er líklegast nokkur fjöldi gagnaskipana svo og reiknirita sem vinnur úr þeim.

Gerð forrits er síendurtekið ferli nýskráningar frumkóða og breytinga á honum með prófunum, greiningum og endurbótum. Sá sem fæst við þetta kallast forritari eða er sagður starfa að hugbúnaðargerð. Hið síðarnefnda verður æ algengara eftir því sem starfinn þroskast og verður líkari verkfræðigrein.

Nú er algengast að forritað sé í teymi þar sem allir leggja sitt af mörkum. Hópstjórinn tekur af skarið ef menn greinir á. 10 manna teymi eru algeng, erfiðara er að stjórna stærri hóp. Annar möguleiki er að tveir og tveir vinni saman (enska: pair programming).

## Smælki
Stysta forritið sem gerði eitthvað gagn er talið hafa verið skipunin ‘cont/rerun’ sem tilheyrði stýrikerfinu CP/M. Hún var tvö bæti (JMP 100) og var stökk á byrjunarstað forritsins sem ræsti hana. Hún gat því látið það byrja aftur án þess að það þyrfti að sækja það á ný frá hinum hægfara diskageymslum níunda áratugar síðustu aldar.

Í alþjóðlegri forritunarkeppni reyndist tóm skrá hlutskörpust sem minnsta „forrit“ í heimi. Hún var núll bæta löng, skilaði núll bætum á skjáinn og var þannig minnsta forritið sem gat endurgert sjálft sig. Vegna orðalags í keppnisreglum varð að taka þetta „forrit“ gilt, en reglunum var síðan breytt og þess krafist að forritin yrðu að vera meira en núll bæta löng.

Ada Lovelace greindi frá því í smæstu smáatriðum í ritgerð hvernig reikna mætti út svokallaðar Bernoulli tölur með hliðrænni reiknivél sem Charles Babbage hafði hugsað upp. Þetta er talið fyrsta tölvuforrit í heiminum og hún sjálf fyrsti forritarinn.

## Heimild

## Ytri hlekkir
* Definition of Program @ Webopedia
* Definition of Computer program @ Agtivity 
* Definition of Software @ FOLDOC