Először is célszerű definiálni az algoritmus fogalmát, mivel ez a számítógép-programozás lényegi részének tekinthető.[1] Kialakulását hosszú ideig a nyelvészek nem tudták visszavezetni. A Webster-féle értelmezőszótárban (angol) az algoritmus angol megfelelője (algorithm) archaikus változata található meg (algorism). Ennek a szónak a jelentése, hogy arab számjegyekkel számol. Az 1747-ben kiadott német matematikai szótár így foglalta össze az algoritmust: az aritmetikai műveletek négy fajtája tartozik ide, vagyis az összeadás, kivonás, szorzás és az osztás. Egészen 1950-ig az algoritmus alatt jobbára az euklideszi algoritmust értették, mely két egész szám legnagyobb közös osztójának meghatározását jelenti.
A programozás során valamilyen problémát oldunk meg a kész programmal. A programban szereplő algoritmus konkrét lépések sorozata, mely egy általános módszer, ezzel adunk választ a felmerülő kérdésre, vagyis a problémára. Ilyen lehet például egy prímtesztelő program, mely egy tetszőleges számról eldönti, hogy prím-e. Ha ezt a feladatot meg tudjuk oldani algoritmikus eszközökkel, akkor algoritmikus problémáról beszélhetünk. Az algoritmikus probléma megoldhatóságában egy matematikai modell, a Turing gép segít. A Turing gép az alábbiakból tevődik össze:
- Egy szalag (ezen mindkét irányban végtelen memória áll rendelkezésre)
- Író-olvasófej
- Vezérlőegység
Egy Turing gép mindkét irányból végtelen szalagból áll, melyre az író/olvasófej segítségével írni lehet, illetve olvasni lehet róla. Ehhez tartozik egy vezérlőegység, melynek „utasításokat adhatunk”. Továbbá szükséges a bemenetet, a függvényt (amit kiszámít), illetve a kimenetet is megadni.[1]
A Turing gép alapvetően egy függvényt tud kiszámítani, viszont a számítógépes programok több függvény kiszámítására is alkalmasak. Viszont konstruálható egy „szuper” vagy „univerzális” Turing gép, amely (hasonlóan a számítógépes programokhoz), több függvényt is tud kezelni.
Amennyiben van olyan Turing gép, amely véges sok lépésben választ ad a kérdésre, akkor az algoritmikus probléma megoldható, különben nem nevezhető ennek.[2]
Az algoritmusok a számítógépes programok lényegi részének tekinthetők. A programozást minden esetben érdemes a probléma végiggondolásával kezdeni, és eldönteni, hogy az adott problémát melyik megoldással (esetleg programtervezési minta segítségével) javasolt megoldani, mivel egy probléma többféle módon is megoldható, ezért ajánlott azt a változatot használni, amivel el is érjük a kívánt célt (ez mindenképp szükséges, de nem elégséges feltétel) és emellett a programkód áttekinthető lesz általa.
A program memória igényének meghatározása mellett az algoritmus futási idejét is célszerű vizsgálni.
[1] Donald E. Knuth: A számítógép-programozás művészete 1. kötet, Alapvető algoritmusok p. 25. In: Algoritmusok