Mis on loogikaviga?

Loogikaviga on probleem arvuti programmeerimiskoodiga, mida ei ole koodi kirjutamisel või kompileerimisel hõlpsasti tuvastatav. Mõnikord nimetatakse seda semantiliseks veaks, loogikaviga on üldiselt programmeerija viga; isegi kui kodeering on õige, võib saadud vastus siiski olla vale. Kui programmeerimiskeele kompilaatoril on loogikaviga, tõlgendab see edukalt esitatud koodi, mille tulemuseks on töötav programm, mis võib tagastada vigaseid andmeid.

Loogikavigu on programmeerijal raske tabada, sest programmeerimiskeele tõlk ei tuvasta seda viga probleemina. Pärast koodi edukat käivitamist võivad tulemused ilma tahtliku kontrollita alguses tunduda õiged. Seda tüüpi vigade tuvastamiseks peaks oodatud tulemuste ja programmi funktsiooniga kursis olev isik üle vaatama selle programmi väljundi ja toimimise.

Koodis loogikavea leidmiseks peab suutma metoodiliselt jälgida vea allikat. Viga võib tuleneda valesti kodeeritud süntaksist. Koodi süntaks võib tunduda õige, kuid see võib põhjustada loogikavea. Seda tüüpi vead võivad lõppeda väga kulukate probleemidega, kui neid õigel ajal ei parandata.

Loogikavead võivad tuleneda ka vigasetest andmetest, mida kasutas õigesti kirjutatud programm ilma sisemiste loogikavigadeta. See on samaväärne levinud väljendiga “prügi sisse, prügi välja”. Kui andmed on programmi valesti sisestatud, isegi kui programm on õigesti käivitatud, on tulemuseks oodatuga võrreldes viga.

Teist tüüpi loogikavea näitena võib juht stoppmärgi juures olles valida, kas pöörata paremale või vasakule. Kui juht pöörab paremale, kui kavandatud sihtkoht oli vasakul, loetaks seda loogikaveaks. Tehniliselt juhtis juht sõidukit korrektselt, kuid lõpptulemus ei vastanud ootustele. Nagu see näide illustreerib, ei piirdu loogikavead ainult arvutiprogrammeerimise valdkonnaga. Loogikavea võib ka kommunikatsiooni osas liigitada ekslikuks.

Teises näites, kus on loogikavead, võivad tekstitöötlusprogrammid mõnikord kasutada automaatset õigekirjakontrolli; need õigekirjakontrollid on kurikuulsad puuduvate loogikavigade poolest. Näiteks võib nimisõna “müük” olla lauses valesti esitatud nimisõnaga “puri”. Iga sõna on õigesti kirjutatud, kõlab õigesti ja võib lause sees olla grammatiliselt õige, kuid ühe sõna määratlus ei pruugi sobida konkreetse lause kontekstiga.