Clojure යනු Java Virtual Machine (JVM) මත ධාවනය වන ප්රබල functional programming භාෂාවකි. එහි වැඩ කරන විට අපි බොහෝවිට ‘vars’ සහ ‘symbol’ කියන දෙක අතර වෙනස නොදැන ගත හැක. මේ ලිපියෙන් අපි ඒ දෙකේ මූලිකත්වය, ඒවා කොහොමද ක්රියා කරන්නේ, සහ ඒවා Clojure වැඩසටහන් ලියන අයට කොතරම් වැදගත්ද කියා පැහැදිලි කරමු.
Symbol කියන්නේ කේතයක අඩංගු නාමයක් පමණයි – උදාහරණයක් වශයෙන් ‘x’ යන්න. Symbol එකක් පමණක් තිබුනොත්, එය runtime එකේ අගයක් (value) සම්බන්ධ නොවේ. එම නාමය අදාළ var එකකට සම්බන්ධ කරලා පසුව එම var එකේ අගය ලබා ගත හැක. Var එකක් නම් immutable අගයක් (value) වෙත pointing කරන mutable reference එකක්. එම නිසා ඔබට එකම නාමය (symbol) යටතේ අගය වෙනස් කිරීමට (redefine) හැකියාව ලැබේ.
උදාහරණයක් ලෙස (defn greet [name] (str "hello " name)) යන කොඩිය (def greet (fn [name] (str "hello " name))) සමඟ සමාන වේ. මෙහි defn යනු macro එකක් වන අතර, එය ඇතුළත def සහ fn එකතු කරයි. එම නිසා greet යනු Symbol එකක්, #'greet යනු Var එක, සහ (greet "Lahiru") යනු අගය (value) වේ.
Dynamic var එකක් නිර්මාණය කිරීමෙන් ඔබට thread‑local binding ලබා ගත හැක. (def ^:dynamic *debug* false) ලෙස නිර්වචනය කර, (binding [*debug* true] …) භාවිතා කර temporary ලෙස එය true කරගත හැක. මෙය testing, logging, සහ runtime configuration වෙනස් කිරීමට ඉතා ප්රයෝජනවත්.
Metadata එක Var එකකට අමුණා ගත හැක. (def ^{:doc "A counter"} counter 0) ලෙස ලියන විට, ‘counter’ var එකට documentation string එකක් එක් කරයි. මේ metadata එක REPL එකේ හෝ documentation generators තුළ ප්රයෝජනවත් වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණික විද්යාත්මක විශ්වවිද්යාල සිසුන්, startup සංවර්ධකයින්, සහ IT සමාගම් සඳහා Clojure හි Vars සහ Symbol ගැන අවබෝධයක් ඇති කිරීම අතිශය වැදගත්. Vars භාවිතයෙන් REPL හරහා කේතය නැවත ලියන හැකියාව, dynamic binding මගින් runtime configuration පාලනය, සහ metadata මගින් code documentation සරල කිරීම, ඉක්මන් prototyping හා අධි-ගුණාත්මක software නිර්මාණයට හේතු වේ. මෙවැනි හැකියාවන්, ලංකාවේ fintech, data analytics, සහ cloud-native සේවා නිර්මාණය කරන සමාගම් සඳහා ඉතා ප්රයෝජනවත් වේ. එමෙන්ම, Clojure එකේ immutable data structures සහ functional paradigm, concurrency සහ scalability අවශ්යතා ඉටු කරන ආකාරයට නිර්මාණය කර ඇත, ඒ නිසා ශ්රී ලංකාවේ තාක්ෂණික ආර්ථිකයෙහි නව නව ප්රවණතා ගොඩනැගීමට මෙය උපකාරී වේ.
අවසානයේ, Vars සහ Symbol ගැන නිවැරදි අවබෝධයක් ඇති කරගැනීම, Clojure කේතය පවත්වා ගැනීම, debug කිරීම, සහ නව features එකතු කිරීම පහසු කරයි. ඔබත් Clojure සමඟ වැඩ කරමින් මෙම මූලික කරුණු අධ්යයනය කර, ශ්රී ලංකාවේ තාක්ෂණික ප්රවණතා සමඟ එක්වන්න.