Rashan Hasaranga
Rashan Hasaranga's Official Website > Blog > Computer program එකක් වැඩ කරන්නේ කොහොමද.?

Computer program එකක් වැඩ කරන්නේ කොහොමද.?

ඇත්තටම ඔයාලා කවදාවත් තියනවද computer එකේ, mobile phone එකේ අපට පෙනෙන photos, videos, අකුරු වගේ දේවල් මේ විදියට දර්ශනය වෙන්නේ කොහොමද කියලා.. ඒ විතරක් නෙමෙයි, online video games, online bank accounts වගේ දේවල් වැඩ කරන්නේ කොහොමද කියලා..

මේ ගැන කෙටියෙන් උත්තරයක් දුන්නොත් මේ හැම දෙයක්ම වැඩ කරන්නේ අපි පරිගණක භාෂාවකින් පරිගණකයට ලබා දෙන උපදෙස් වලට අනුව.. ඒත් මේක උඩින් බැලුවම පේන තරම් සරල නැහැ..  

ලෝකේ කොතරම් භාෂා, විවිද සංකේත වගේ දේවල් තිබුනත් තාක්ෂණික පැත්තෙන් ගත්තොත් Computer එකට තේරුම් ගන්න පුළුවන් 0 සහ 1 කියන අගයන් දෙක විතරයි (Binary code).. අපි computer එකක දකින හැම දෙයක්ම ලියවිලා තියෙන්නේ මේ 0 සහ 1 කියන ඉලක්කම් දෙකෙන්.. පුදුමයි නේද..? මේ තරම් අකුරු තිබිලත් 0 සහ 1ම මේකට යොදාගෙන තියෙන්නේ ‘ඇත’ සහ ‘නැත’ කියන දෙක ගැන ඍජුවම මේ සංඛ්‍යා දෙකෙන් ප්‍රකාශ කරන්න පුළුවන් නිසා..
ඒ කියන්නේ “0 = නැත” කියලා සැලකුවොත් “1= ඇත” කියලා අපිට භාවිතා කරන්න පුළුවන්.. ‘ඊටත් වඩා ඇත, ඇත්තෙම නැත’ වගේ තවත් අගයකට සාපේක්ෂව අගයන් ගැනීමක් මෙතැනදී සිද්ධවෙන්නේ නැති නිසා computer එකට කිසිදු තර්කනයකිරීමකින් තොරව මේ අගයන් දෙක memory එකට දාගන්න පුළුවන් වෙනවා. එතකොට මේ අගයන් තවත් අගයක් මත රදාපවතින්නේ නැති නිසා පරිගණකයේ වේගය, නිරවද්‍යතාව වගේ දේවල් නියමාකාරයෙන් ලබාගන්නත් පුළුවන්කමක් අපට තියනවා..

10010011

උදාහරණයක් විදියට ස්ථානීය අගයන් 8ක් ඇති මේ Binary code එක සැලකුවොත්, මේකේ තියෙන හැම 1 හෝ 0 අගයක් සඳහාම අපේ පරිගණකය ඇතුලේ තියන transistors වලින් එක ගානේ වැය වෙලා තියෙනවා.. ඒ කියන්නේ මේ binary code එක පෙන්නන්න අපට transistors 8ක් භාවිතා කරන්න සිද්ධවෙනවා.. එහෙම බැලුවහම අපට notepad එක open කරලා වචන දෙක තුනක් type කරලා save කරනවා වගේ පොඩි වැඩකටත් transistor බර ගානක් භාවිතා කරන්න සිද්ධ වෙනවා.. ඔව් ඇත්තටම එහෙම තමයි.. නවීන පරිගණකයක් ගත්තම එකේ microchip එක ඇතුලේ සාමාන්යෙන් transistor මිලියන/ බිලියන ගානක් ස්ථාපනය කරලා තියෙනවා.. එතකොට මේ වගේ සංකීර්ණ තාක්ෂණයක් භාවිතා කරන එකේ අවාසියක් නැහැ කියලා අපට හිතන්න පුළුවන්..

අපි සාමාන්යෙන් වැඩක් කරනකොට computer එක ඇතුලේ මේ වගේ 1,0 ඇතුලත් වෙන binary combination කෝටිගානක් හැදෙනවා කියලා දැන් ඔයාලට තේරෙනවා.. ඒත් මෙතැනදී අපට එක ප්‍රශනයක් ඇති වෙනවා.. මේ 1 සහ 0 අගයන් ටික මතක තියාගෙන, ඒවා පිළිවෙලට සටහන් කරගෙන ක්‍රියාත්මක කරන්න නම් computer එකකට පට්ටම පට්ට brainpower එකක් අවශ්‍ය වෙනවා.. ? කෙටියෙන්ම කිව්වොත් විනාඩියක් තුල computer එකක් ඇතුලේ ඇතිවෙන binary අගයන් ටික මිනිහෙක්ට පොතක ලියන්න කියලා කිව්වොත් ඒ මිනිහට අවුරුදු 100ක ජීවිත කාලයක් ඇතුලෙවත් මේ ටික ලියලා ඉවරකරන්න බැරි වෙනවා.. මිනිසා සහ පරිගණකය අතර තියන මේ දුරස්ථභාවය යම් තාක් දුරටවත් මගහරවාගන්න තමයි අපි Programing Languages කියලා දෙයක් අපේ සහයට යොදාගන්නේ..

Programming Languages – පරිගණක ක්‍රමලේඛන භාෂා

‘ක්‍රමලේඛන භාෂාව යනු විශේෂයෙන් පරිගණකය වැනි යන්ත්‍රයක හැසිරීම පාලනය කිරීමට යොදා ගනු ලබන කෘත්‍රිම භාෂාවකි. ක්‍රමලේඛන භාෂාව පිළිවෙලින් ඒවායේ ව්‍යුහය හා අර්ථය විස්තර කරන ව්‍යාකරණ හා අර්ථ විචාර හා රීති මගින් අර්ථකථනය කෙරෙයි.’ – Wikipedia
ඒ කියපු මෙලෝ දෙයක් තේරුනේ නැත්ද.. එහෙනම් අපි උදාහරණයක් අරගෙන විස්තර කරගෙන යමුකෝ..

print ‘Hello world!’

මේ තියෙන්නේ Python කියන පරිගණක භාෂාවෙන් ලියපු simple code එකක්.. කෙටියෙන්ම හැදින්වීමක් කරොත්, පරිගණක භාෂාවක් කියන්නේ කියලා කියන්නේ යම්කිසි format එකක් අනුව, යම්කිසි ආවේනික syntax කිහිපයක් යොදාගනිමින් ලියවිලා තියන උපදෙස් පත්‍රිකාවක්.. අපි ඒ පත්‍රිකාවේ තියෙන උපදෙස් නියමාකාරයෙන් පිළිපදිමින් අපට අවශ්‍ය කරන දේ පරිගණකට තේරුම් කරලා දුන්නම, පරිගණකට ඒ වැඩේ අපට අවශ්‍ය විදියට කරලා දෙනවා.. දැන් තේරුනා නේද..? ?

මේ විදියට අපේ පහසුව සඳහා නිර්මාණය කරගත්තු programing languages 500+ අදික ප්‍රමාණයක් මේ ලෝකේ එක එක තැන්වල භාවිතාවෙනවා.. සමහර ඒවා software හදන්න, තවත් සමහර ඒවා apps හදන්න, website හදන්න වගේ එක එක කාර්යන් සඳහා මේවා භාවිතා වෙනවා.. මේ හැම language එකකම තියන විශේෂත්වය තමයි අපට binary code ලිය ලිය test කිරීමින් තොරව අපට පරිගණකයට අදාළ උපදෙස් ටික තේරෙන භාෂාවෙන්ම(English වගේ භාෂාවකින්) කියලාදෙන්න හැකියාවක් ලබාදීම…

ඇයි programing languages ගොඩක්..?

කලින් කිව්වා වගේ, අපි විවිධ කාර්යයන් සඳහා programing languages භාවිතා කරනවා.. Web development, Desktop computers, Motion graphics, web based app designing, Scientific calculations වගේ ගොඩක් දේවල්වලට. ඉතින් මේ හැම දෙයක්ම එකම පරිගණක භාෂාවකින් කරන්න අපට හැකියාවක් නැහැ. උදාහරණයක් කිව්වොත් motion graphic වලදී pixelවල වෙනස්කම් කරන්න අවශ්‍ය tools ටික අපට ලැබුනත්, desktop programing වලට අපට ඒ tools ටික භාවිතා කරන්න බැහැ.. ඒ නිසා අපි කරන්න බලාපොරොත්තු වෙන කාර්යයට අදාලව පරිගණක භාෂාවක් තෝරාගැනීම සිදු කරන්න ඕන..

Low-Level and High-Level Languages

Low level languages කියන්නේ පරිගණකයට ලේසියෙන්ම තේරුම් ගන්න පුළුවන්, binary code වලට ඉතාම ආසන්න පරිගණක භාශාවන්වලට.. High level languages කියන්නේ මිනිසාට ලේසියෙන්ම තෙරුගන්න පුළුවන් භාෂාවකින් ලියවෙලා තියෙන පරිගණක භාෂාවලට.. මේ සඳහා ඉංග්‍රීසි, සිංහල වගේ අපි එදිනෙදා භාවිතා කරන භාෂාවක් පෙන්වාදෙන්න පුළුවන්.. අද ගොඩාක් ප්‍රසිද්ධ programing languages ඔක්කොම වගේ high level languages කියලා කිව්වොත් නිවැරදියි..

Computer Programing – පරිගණක ක්‍රමලේඛනය

Program එකක් කියන්නේ සරල text file එකක්, මොකක්හරි coding language එකකින් ලියවිලා තියෙන.. මේ file එක ඇතුලේ තියෙන code එකට තමයි අපි source code එක කියලා කියන්නේ.. ඒ ඒ language එකට අදාළ file extension එකක් හැම programing language එකකටම තියෙනවා.. ඒකෙන් අපිට හදුනාගන්න පුලුවන් මොන language එකෙන්ද අදාළ program එක ලියවිලා තියෙන්නේ කියලා.. උදාහරණයක් ලෙස Python language එක ගත්තොතින් ඒකට අනන්‍ය වුනු file extension එක තමයි ‘.py’ කියලා කියන්නේ.

print ‘Hello world!’

දැන් අපි මේ තියන python code එක notepad එකක type කරලා, ඒක python වලට අනන්‍ය .py file extension එකත් එක්ක save කරොත් පරිගණකය හදුනාගන්නවා මේ තියෙන්නේ python කියන program language එකෙන් නිර්මාණය කරපු program එකක් කියලා.. ඊට පස්සේ python language එකේ තියෙන systax වලට අදාලව කියලා තියෙන දේ කරන්නයි තියෙන්නේ කියලා මෙයා තනියම හදුනගන්නවා.. හරි කොහොමහරි..
දැන් ඔක්කොම කරලා හමාර වුනහම මේ programing language පරිගණකයට තේරුම් ගන්න පුළුවන් විදියට ආයෙත් binary code වලට convert කරන්නත් වෙනවනේ.. සමහර languages වලින් නම් එක පාරම අපි ලියන program එක binary code වලට convert කරලා, තනි තනි කොටස් වශයෙන් computer එකේ memory එකට load කරගන්නවා.. තවත් සමහර languages වලට මේ ක්‍රියාවලිය තනියම සිදු කරන්න අමාරුයි.. ඒ නිසා තවත් platform එකක සහය අරගෙන තමයි අපි ලියපු program එකේ තියෙන වචන ටික binary code එකට convert කිරීම සිදු කරන්නේ.. හි හී

උදාහරණයක් කිව්වොත්, අපි javascript වලින් ලියන program එකක් web browser එක ඇතුලේ direct run කරන්න පුළුවන් වුනාට, PHP වලින් ලියපු program එකක් run web browser එකක් ඇතුලේ run කරවන්න නම් අපට xampp, wamp, lamp වගේ තවත් පරිගණක වැඩසටහනක සහය පතන්න සිද්ධවෙනවා..

අපි කලින් කතා කරපු python code එක run කරලා බැලුවොත් අපට බලාගන්න පුළුවන් command line එකක් open වෙලා Hello World කියලා display වෙනවා.. Print කියන syntax එක ඉස්සරහින් ලියන හැම වචනයක්ම පරිගණකයේ display කරන්න ඕන කියලා python language එකෙන් පරිගණකයට කල්තියා උපදෙස් දීලා තියෙන නිසා තමයි එහෙම වෙන්නේ.. දැන් කෙටියෙන් තේරෙනවා නේද language එකක් වැඩ කරන්නේ කොහොමද කියලා?

ඇත්තටම පරිගණකයට තේරෙන්නේ නැහැ “Hello World” කියන වචන කිහිපය.. මොකද මම කලිනුත් කිව්වා පරිගණකය දන්නේ 0 සහ 1 කියන අගයන් දෙක විතරයි කියලා.. ඒ නිසා print ‘Hello, world!’ කියන අපේ මූලික source code එක පරිගණකය මගින් තනිවම 0 සහ 1 ට පරිවර්තනය කරගැනීමක් සිදුකරනවා, තේරුම් ගැනීමේ පහසුව සඳහා. මේක සිංහලෙන් තියෙන text එකක් ඉංගිරිසියට translate කරනවා වගේ ලේසියෙන්ම කියන්න පුළුවන් දෙයක් නෙමෙයි..

මෙතෙන්දි සිද්දවෙන ක්‍රියාවලික කෙටියෙන් මේ විදියට පෙන්වා දෙන්න පුළුවන්..

  1.  අපි ඉංග්‍රීසියෙන් ලියපු source code එක assembly language එකට translate වෙනවා.
  2.  ඒ assembly code එක නැවතත් machine language එකට translate වෙනවා.
  3.  Machine language එක කෙලින්ම binary code එකක් විදියට execute වෙනවා.

පුදුමයි නේද?

මේ ගැන තව ටිකක් විස්තර කරන්න බලමුකෝ.. අපි මූලිකව ලියපු print ‘Hello world!’ කියන scource code එක ඉස්සෙල්ලම assembly language එකට පරිවර්තනය වෙනවා, මේ assembly language එක කියන්නේ binary patterns වෙනුවට වචන සහ සංඛ්‍යා ආදේශ කරලා නිර්මාණය වුනු low level language එකක්.. මේක කාර්යය සිද්ධ කරන්නේ interpreter එකක් හෝ compiler එකක් මගින්..

  1.  Interpreter – Program එකේ තියන දේවල් පේලියෙන් පේලිය (line-by-line) assembly language එකට පරිවර්තනය කිරීම
  2.  Compiler – සම්පූර්ණ Program එකම එක පාර memory එකට අරගෙන එක පාර assembly language එකට පරිවර්තනක කිරීම

මේ ක්‍රම දෙකෙන් මොකක්හරි එක ක්‍රමයක් මගින් තමයි අපේ Program එක assembly language එකට පරිවර්තනය කරන්නේ. ඒ ක්‍රමය මොකක්ද කියලා තෝරාගැනීම සිද්ධවෙන්නේ අපි program එක නිර්මාණය කිරීමට යොදාගන්න program language මතයි..

දැන් අපේ program එක assembly language එකට පරිවර්තනය වෙලා තියෙන්නේ.. ඊලගට අපිට සිද්ධවෙනවා assembly code ටික machine language එකට පරිවර්තනය කරගන්න..   මේක කරන්න අපි ‘assembler’ එකක් යොදාගන්නවා.. (assembler එකක් වැඩ කරන විදිහ ගැන වෙනම කතා කරමු.. මේකේ කියන්න ගියොත් එකක්වත් ඔලුවට යන එකක් නෑ  ) ඒ විදියට assembly ටික machine language එකට පරිවර්තනය කරගත්තට පස්සේ අපට පුළුවනි පරිගණයේ memory එක හරහා ඒ machine code එක යවලා, binary අගයන් විදියට පරිගණකයට තෙරුම්කරවන්න..

ඔන්න ඔය සරල කතාව තමයි පෙළ පොත්වල ළමයින්ට තේරුම්ගන්න බැරි විදියට ගැටගහලා, පටලවලා උගන්වන්නේ.. ඇත්තටම කතාව සරල වුනාට මේ ටික හරියටම තේරුම්ගත්තා නම්, නිකමට හිතලා බැලුවොත් අපි computer එකේ Paint open කරලා, brush tool එකෙන් ඉරක් ඇන්දත් ඒක පරිගකයට තේරුම්ගන්න ලොකු වෙහෙසක් දරණ බව වැටහෙනවා..

ඔයාල නොදන්න යමක් මේ පොස්ට් එකෙන් ඉගනගත්තනම් අනිත් අයටත් බලන්න share කරගෙන යන්න.. තෙරුන්නැති දෙයක් තියෙනවා නම් comment වල සාකච්චා කරමු..

Programing කියන්නේ හරිම ලස්සන කලාවක්, ආත්මයම කරගත්තොත්..

Rashan Hasaranga

Posted on 20th July 2018
408 views