Mida tähendab “nimede kokkupõrge”?

Arvutite ja arvutiprogrammeerimise kontekstis on “nimede kokkupõrge” tehniline termin juhuks, kus kahel üksusel on mõnes loogilises korpuses sama nimi. Nimede kokkupõrge võib esineda paljudel juhtudel, näiteks kataloogis olevate failide nimedega või programmis, kus funktsiooni kohalikel muutujatel on sama nimi kui mõnel globaalsel muutujal. Enamasti tuleb nimede kokkupõrge mingil viisil koheselt lahendada, kas siis automaatselt operatsioonisüsteemi või kompilaatori poolt või käsitsi läbi kasutaja sisestuse ja otsuste. Nimeruumi kontseptsioon lahendab mõnikord kokkupõrkeprobleemid, luues erinevad loogilised piirkonnad, milles sarnaste nimedega üksused võivad kahemõtteliselt koos eksisteerida. Teatud programmeerimisjuhtudel ei pruugi nimede kokkupõrge koheselt ilmneda, mis võib mõnikord põhjustada raskesti leitavaid programmivigu, mis võivad tuleneda sellest, et kompilaator teeb teatud eeldusi kasutatud üksuste nimede kohta.

Näide selle kohta, kuidas nimede kokkupõrge võib toimuda, hõlmab kahte faile täis kataloogi. Kui iga kataloog sisaldab faili nimega “DATA” ja ühe kataloogi sisu kopeeritakse teise, siis arvuti katsed kopeerida faili nimega DATA leiab, et sama nimega fail on sihtkataloogis juba olemas. See tekitab nimede kokkupõrke. Sel juhul palutakse kasutajal tavaliselt resolutsioonide loendist valida, sealhulgas ühe faili ümbernimetamine, faili kopeerimine või ühe faili ülekirjutamine.

Üks levinud lahendus nimede kokkupõrkeks on nimeruumide rakendamine. Nimeruum on lihtsalt viis ala määratlemiseks, mille all objektide nimed asuvad. Ülaltoodud näites on kataloog tehniliselt nimeruum, mis tähendab, et mitmel failil võib kõigil olla sama nimi, kui nad kõik asuvad erinevates kataloogides.

Programmeerimise vaatenurgast võib nimede kokkupõrge tekkida sellistes olukordades, nagu mitu pärimist, kattuvad muutujate ulatused või isegi mõne keele imporditud teegid. Üldiselt märkab kompilaator konflikti ja genereerib hoiatuse või vea, kuigi see ei pruugi alati nii olla. Peale nimeruumide kasutamise saab paljudes programmeerimiskeeltes kokkupõrkeid vältida tähiste abil. Kvalifitseerija on tavaliselt eesliide, mille saab asetada muutuja või klassi nime ette, et eristada seda teisest samanimelisest muutujast.