Mitä tarkoittaa “nimen yhteentörmäys”?

Tietokoneiden ja tietokoneohjelmoinnin yhteydessä “nimien törmäys” on tekninen termi tapaukselle, jossa kahdella kohteella on sama nimi jossain loogisessa kotelossa. Nimen törmäys voi tapahtua monissa tapauksissa, kuten hakemiston tiedostojen nimissä tai ohjelmassa, jossa toiminnon paikallisilla muuttujilla on sama nimi kuin joillakin globaaleilla muuttujilla. Suurimman osan ajasta nimien törmäys on ratkaistava välittömästi jollakin tavalla, joko automaattisesti käyttöjärjestelmän tai kääntäjän toimesta tai manuaalisesti käyttäjän syötteen ja päätösten avulla. Nimitilan käsite ratkaisee toisinaan törmäysongelmat luomalla erilaisia ​​loogisia alueita, joilla saman nimiset kohteet voivat esiintyä rinnakkain ilman epäselvyyttä. Joissakin ohjelmointitapauksissa nimien yhteentörmäys ei välttämättä ole heti ilmeinen, mikä johtaa toisinaan vaikeasti löydettäviin ohjelmavirheisiin, jotka voivat johtua siitä, että kääntäjä tekee tiettyjä oletuksia käytettyjen kohteiden nimistä.

Esimerkki nimien törmäyksestä voi tapahtua, kun kaksi hakemistoa on täynnä tiedostoja. Jos jokainen hakemisto sisältää tiedoston nimeltä “DATA” ja yhden hakemiston sisältö kopioidaan toiseen, tietokoneen yrittäessä kopioida DATA -nimistä tiedostoa havaitaan, että samanniminen tiedosto on jo kohdehakemistossa. Tämä luo nimien ristiriidan. Tässä tapauksessa käyttäjää yleensä pyydetään ja hän voi valita päätöslauselmasta, mukaan lukien yhden tiedoston nimeäminen uudelleen, tiedoston kopioimatta jättäminen tai jonkin tiedoston korvaaminen.

Yksi yleisesti käytetty ratkaisu nimien törmäykseen on nimitilojen toteuttaminen. Nimitila on yksinkertaisesti tapa määrittää alue, jonka alle objektien nimet sisältyvät. Yllä olevassa esimerkissä hakemisto on teknisesti nimiavaruus, mikä tarkoittaa, että useilla tiedostoilla voi olla sama nimi, kunhan ne ovat eri hakemistoissa.

Ohjelmoinnin näkökulmasta nimien törmäys voi tapahtua tilanteissa, joissa on useita perintöjä, päällekkäisiä muuttujan laajuuksia tai jopa joidenkin kielten tuodut kirjastot. Yleensä kääntäjä huomaa ristiriidan ja luo varoituksen tai virheen, vaikka näin ei välttämättä aina ole. Nimitilojen käytön lisäksi törmäyksiä monilla ohjelmointikielillä voidaan välttää käyttämällä tarkennuksia. Tarkentaja on yleensä etuliite, joka voidaan sijoittaa muuttujan tai luokan nimen eteen erottaakseen sen toisesta samannimisestä muuttujasta.