Hvað er óbreytanlegt forrit?
Óbreytanlegt hlutur er hlutur sem ekki er hægt að breyta eftir að hann hefur verið búinn til. Með öðrum orðum, ástand hans má ekki breyta eftir að hann hefur verið stofnaður. Öll tilraun til að breyta gildi hans leiðir til þess að nýr hlutur með uppfærðu gildi er búinn til, en upprunalegi hluturinn helst óbreyttur.
Þetta hugtak er oft notað í forritunarmál sem styðja virkniforritun, þar sem óumbreytanleiki er lykilatriði. Óumbreytanlegir hlutir eru gagnlegir í aðstæðum þar sem ekki á að breyta ástandi hlutar, til dæmis í fjölþráða umhverfi þar sem samtímilegur aðgangur að breytilegum hlutum getur leitt til keppnisaðstæðna og gögn spilling.
Óbreytanlegir hlutir hafa nokkra kosti fram yfir breytanlega hluti. Í fyrsta lagi eru þeir þráðöruggir og hægt er að deila þeim örugglega milli þráða án samstillingar. Í öðru lagi er auðveldara að rökstyðja þá, þar sem ástand þeirra getur ekki breyst óvænt. Í þriðja lagi er hægt að nota þá sem lykla í skrá töflur og sett, þar sem hash-gildi þeirra er fast og breytist ekki með tímanum.
Dæmi um óbreytanlegar hlutir í Java Þar á meðal String, Integer og LocalDate. Þegar String-hlutur hefur verið búinn til er gildi hans ekki hægt að breyta. Öll tilraun til að breyta honum leiðir til þess að nýr String-hlutur með uppfærðu gildi er búinn til. Á sama hátt, þegar Integer-hlutur hefur verið búinn til, er gildi hans ekki hægt að breyta.
Óbreytanlegir hlutir henta þó ekki í allar aðstæður. Í sumum tilfellum eru breytanlegir hlutir hentugri, til dæmis þegar ástand hlutar þarf að uppfæra reglulega. Í slíkum tilfellum er mikilvægt að samstillta aðgang að breytanlegum hlutum til að koma í veg fyrir samkeppnisaðstæður og gagnaspillingu.
Í stuttu máli er óbreytanlegt hlutur hlutur sem ekki er hægt að breyta eftir að hann hefur verið búinn til. Hann er gagnlegur í aðstæðum þar sem ekki á að breyta ástandi hlutar, til dæmis í fjölþráða umhverfi. Óbreytanlegir hlutir hafa nokkra kosti fram yfir breytanlega hluti, þar á meðal þráðöryggi, auðveldari rökhugsun og henta sem lyklar í hasstöflum og safnum.