ආයුබෝවන්!
මම මේක ගැන අධ්යනය කරේ ජාතික අධ්යාපන ආයතනයේ ලිපියක් කියවලා.නැත්තන් මම මේ කියන දේවල් බොරු කියලා හිතෙයිනේ.හොඳයි එහෙනම් වැඩේ පටන්ගමු.
අපි හිතමු පරිගණකයක් මගින් ගැටලුවක් විසඳ ගන්න යනවා කියලා, එහෙනම් පරිගණකය මඟින් එම ගැටලුව විසඳීමේ දී ගැටලුව විසඳිය යුතු අකාරය පරිගණකයට තේරුම් ගන්න පුළුවන් භාෂාවකින්, විධාන (command) ගොඩක එකතුවක් විදිහට පරිගණකගත කරන්න ඕනේ.මේ විදිහට අපේ පරිගණකයට සෘජුවම තේරුම් ගන්න පුළුවන් භාෂා, යන්ත්ර භාෂා කියලා හඳුන්වනවා.ඉංගිරිසියෙන් කියන්නේ Machine Languages කියලා.සාමාන්යයෙන් මේ Machine Languages වල අඩංගු විධාන සහ එම විධාන වල ස්වරුපය පරිගණකයේ Processor( සකසනය ) වර්ගය මත රඳා පවතිනවා.ඒ කිව්වේ විවිධ වර්ගවල Processor වලට තේරුම් ගන්න පුළුවන් භාෂා වල ස්වරූපය එකිනෙකට වෙනස් වෙනවා.
උදාහරණයක් විදිහට Intel Family එකේ Processorයක් සඳහා නිර්මාණය කරලා තියන Machine Languages, SPARC family එකේ Processor වල Machine Languages වලට වඩා වෙනස් වෙනවා.ඒඋනත් බොහෝ දුරට සමාන වූ Machine languages ක්රියාකරවීම සඳහා නිර්මාණය වුණු Processor වර්ගද අද වෙළඳපොලේ දකින්න පුළුවන්.උදාහරණයක් විදිහට Pentium සහ AMD processor වර්ග ගන්න පුළුවන්.
විවධ processor වර්ග සඳහා විවිධ Machine languages හඳුන්වා දී තිබුනත් ඒ ඔක්කොම Machine languages වලට පොදු වුණු එක් සුවිශේෂ ලක්ෂණයක් තියනවා.එනම් සියලු machine languages වල සියලු විධාන 0 සහ 1 සංකේතයන්ගෙන් පමණක් සමන්විත වීම.පරිගණක වැනි ඉලෙක්ට්රොනික යන්ත්ර වලට සංකේත දෙකකට පමණක් සිමා වූ ද්විමය භාෂාවන් ( Binary Language ) තේරුම් ගැනීමට හැකිවීම මෙයට හේතුව ලෙස කියන්න පුළුවන්.මේ විදිහට ද්විමය කේතයන් මත base වූ පරිගණක භාෂා පහළ මට්ටමේ භාෂා ( Low Level Languages ) ලෙස අපිට හඳුන්වන්න පුළුවන්.
මෙවැනි පහළ මට්ටමේ භාෂා අපිට එදිනෙදා පරිගණක ක්රියාකරවීම සඳහා භාවිතයට අසීරුයි.ඒත් අපේ පරිගණකයට සෘජුවම තේරුම්ගන්න පුළුවන් කාර්යක්ෂම භාෂා විශේෂයක් විදිහට හඳුන්වන්න පුළුවන්.මෙම හේතුව නිසා Machine languages නැතහොත් Low level languages පරිගණකයට ගොඩක් සමීප අපිට දුරස් පරිගණක භාෂා කියලා කිව්වොත් හරි.Machine languages භාවිතා කරලා විධාන දෙන එක අසීරු නිසා, මේ සඳහා අපිට සමීප පහසුවෙන් හසුරවන්න පුළුවන් පරිගණක භාෂා විශාල ප්රමාණයක් නිර්මාණය කරලා තියනවා.මෙම භාෂා ඉහළ මට්ටමේ පරිගණක භාෂා (High Level Languages ) කියලා හඳුන්වනවා.VB, C සහ PHP මේවට උදාහරණ ලෙස ගන්න පුළුවන්.
මොකක්හරි වැඩක් පරිගණකයෙන් කර ගැනීම සඳහා පරිගණක භාෂාවක් අනුසාරයෙන් ගොනුකළ ප්රකාශයන්ගේ එකතුවක්, පරිගණක ක්රම ලේඛයක් (Computer Programme) ලෙස හඳුන්වනවා.මෙම ප්රකාශයන්ගෙන් සමහරක් ක්රියාකරවීමට පුළුවන් විධාන වන අතර අනෙක් ඒවා ප්රකාශ විධානයන් නෙමෙයි.මෙවැනි විධානයන් නොවන ප්රකාශන මඟින් ක්රමලේඛ පහසුවෙන් තේරුම් ගැනීමට අවශ්යය තොරතුරු ( උදාහරණයක් විදිහට ගත්තොත් comments ) මෙන්ම ක්රමලේඛයක් machine language එකකට පරිවර්තනය කිරීමට අවශ්යය තොරතුරු සපයා දෙනවා.C, VB ,PHP වැනි පරිගණක භාෂා අපිට පහසුවෙන් තේරුම්ගැනීමට පුළුවන් වුවත් මෙම භාෂා පරිගණකයට සෘජුවම තේරුම්ගන්න බෑ.එබැවින් මෙම High level languages මඟින් තැනූ ක්රමලේඛයන් පරිගණකය ක්රියාකරවීමට කලින් පරිගණකයට තේරුම් ගන්න පුළුවන් Low level language එකකට පරිවර්තනය කරන්න ඕනේ.උදාහරණයක් විදිහට ගත්තොත් අපිට කියවගන්න බැරි ඉංග්රීසියෙන් තියන මොකක්හරි මගුලක් සිංහලට පරිවර්තනය කරනවා වගේ.මෙම ක්රියාවලිය භාෂා පරිවර්තනය ( Language Translation ) හෝ සම්පාදනය ( Compilation ) ලෙස හඳුන්වනවා.
ආරම්බයේ සිට අද වෙනකල් බිහිවී ඇති සියලුම පරිගණක භාෂාවන් ඒවගේ විධානයන්ගේ ස්වරූපය අනුව කොටස් 4කට වෙන් කරන්න පුළුවන්.
- පළමු පරම්පරාවේ පරිගණක භාෂා හෝ යන්ත්ර භාෂා ( Machine Languages )
- දෙවන පරම්පරාවේ පරිගණක භාෂා හෝ එසෙම්බ්ලි භාෂා ( Assembly Languages )
- තුන්වෙනි පරම්පරාවේ පරිගණක භාෂා හෝ ඉහළ මට්ටමේ භාෂා ( High Level Languages)
- හතරවෙනි පරම්පරාවේ පරිගණක භාෂා හෝ නිර්මාපිත භාෂා ( Artificial Languages )
- පරිගණක වල මිල ක්රමයෙන් පහත වැටීම හා පරිගණක සාමාන්යය පුද්ගලයෙකුට මිලදී ගතහැකි උපකරණයක් බවට වීම.
- පරිගණක වල ධාරිතාවයන් ( Storage ) හා දත්ත සැකසීමේ වේගය( Processing Speed ) ක්රමයෙන් වැඩිවීම.
- පරිගණක වල විශාලත්වය පොඩි වීම.
- පරිගණක විවිධ කාර්යයන් මෙන්ම සංකීර්ණ කාර්යයන් සඳහා යොදාගැනීම.
පළමු පරම්පරාවේ පරිගණක භාෂා
සියලුම Machine languages මේ ගණයට අයත්වෙනවා.අපි බලමු මේ භාෂා වලට පොදු වූ ලක්ෂණ මොනවද කියලා,
- සියලු විධාන 0 සහ 1 යන ද්විමය කේත භාවිතයෙන් ප්රකාශ කළයුතු වීම.
- වැඩහටහන් සම්පාදනය හා විධාන පරිගණකයට ඇතුලත් කිරීම ඉතාම සංකීර්ණ කාර්යයක් වීම.
- යන්ත්රයේ වර්ගය මත යැපෙන භාෂාවක් වීම.ඒ කිව්වේ එක් වර්ගයක processor සඳහා සම්පාදනය කල ක්රමලේඛයන් වෙනස් processor වර්ගයක් මත ක්රියාත්මක කල නොහැකි වීම.
- පරිගණයේ විවිද දෘඩාංග පිළිබඳව හොඳ දැනීමක් තිබිය යුතු වීම.
දෙවන පරම්පරාවේ පරිගණක භාෂා
මෙම වර්ගයේ භාෂා 0 හා 1 යන ද්විමය සංකේත පමණක් භාවිතයෙන් ක්රමලේඛ ගොඩනැගීමට ඇති අපහසුතාව මඟහැරීම සඳහා බිහිවූ භාෂා විශේෂයකි.මෙම වර්ගයේ භාෂාවන් ගෙන් සම්පාදිත ක්රමලේඛ පරිගණකයට සෘජුවම ක්රියාකරවීමට නොහැකිය.ඒ සඳහා Assembler නම් වූ භාෂා පරිවර්තකයන් මගින් එම ක්රමලේඛ හෝ විධානයන් අදාල යන්ත්ර භාෂාවට පරිවර්තනය කරන්න ඕනේ.අපි බලමු මේ භාෂා වලට පොදු වූ ලක්ෂණ මොනවද කියලා,
- විධාන ADD , SUB වැනි සරල සංකේත නාමයන් මගින් දැක්වීම.
- සරල සංකේත නාම භාවිතයෙන් පරිගණක මතකයේ දත්ත ගබඩා කිරීමට හා නැවත ලබාගැනීමට හැකිවීම.
- ක්රම ලේඛයන් නිදොස් කිරීම ( Debugging ) යන්ත්ර භාෂා ක්රමලේඛ නිදොස් කිරීමට වඩා පහසුවීම.
- යන්ත්ර මත යැපෙන භාෂාවන් වීම.
- ක්රමලේඛ ලිවිම සඳහා දෘඩාංග පිලිබඳ හොඳ දැනුමක් අවශ්ය වීම.
තුන්වන පරම්පරාවේ පරිගණක භාෂා
වර්තමානයේ භාවිතා වන C, VB වැනි පරිගණක භාෂා මේ ගණයට අයත් වෙනවා.මේ භාෂාද එසෙම්බ්ලි භාෂා මෙන් ම පරිගණකයට සෘජුවම තේරුම් ගැනීමට නොහැකියි.එමනිසා භාෂා පරිවර්තක මෘදුකාංගයක් මගින් මෙම භාෂාවන්ගෙන් ලියවුනු ක්රමලේඛ අදාල පරිගණකයේ යන්ත්ර භාෂා වලට පරිවර්තනය කරගන්න ඕනේ.අපි බලමු මේ භාෂා වලට පොදු වූ ලක්ෂණ මොනවද කියලා,
- ඉංග්රීසි වැනි අපිට සමීප භාෂාවන් මත පදනම් වී තිබීම.
- යන්ත්ර මත යැපෙන භාෂාවක් නොවීම.
- ක්රමලේඛ ලිවීමට හා ඒවා නිදොස් කිරීමට පහසු වීම.
හතරවන පරම්පරාවේ පරිගණක භාෂා
ක්රමලේඛ ලිවීම සඳහා ගත කළයුතු කාලය අඩු කිරීමේ අරමුණින් නිර්මාණය වූ භාෂා මෙම වර්ගයට අයත් වෙනවා.
- ඉංග්රීසි වැනි මානව භාෂාවන්ට ඉතා සමීප වීම.
- සාමාන්ය මිනිස්සුන්ටකෙටි කාලයකින් ඉගෙන ගැනීමට හැකි වීම.
- ඉතා අඩු හෝ අවම විධාන සංක්යාවකින් කාර්යයන් කරගැනීමට හැකි වීම.
පරිගණකයට සෘජුවම ක්රියාකරවීමට හැකිවෙන්නේ 0 හා 1 යන ද්විමය කේතයන් මත පදනම් වූ යාන්ත්රික භාෂාවක් පමණක් කියලා අපි දැන් දන්නවනේ.එමනිසා යාන්ත්රික නොවන එසෙම්බ්ලි වැනි දෙවැනි හා තුන්වැනි පරම්පරාවේ භාෂාවන්ගෙන් ලියවුනු ක්රමලේඛ හෝ විධාන පරිගණකයක් තුළ ක්රියාත්මක කිරීමට පෙර පරිගණකයට තෙරුම්ගතහැකි යාන්ත්රික භාෂා බවට සුදුසු පරිගණක මෘදුකාංගයක් මගින් පරිවර්තනය කරගන්න ඕනේ,මෙසේ එක් පරිගණක භාෂාවක් තවත් භාෂාවකට පරිවර්තනය කිරීමේ ක්රියාවලිය පරිගණක භාෂා පරිවර්තනය (Translation) ලෙස හඳුන්වනවා.මෙම කාර්යය සඳහා භාවිතා කළ හැකි ප්රධාන ක්රමවේද තුනක් තියනවා.
- සම්පාදක (Compilers) භාවිතය.
- අර්ථ වින්යාසක (Interpreters) භාවිතය.
- ඉහත සංකලන දෙක භාවිතය.
සම්පාදක - Compilers
සම්පාදක වර්ගයේ මෘදුකාංග මගින් ක්රමලේඛයේ ඇති සියලු විධාන එකවර යාන්ත්රික භාෂාවට හැරවීම සිදු කරනවා.මෙසේ ක්රමලේඛය නැවත පරිවතනයකින් තොර ව විවිධ දත්ත සඳහා ක්රියාත්මක කරන්න පුළුවන්.C, FORTRAN පරිගණක භාෂා සම්පාදක මේ සඳහා උදාහරණ විදිහට ගන්න පුළුවන්.
සම්පාදක මගින් භාෂා පරිවර්තනයේදී පරිවර්තනය සඳහා යොදාගන්නා මුල් ක්රමලේඛය ප්රභව ක්රමලේඛය( Source Programme) ලෙසද පරිවර්තනයෙන් පසු ලබාගන්නා ක්රමලේඛය විෂය ක්රමලේඛය (Object Programme)ලෙසද හඳුන්වනවා.භාෂා සම්පදකයක් මගින් සිදුවන ප්රධාන ක්රියාවලිය වන්නේ ප්රභව ක්රමලේඛය, විෂය ක්රමලේඛයට පරිවර්තනය කිරීමයි.භාෂා පරිවර්තන ක්රියාවලියේදී පරිගණක පරිවර්තකයා (Translator) සිදුකරන තවත් ප්රධාන කාර්යයක් නම් ප්රභව ක්රමලේඛයහි ඇති වැරදි හඳුනා ගැනීමයි.වැරදි සහිත ක්රමලේඛ පරිවර්තකයන් මගින් විෂය ක්රමලේකනයට පරිවර්තනය කළ නොහැකියි.එමනිසා ක්රමලේඛනයන් ගේ ඇති සියලු වැරදි හඳුනා ගැනීම හා නිදොස් කිරීම මෙම ක්රියාවලියේ දී සිදු කළ යුතුය.මෙසේ ක්රමලේකනයන්ගේ ඇති වැරදි හඳුනා ගැනීම සහ වැරදි නිදොස් කිරීමේ ක්රයාවලිය 'Debugging' ලෙසද ක්රමලේඛනයන්ගේ ඇති වැරදි 'Bugs' ලෙසද හඳුන්වනවා.
අර්ථ වින්යාසක - Interpreters
අර්ථ වින්යාසක මෘදුකාංග මගින් මුළු ක්රමලේකයම එකවර යාන්ත්රික භාෂාවකට පරිවර්තනය කිරීම සිදු නොවේ.මෙහිදී සිදුවන්නේ ක්රමලේඛයේ අන්තර්ගත විධාන එකිනෙක ක්රියාත්මක කිරීමේ අවස්ථාවේදී අදාල යාන්ත්රික භාෂා විධාන සමුහයකට පරිවර්තනය කිරීමයි.මෙහි ප්රතිපලය වන්නේ මෙම වර්ගයේ ක්රමලේඛයක් ක්රියාකිරීමට ගන්න කාලය සම්පාදනය කළ ක්රමලේඛයට ගන්නා කාලයට වඩා වැඩියි.VB , Python මෙම වර්ගයට අයත් පරිහනක භාෂා ය.
සම්පාදක හා අර්ථ වින්යාසක හි සංකලනයක් භාෂා පරිවර්තනය සදහා යොදා ගැනීමේදී මුලින්ම ක්රමලේඛයේ ඇති විධාන අතරමැදි පරිගණක භාෂාවකට පරිවර්තනය කෙරනවා.ඉන්පසු මෙම අතරමැදි භාෂාවෙන් වූ ක්රමලේඛය අර්ථ වින්යාසක මාර්ගයෙන් පරිගණකයේ ක්රියාත්මක කෙරෙනවා.JAVA මේකට උදාහරණයක්.
එහෙනම් ඔන්න ලිපිය අවසානයි.ප්රයෝජනයක් ගන්න ඇති කියලා හිතනවා.මම ගියා.ජයශ්රී!
No comments:
Post a Comment