මචන් අනුරාධ. උඹට තාම වැඩේ හරියට අහුවෙලා නෑ වගේ. මෙහෙමයි සීන් එක.
ඉස්සෙල්ලම ප්රොසෙසර් එක ඌ තමා සර්ව බලධාරී දෙවියා. ඌට තමයි හැම දෙයක්ම කරන්න බලය තියෙන්නෙ. හැබැයි හෙන පල් මෝඩයෙක්. කිසිම දෙයක් තනියෙන් හිතල කරන්න බෑ. කරන්න ඕනෙ හැම දෙයක්ම කන්නලව් කරල කියන්න ඕනෙ. කියන හැම දේම කරනවා. ඒ දෙවියට තේරෙන්නෙ දේව භාෂාව මැෂින් කෝඩ් (machine code) එක විතරයි. ඒක නිසා කන්නලව් කරනකොට මැෂින් කෝඩ් එකෙන්ම කන්නලව් කරන්න ඕනෙ. නැත්නම් ඌට ඒක තේරෙන්නෙ නෑ.
දෙවියොත් වර්ග ගොඩක් ඉන්නවා intel දෙවියො AMD දෙවියො,
මැෂින් කෝඩ් එක කියන්නෙ කෙලින්ම bytes වලින් හැදුනු දෙයක්. ඒක කෙලින්ම cpu එකට කියවන්න පුලුවන්. කියවල ඒකෙ තියන දේවල් ටික කෙලින්ම ක්රියාත්මක කරන්න පුලුවන්. මේක තමයි අන්තිමේදි ඕනෙම සෝස් කෝට් එකක් පත්වෙන පාරිශුද්ධ තත්වයි. (හැබැයි OS එකේ තව layers ටිකක් තියනවා. ඒ ටික අමතක කරන්න. උන් තමයි කපුවො (compiler). operating system කියන දේවාලේ කට්ටිය ලියපු programs (සන්දේශ) දෙවියො ලඟට ගෙනියන්නෙ එයාල.) එක එක භාෂා වලින් ලිය කෝඩ්ස් මොයලා එහෙන් මෙහෙන් වෙනස් කරලා තව සමහර දේවල් එකතු කරලා අන්තිමේදි දෙවියන්ට තේරෙන විදියකට දේව භාෂාවට කොම්පයිල් කරනවා. හොහොම හරි අන්තිමේට වැඩේ වෙනවා.
කපුවන්ට පස්සෙ ඉන්නෙව දේව භාෂාව දන්න දේව ට්රාන්ස්ලේටර්ස් ලා (assembler). උන්ට කෙලින්ම දෙවියො එක්ක කතා කරන්න පුලුවන්. කපුවො වෙන උන්ට දෙවියො එක්ක කතාකරන්න දෙන්නෙ නෑ. ඒත් දේව ට්රාන්ස්ලේටර්ස්ලව කපුවො නවත්තන්නෙ නෑ.
ඊට පස්සෙ native code එක තියනවා. සමහරු මැෂින් කෝට් එකටත් native code කියල කියන වෙලාවල් තියනවා. ඒත් native code කියල දැන් සාමාන්යයෙන් පාවිච්චි වෙන්නෙ unmanged code වලට. හිතන්නකො වින්ඩෝස් දේවාලෙ ඇතුලෙ ඉන්න කපුවො ඔක්කොම සිංහල උන් කියල. උන්ගෙ භාෂාවට තමයි native code කියන්නෙ. දේවාලෙ එලියෙත් කපුවො ඉන්නවා. උන් වෙන වෙන භාෂාවල් කතා කරනවා.
unmanaged code කියන්නෙ බොහෝවිට high level language එකකින් ලියන, ඒත් language එකෙන් කිසිම support එකක් නැති කෝඩ් වලට. ඒ කියන්නෙ memory allocation, carbage collection වගේ කිසිම දෙයක් automatically වෙන්නෙ නෑ. ඒ ඔක්කොටම අපි කෝඩ් ලියන්න ඕනෙ. ඔය c, c++ වගේ ඒවලින් හරි හමන් software එකක් හදද්දි සංසාරෙ එපා වෙන්නෙ ඒකයි.
ඊට පස්සෙ තියනවා managed code. මේවා හරි ලේසියි. අපිට ගොඩක් වෙලාවට කරන්න තියෙන්නෙ logic එක ලියන්න විතරයි. ඉතුරු ටික එයාලා බලාගන්නවා. මේව ගොඩක් වෙලාවට රන් වෙන්නෙ virtual machine වගේ environment එකක. ඒ කියන්නෙ දෙයියොත් එක්ක කිසි ගනුදෙනුවක් නෑ. අපිට ඕනෙ වැඩේ කරගන්න දෙයියො සහ දේවාලෙ ගැන හොඳට දන්න පනිවිඩකාරයෙක් යවනවා දේවාලෙට (framework). ඌ දේවාලෙට ගිහිල්ලා අපේ වැඩේ කරගෙන එනවා. ඉතුරු ටිකත් ඌම මැනේජ් කරනවා. ඔය C#, VB.NET, Java වගේ languages අයිති වෙන්නෙ මේ ගොඩට. අනිත් පැත්තෙන් ඔය Python, PHP, Perl වගේ ඒවත් අයිති වෙන්නෙ මේ ගොඩට. මේ ගොඩේ තියන languages තමයි ගොඩක් වෙලාවට ලොකු ලොකු project වලට පාවිච්චි කරන්නෙ. මොකද ප්රෝග්රෑම් එක ලියන එකාට දේවාල ගානේ ගිහින් චාටර් වෙන්න ඕනෙ නෑ. හැම දෙයක්ම ලේසි කරල දෙන framework එක ඉන්නවා ඒ හැම වැඩකටම.
ඔය උඩ කියපු හැම language එකකින්ම ලියපු කෝඩ් අනිත්මට මැෂින් කෝඩ් දේව භාෂාවට හරවන්න වෙනවා cpu එකට යවන්න. පණිවිඩකාරයෝ වගේ උන් මාර්ගෙන් අන්තිමට කපුවා ගාවට ගිහින් දෙවියන්ට කන්නලව්ව යනවා. දෙවියෝ එක ඉටු කරනවා.
ඔන්න අන්තිමට කියන්නම් කට්ටියට කුතුහලයක් වෙලා තියන Assembly code එක ගැන. මේකෙදි කපුකමක් වෙන්නෙ නෑ. Assembly language එකෙන් ලියන ඒවා කෙලින්ම යන්නෙ දේව ට්රාන්ස්ලේටර්ස් ලා (assembler)ට. එතකොට උන් කෙලින්ම ඒක දේව භාෂාවට හරවලා දෙයියන්ට යවනවා. අපි මේක ලියන්න ඕනෙ කෙලින්ම දේවියන්ට තේරෙන විදියට. කපුවො වගේ ඒක එහෙන් මෙහෙන් වෙනස් කරන්නෙ නෑ. උදාහරණයක් ගමුකො. දැන් හිතන්න program එක ලියපු එකාට ඕනෙ කෙහෙල් ඇටයක් දීලා කෙහෙල් ගහක් ඉල්ල ගන්න. ඌ පනිවිඩකාරයෙක්ට (framework) හරි කපුවට (compiler) හරි ඒක කිව්වම කපුවා දෙයියන්ට ඒක කියන්නෙ මෙහෙම.
"අනේ දෙයියනේ දිවියලෝකෙ බිම කොහේ හරි වලක් හාරලා මේ කෙහෙල් ඇටේ ඒකට දාලා පස් වලින් වහලා ඒකට උදේ හවස මාස තුනක් වතුර දාලා ඒක පැල උනාට පස්සෙ පරිස්සමට වල හාරලා ඒ කෙහෙල් පැලේ ගලවලා ඔතාගෙන ඇවිල්ලා මේ යකාට දෙන්න. දීල කියන්න වැඩේ හරි කියලා. "
කියලා. එතකොට අර දෙයියා ඒ විදියටම කරනවා. කපුවා නැත්නම් අපිට දේව භාෂාව දැනගත්තත් ඕක කියන විදිය තේරෙන්නෙ නෑනෙ. දැන් අර කියපු assembler කියන එකා ඔච්චර දේවල් කරන්නෙ නෑ. ඌ ට්රාන්ස්ලේටර් විතරනෙ. ඌ කරන්නෙ කරන්නෙ මැසේජ් එක දෙයියන්ට පාස් කරන එක විතරයි. ඌ දෙයියන්ට දේව භාෂාවෙන් කියන්නෙ කියන්නෙ මෙහෙම
"අනේ දෙයියනේ මේ යකාට මේ කෙහෙල් ඇටේ අරගෙන කෙහෙල් පැලයක් දෙන්න"
එතකොට දෙයියා බලනවා. යකෝ මගේ ලඟ කොහෙ තියන කෙහෙල් ගහක්ද කියල. එතකොට දෙයියො "කොහෙ තියන හු* කෙහෙල් ගහක්ද ඕයි මගේ ලඟ" කියල බැනලා error එකක් පාස් කරනවා program එකට.
අන්න ඒකයි. assembler එකට ලියද්දි දෙයියො ගැන හරියට දැනගෙන ලියන්න ඕනෙ. දෙයියොත් ගොඩක් ඉන්නවනෙ. ක එක දෙයියගෙ සිස්ටම් වෙනස්. කපුවට දෙද්දි එහෙම නෑ. ඔනෙම දෙයියෙක්ට ටෝක් කරල වැඩේ කරගන්න උන් දන්නවා.
අර කියල encryption අනං මනං එව්වා කපුවටවත් දේවාලෙටවත් අදාල වෙන්නෙ නෑ. ඒව කරගන්න ඕනෙ වෙන්නෙ ලියන එකාටනෙ. දේවාලෙන් කරන්නෙ ඒ වැඩේ කරල දෙන එක විතරයි.
මේක වැඩ අස්සෙ කෑලි කෑලි ලිව්වෙ බන්. තේරුන් නැත්නම් කොරන්ඩ දෙයක් නෑ
