පොදු මතයක් අනුව, වැඩසටහන් ලියන විට අති සරල දත්ත වර්ගයක් ලෙස සලකන්නේ ස්ට්රින්ග් ය. නාම, ඊමේල්, මුරපද – සියල්ලම අකුරු මාලාවක්. එහෙත් ප්රායෝගිකව කේත ලියන විට එහි පසුබැසි ක්රියාකාරකම් අපේක්ෂා නොකළ අත්දැකීම් ගෙන එයි.
උදාහරණයක් ලෙස, JavaScript හි toUpperCase() ක්රමය භාවිතා කරලා "hello" වචනය උඩු අකුරට පරිවර්තනය කළාම, මුල් ස්ට්රින්ග් එක hello ලෙසම රැඳෙයි. මේක සිදුවෙන්නේ ස්ට්රින්ග් අක්රමික (immutable) බව නිසාය. අක්රමික යනු, එකවර නිර්මාණය වූ පසු එය වෙනස් කළ නොහැකි බවයි. ඔබට අකුරක් වෙනස් කිරීමට අවශ්ය නම්, භාෂාව නව ස්ට්රින්ග් එකක් සාදා එය ඔබට ලබා දේ.
මෙම සැලසුම සරල නොවෙයි, නමුත් එය වැඩසටහන් වල ආරක්ෂාව ඉහළ දියුණු කරයි. එකම ස්ට්රින්ග් එක බහු කොටස් භාවිතා කරන විට, එක් කොටසක් අහඹු ලෙස වෙනස් වුවහොත් අනෙක් කොටසට වැරදි දත්ත ලැබෙයි. අක්රමික ස්ට්රින්ග් මගින් එවැනි බග් හෝ අනපේක්ෂිත හැසිරීම් වලින් මිදෙන්න පුළුවන්.
Hidden Cost of Creating New Strings
අක්රමික ස්ට්රින්ග් නිසා නව අක්ෂර මාලා නිර්මාණය වේ. සාමාන්යයෙන් මෙය ඉක්මනින් සිදුවනවා, නමුත් ලක්ෂ ගණනක් වාරයක් මෙම ක්රියාව සිදු කරන විට කාර්යක්ෂමතාවය අඩුවේ. උදාහරණයක් ලෙස:
let result = "";
for (const word of ["JavaScript", "is", "awesome"]) {
result += word;
}
මෙම ලූපය තුළ, එක් එක් වරකට පරණ ස්ට්රින්ග් එක නව එකකට පවරා, පරණ එක අතහැර දේ. එම නිසා මතක භාවිතය හා සම්පූර්ණ වේගය අඩු වීමක් සිදු වේ. මෙය වැඩි පරිමාණයේ දත්ත සැකසීමේදී ගැටළුවක් විය හැක.
ශ්රී ලංකාවට ඇති වැදගත්කම
- ඉගෙනුම – පාසල් හා විශ්වවිද්යාල මට්ටමේ සිසුන්ට ස්ට්රින්ග් අක්රමිකත්වය ගැන අවබෝධයක් ලැබීම, අනාගත කේත ලේඛන වල වැරදි අවම කරයි.
- ඩිවෙලපර් – ශ්රී ලංකාවේ සොෆ්ට්වේයාර් සමාගම් වැඩි පරිමාණ ඇප්ලිකේෂන් හදන විට, අක්රමික ස්ට්රින්ග් නිසා ඇති කාර්යක්ෂමතා ගැටළු හඳුනා ගැනීමට සහ පරිසරය අනුව කේත සැලසුම් කිරීමට හැකියාව ලැබේ.
- ව්යාපාර – දත්ත සැකසීම, පණිවිඩ මාරු කිරීම, රෙග්එක්ස් (Regex) භාවිතය වැනි ක්රියාකාරකම් වලින් පසුබැසි ප්රතිඵල ගැන දැනුවත් වීම, සේවා වේගය හා පාරිභෝගික අත්දැකීම වැඩි දියුණු කරයි.
අකාරාත්මක නොවූ ස්ට්රින්ග් රහස් තේරුම් ගැනීම, කේත ලියන අයගේ ගුණාත්මකභාවය වැඩි කරයි. එමඟින් ශ්රී ලංකාවේ තාක්ෂණික නිෂ්පාදන තත්ත්වය ඉහළ යාමට මඟ පෙන්වයි.
ඉදිරියට, ඔබේ කේතයේ ස්ට්රින්ග් භාවිතය විශ්ලේෂණය කර, අකාරාත්මක නොවූ රහස් හඳුනාගෙන, වැඩි කාර්යක්ෂමතාව සහ ආරක්ෂිත සොෆ්ට්වේයාර් නිර්මාණය කරමු.