Što je pogreška kompilacije?

Pogreška kompilacije je pogreška u izgradnji datoteke strojnog koda za računalni jezik. Mnogi računalni jezici kompiliraju svoj izvorni kod u datoteke strojnog koda prije nego što se programi mogu izgraditi ili izvršiti. Najčešća vrsta pogreške kompilacije je osnovna sintaktička pogreška; jedna mala pogreška može uzrokovati mnoge probleme s kodom.

Najčešći objektno orijentirani programski jezici, C++ i Java®, koriste kompilaciju u nekom obliku. Ovo se značajno razlikuje od interpretiranih jezika koji koriste sirovi izvorni kod tijekom izvođenja za izvođenje programa. Jezik ne mora biti inherentno objektno orijentiran da bi se mogao kompilirati; C++, na primjer, može se strukturirati korištenjem objektno orijentiranog ili proceduralnog programiranja.

Najčešći uzrok grešaka u kompilaciji je sintaktička pogreška. Sintaktičke pogreške su pogreške u obliku sirovog izvornog koda, obično uzrokovane nekim kršenjem principa računalnog jezika. Te pogreške mogu biti jednostavne kao što je zaboravljanje točke-zarez na kraju retka koda ili složene poput pogrešnog inicijaliziranja niza. Obično nije iznimno teško pronaći i dijagnosticirati ove pogreške; većina prevoditelja prikazuje pogreške kada se nađu i ne dopuštaju formiranje strojnog koda dok se pogreške ne poprave. Međutim, različiti jezici koriste različite prevodioce, tako da je moguće da određena vrsta greške kompilacije može biti prisutna u jednom jeziku, ali ne i u drugom.

Ovisno o korištenom jeziku i prevodiocu, jedna greška kompilacije može prikazati isto toliko pogrešaka. Na primjer, zaboravljanje točke-zareze na kraju retka, kada to jezik zahtijeva, može uzrokovati pogreške raščlanjivanja jer prevodilac ne zna kada bi određeni red trebao završiti. Ova se pogreška raščlanjivanja može manifestirati kao mnogo pogrešaka pri prevođenju, zbog čega se čini kao da odjednom postoje strašni problemi s kodom umjesto jedne male pogreške pri pisanju. Općenito, pažljiva pažnja na poštivanje pravila računalnog jezika može spriječiti ove vrste pogrešaka. Isto tako, ako se pojavi iznenadna navala pogrešaka u kompilaciji, iskusni programer obično može zaključiti da je jedna mala pogreška uzrokovala većinu njih.

Uobičajena zabluda programera početnika je da će pogreška pri kompilaciji srušiti računalo, a to nikada nije slučaj. Pogreške kompilacije ograničene su na kompilatore, a stvaranje strojnog koda rijetko uzrokuje probleme za cijeli računalni sustav. Niti jedan program nije siguran, uključujući kompajler, ali šanse da izazovete probleme s cijelim računalom samo kompajliranjem koda ili naiđete na pogrešku kompilacije iznimno su male. Nakon što su sve greške kompilacije popravljene, velike su šanse da će program raditi glatko, kao što je i zamišljeno.