Kaj Pomeni “Kolizija imen”?

V kontekstu računalnikov in računalniškega programiranja je “trčenje imen” tehnični izraz za primer, v katerem imata dva elementa isto ime v nekem logičnem ohišju. Trk imen se lahko pojavi v številnih primerih, na primer pri imeni datotek v imeniku ali v programu, v katerem imajo lokalne spremenljivke v funkciji enako ime kot nekatere globalne spremenljivke. Večino časa je treba kolizijo imen na nek način takoj razrešiti, bodisi samodejno z operacijskim sistemom ali prevajalnikom ali ročno z vnosom in odločitvami uporabnika. Koncept imenskega prostora včasih rešuje težave s trkom z ustvarjanjem različnih logičnih regij, v katerih lahko elementi s podobnimi imeni soobstajajo brez dvoumnosti. V nekaterih primerih programiranja trk imen morda ne bo takoj očiten, kar občasno vodi do težav v programskih napakah, ki jih je težko najti, ki so lahko posledica tega, da prevajalnik naredi določene predpostavke o imenih uporabljenih elementov.

Primer, kako lahko pride do trka imen, vključuje dva imenika, polna datotek. Če vsak imenik vsebuje datoteko z imenom »DATA« in je vsebina enega imenika kopirana v drugega, bo računalnik pri poskusih kopiranja datoteke z imenom DATA ugotovil, da datoteka z istim imenom že obstaja v ciljnem imeniku. To ustvari kolizijo imen. V tem primeru bo uporabnik običajno pozvan in mu je dovoljeno izbrati s seznama resolucij, vključno s preimenovanjem ene od datotek, ne kopiranjem datoteke ali prepisovanjem ene od datotek.

Ena pogosto uporabljenih rešitev za trk imen je implementacija imenskih prostorov. Imenski prostor je preprosto način za definiranje območja, pod katerim so vsebovana imena objektov. V zgornjem primeru je imenik tehnično imenski prostor, kar pomeni, da ima lahko več datotek isto ime, če je vsaka v različnih imenikih.

Z vidika programiranja lahko do kolizije imen pride v situacijah, kot so večkratno dedovanje, prekrivajoči se obsegi spremenljivk ali celo z uvoženimi knjižnicami v nekaterih jezikih. Na splošno bo prevajalnik opazil konflikt in ustvaril opozorilo ali napako, čeprav to morda ni vedno tako. Razen uporabe imenskih prostorov se lahko trkom v mnogih programskih jezikih izognemo z uporabo kvalifikatorjev. Kvalifikator je običajno predpona, ki jo je mogoče postaviti pred ime spremenljivke ali razreda, da se razlikuje od druge spremenljivke z istim imenom.