Mikä on ääretön silmukka?

Ääretön silmukka on tila, joka saa tietokoneohjelman jatkamaan komennon suorittamista loputtomasti. Tämä johtuu tyypillisesti yhdestä kolmesta syystä: ohjelmalla ei ole lopettamistilaa, ohjelman lopputila ei ole saavutettavissa tai toistokomento saa ohjelman käynnistymään jatkuvasti. Suurimman osan ajasta ääretön silmukka aiheuttaa tietokoneen hidastumisen jyrkästi tai jopa lukkiutumisen. Varhaisissa tietokoneissa nämä silmukat vaativat usein uudelleenkäynnistyksen, mutta nykyaikaiset käyttöjärjestelmät usein sieppaavat ne ja lopettavat ohjelman ennen kuin ne kaatuvat käsistä.

Ohjelmoinnissa on ääretön silmukka; muut termin käyttötavat ovat yleensä virheellisiä. Useimmissa tapauksissa äärettömät silmukat eivät ole ohjelman lopullinen tavoite, ja jossain koodissa on ongelma, joka aiheuttaa tilan esiintymisen. Kaikki kolme ääretön silmukan päätapausta ovat täysin ohjelmointi- ja ohjelmistopohjaisia.

Kun ohjelmalla ei ole lopettamistilaa, se jatkaa viimeisten ohjeiden suorittamista ilman loppua. Monissa tapauksissa tämä johtaa ohjelman lukkiutumiseen odottaessaan viimeistä ohjetta, jota ei koskaan tule. Muina aikoina viimeinen ohjelmalle annettu käsky oli käskyn suorittaminen tai komennon käsittely. Näissä tapauksissa se tekee näitä asioita loputtomasti. Tällöin tietokone täyttyy hitaasti toistuvilla komennoilla äärettömästä silmukasta, kunnes koko järjestelmä työskentelee ongelman kanssa ilman loppua.

Samankaltainen tilanne on olemassa, kun ohjelman lopputila ei ole saavutettavissa. Tässä tapauksessa ohjelma voi päättyä, mutta ei koskaan. Päätepisteen ongelma voi olla ohjelmoinnissa tai se voi johtua tietokoneen virheestä. Jos esimerkiksi ohjelma pyytää tiettyä tietoa tietystä paikasta, ohjelmointivirhe olisi, että tiedot tallennetaan eri paikkaan. Toisaalta, jos tiedot menevät ohjelmaan, mutta ne keskeytyvät käyttäjän tai muun ohjelman häiriöiden vuoksi, ne eivät yksinkertaisesti koskaan saavu.

Äärettömän silmukan viimeinen syy on täysin ohjelmointiin perustuva. Jossain ohjelmoinnin sisällä on komento, joka kehottaa ohjelmaa toistamaan jotain. Vaikka nämä komennot ovat yleisiä, olosuhteiden ei pitäisi koskaan sallia toistuvan komennon palata alkuperäiseen toistoon. Jos näin tapahtuu, ohjelma suorittaa komennon, paina toistolausetta, suorittaa sitten komennon uudelleen, toistaa sitten uudelleen ja niin edelleen. Nämä silmukat on todennäköisimmin tietoisesti ohjelmoitu, usein osana haittaohjelmaa.