Monday, April 18, 2016

c හා c++ ප්‍රෝග්‍රැමිං - 2


අතිරේකය 1 - පරිගණක හැඳින්වීම

කොම්පියුටරයක් යනු දැනට ලොව මිනිසා විසින් සාදා තිබෙන දියුණුතම මෙන්ම ඉතාම ප්‍රයෝජනවත්ම ඉලෙක්ට්‍රොනික උපකරණය බව විවාදයක් නැහැ. එය මූලික කොටස් 3කින් සැදුම් ලද්දකි. එම කොටස් 3 නම්, දෘඩාංග (hardware), මෘදුකාංග (software), හා ජීවාංග (liveware/humanware) වේ. පරිගනකය වාහනයකට උපමා කළොත්, වාහනයේ රෝද, එන්ජිම ආදී අතින් ඇල්ලිය හැකි කොටස් හාඩ්වෙයාර් ලෙසද, වාහනයට යොදන ඉන්දන සොෆ්ට්වෙයාර් ලෙසද, වාහනය එලවන රියදුරා ලයිව්වෙයාර් ලෙසද සැලකිය හැකියි.

 
සෑම යන්ත්‍රයකින්ම යම් නිශ්චිත රාජකාරියක් කරගත හැකියි. ඔබ දන්නා යන්ත්‍ර/උපකරණ කිහිපයක් ගැන සිතා බලන්න; ඒ එක් එක් උපකරණයෙන් කරන රාජකාරිය කුමක්ද? සමහර යන්ත්‍රවලින් රාජකාරි කිහිපයක්ම කරගත හැකියි නේද? ඒ අනුව පරිගණකයක රාජකාරිය කුමක්ද? ඊට ලැබෙන පිළිතුර නම් හරිම විශාල විය හැකියි මොකද ඉන් කරගත හැකි දේවල් සිතාගත නොහැකි තරම්ය. කුඩා ළමයාගේ සිට විද්‍යාඥයා දක්වා විවිධ තරාතිරමේ අය එය විවිධාකාරයේ ප්‍රයෝජන සඳහා යොදා ගන්නවා. කුඩා ළමුන් ගේම් ප්ලේ කරන්නටත්, ඉලෙක්ට්‍රොනික්ස් ඉංජිනේරුවකු අතිසංකීර්ණ අයිසී ඩිසයින් කිරීමට, තාරකා විද්‍යාඥයකු විශ්වයේ ජීවින් සිටීද යන්න සොයා බැලීමට ආදී ලෙස පරිගණකයක් යොදා ගන්නා අවස්ථා ඔබම කල්පනා කර බලන්න. ඇත්තටම ඔබ සිතනවාට වඩා විශාල වැඩ ප්‍රමාණයක් පරිගණකයකින් සිදු කර ගන්නවා. ඔබ මේ ලෝකයේ පවතින විවිධ අධ්‍යන ක්ෂේත්‍ර කොතරම් ප්‍රමාණයක් දනීද? අප දන්නේ අප කරන කියන හා ඉගෙන ගත් දේවල් පමණි. එහෙත් අපගේ දැනුවත්බවක් නැතිව අතිවිශාල ක්ෂේත්‍රයන් ප්‍රමාණයක් ලෝකයේ තිබෙනවා. ඒ බොහෝ දේවල්වලට පරිගණකය හවුල් කරගන්නවා. කලා, විද්‍යා, ඉංජිනේරු, වානිජ ආදී ක්ෂේත්‍රයන් සියල්ලෙහිම පරිගනක භාවිතා වෙනවා.

ඉහත පෙන්වූ පරිදි පරිගණකයක් බහුකාර්ය (multipurpose) වේ. එහෙත් ඒ සියලුම කාර්යන්වල පොදු ලක්ෂණ සලකා පරිගණකයකින් ඇත්තටම සිදු කරන කාර්ය පහත ආකාරයට නිර්වචනය කළ හැකියි.

පරිගනකයක් යනු ඊට ඇතුලු කරන දත්ත තොරතුරු බවට සකසා, එම දත්ත හා තොරතුරු පිට කිරීමට, ගබඩා කර ගැනීමට, හා සන්නිවේදනය කිරීමට හැකි බහුකාර්ය ඉලෙක්ට්‍රෝනික උපකරණයකි.”

“A computer is a multipurpose electronic machine that can be programmed to input data, process data into information, and output, store, or communicate those data/information.”

ඇත්තටම ඉහත නිර්වචනය තුළ තද අකුරින් පෙන්වා ඇති වචනවලින් කියන දේ හොඳින් තේරුම් ගත් විට පරිගණකයේ සත්‍ය ස්වභාවය ඉතාම පැහැදිලි වේ. ඉහත නිර්වචනය තුළ කියවෙන එම දේවල් ඒ විදියට සිදු කිරීමට හාඩ්වෙයාර්, සොෆ්ට්වෙයාර්, හා ලයිව්වෙයාර් යන මූලිකාංග 3ම අවශ්‍ය බව තේරුම් ගන්න.

ඩේටා (දත්ත) යනු යම් යම් සිදුවීම් හා දේවල් නිසා ජනනය වන මූලික කරුණු වේ (raw facts). අප කරන සෑම ලොකු කුඩා ක්‍රියාවක් නිසාම දත්ත ජනනය වේ. අප කරන දේවල්වලින් දත්ත ජනනය වන්නේ නැතිනම්, ඒ ඒ දේවල් ගැන අපට කතා කරන්නටත් දෙයක් නොමැති වේවි. අප කොච්චර දේවල් ගැන කතා කරනවාද කියා සිතා බලන්න. ඒ කතා කරන්නේ ඒ ඒ දේවල පවතින දත්ත තමයි. එනිසා දත්ත යනු නිරන්තරයෙන් ජනනය වන දෙයකි. "ක්‍රියාකාරිත්වයන්" (transactions) හෙවත් "ගනුදෙනු" නිසා දත්ත බිහි වේ යනුවෙන් පතපොතෙහි සඳහන් වෙනවා.

ඉන්ෆොමේෂන් (තොරතුරු) යනු දත්තවලින් ගොඩනඟා ගන්නකි. ඇත්තටම දත්ත ස්වාභාවිකව ජනනය වුවත්, තොරතුරු එසේ ස්වාභාවිකව හටගන්නේ නැත. තොරතුරු කෘත්‍රිමව සාදා ගන්නකි. ඒවා සාදන්නේ දත්ත රාශියක් මත විවිධ "බුද්ධිමය" කර්මයන් (operations) සිදු කරමින්ය. පරිගනක නොමැති කාලයේ හා පරිගනක තිබෙන වර්තමාන කාලයෙත් මෙලෙස දත්තවලින් තොරතුරු සාදාගත් හොඳම උපාංගය මොලයයි (brain). අපේ මොලය සැකසී තිබෙන්නේම මේ සඳහාය. අදටත් කිසිදු පරිගනකයකට බැහැ මිනිස් මොලයේ අපූර්ව ක්‍රියාකාරිත්වය අභිබවා යෑමට.

ඉතිං දත්ත හා තොරතුරු ලෙස දෙවර්ගයක් ගැන කතා කරන්නේ ඇයි? ඊට පිළිතුර සරලයි. දත්ත එතරම් විශ්වාසනීය (reliable) නොවේ. ඒ මත හොඳ නිවැරදි තීරණ ගත නොහැකියි. සමහරවිට අතිවිශාල දත්ත සමූහයක් තිබිය හැකියි; එහෙත් ඉන් කිසිදු වැදගත් තීරණයක් ගත නොහැකි වන්නට පුලුවන්. ඉතිං එවැනි දත්තවලින් විශ්වාසනීය තීරණ ගැනීමට නම්, එම දත්ත තොරතුරු බවට පත් කර ගත යුතුය. දත්ත හා තොරතුරු අතර මෙම වෙනස මා කුඩා කතාවක් ඇසුරින් පෙන්වා දෙන්නම්.

ඔබේ ගමේ යම් ගෙදරකට හොරු පැන්නා යැයි සිතමු. එවිට එය විමර්ශනය කිරීමට පොලිසියෙන් එනවානෙ. ඔවුන් ඇවිත් නිවැසියන්ගෙන් හා අසල්වැසියන්ගෙන් කටඋත්තර ලබා ගන්නවා. ඔවුන් ඒවා පොත්වලත් ලියා ගන්නවා. ඇත්තටම පොලිසිය මේ සිදු කළේ දත්ත එකතු කිරීමයි. කටඋත්තර දෙන විට විවිධ අය විවිධ දේවල් කියනවා. උදාහරණයක් ලෙස, නිවැසියෙක් කියාවි හොරා අඩි 6ක් විතර උස, සිහින් කෙනෙක් කියා. එහෙත් ඔබට තේරෙනවානෙ එම දත්තය ප්‍රමාණවත් නැහැ කියල හොරාව සොයන්නට තරම්. එහෙත් එම දත්තය හොඳ හෝඩුවාවක් මොකද ඉන් පොලිසියට පුලුවන් කොට හෝ මහත සැකකරුවන් ඉවත් කරන්නට. එහෙත් එකවරම පොලිසිය එසේ නිවැසියාගේ කටඋත්තරය මත එම තීරණය ගන්නේද නැත මොකද නිවැසියාට වරදින්නට පුලුවන්; එහෙමත් නැතිනම් බොරු කියන්නටත් පුලුවන්. ඒ කියන්නේ නැවතත් අපට පැහැදිලි වෙනවා දත්ත එතරම් විශ්වාසනීය නොවන බව. එහෙමයි කියලා දත්ත විසි කර දැමීටම බැහැ මොකද අපට පුලුවන් එවැනි දත්ත විශාල ප්‍රමාණයක් එකතු කර ගෙන ඒවායෙන් විශ්වාසනීය තොරතුරු ලබා ගන්නට. නැවතත් අපි කතාව දෙස හැරෙමු.

අසල්වාසියෙකුගේ කටඋත්තරයකත් තියෙනවා හොරා උස සිහින් කෙනෙක් කියා (අසල්වාසියාත් හොරාව දැක තිබෙනවා). ඉතිං දැන් නම් පොලිසියට තරමක් විශ්වාසයි හොරා උස සිහින් කෙනෙක් කියා. එලෙස කියන සාක්ෂි වැඩිවන තරමට පොලිසියට ඒ කරුණ ගැන විශ්වාසය වැඩි වේ. ඒ කියන්නේ කිහිප දෙනෙකුගේ දත්තවලින් දැන් අපට යම් වැදගත් තොරතුරක් ලැබී තිබෙනවා. එහෙත් තවමත් මෙම තොරතුර පවා ප්‍රමාණවත් නැහැ හොරාව අල්ලන්නට. ඉතිං පොලිසිය විවිධ සාක්ෂි සොයන අතරේ කෙනෙකු කියනවා එවැනි කෙනෙක් තමන් දැක්කා ඒ කියන වෙලාවේ මෝටර් සයිකලයකින් අහවල් පැත්තට වේගෙන් යනවා කියා. එයත් හොඳ හෝඩුවාවක් හෙවත් දත්තයක්. බලන්න දත්ත අතර සම්බන්දතා ගොඩනැඟෙන හැටි. පොලිසිය මේ ගැන සොයන විට ඔවුන්ට ලැබෙනවා CCTV කැමරා දර්ශන. එහි අර කියන ජාතියේ කෙනෙකු මෝටර් සයිකලයෙන් එතැනින් යනවා පෙනෙනවා. මෝටර් සයිකලේ අංකයත් එහි පෙනෙනවා. මේ සියලු කාරණා දත්ත වේ. ඉතිං ඔහුව දැන් පහසුවෙන් සොයා ගත හැකියි මොකද එම අංකය සහිත මෝටර් සයිකලය පහසුවෙන් සොයාගත හැකියිනෙ. මේ ආකාරයට පොලිසිය හොරාව හරියටම නිශ්චය කර ගන්නවා. ඒ කියන්නේ විශාල දත්ත සංඛ්‍යාවක් විශ්ලේෂණය කර අවසානයේ පොලිසියට හැකි වූවා නිවැරදි අවසන් තොරතුර ලබා ගන්නට.

බලන්න කුඩා තොරතුරු කිහිපයක් සකසා ගැනීමට කොතරම් දත්ත ප්‍රමාණයක් අවශ්‍ය කළාද කියා. මේ සියල්ල කළේ පොලිස් නිළධාරින්ගේ මොලයෙන්. ඇත්තටම පරිගණකය යනුද දත්ත තොරතුරු බවට පත් කරන උපකරණයකි. වාසනාවකට හෝ අවාසනාවකට හෝ තවමත් පරිගනකයට බැහැ මිනිස් මොලය පරදන්නට.

හාඩ්වෙයාර් යනු අතින් ඇල්ලිය හැකි කොටස්ය. උපාංග (devices) යනුවෙන්ද බොහෝවිට හාඩ්වෙයාර් හඳුන්වනවා. පරිගණකයක එකවරම පිටතින් පෙනෙන කොටස් සේම, එකවරම ඇසට හසු නොවන හාඩ්වෙයාර් කොටස්ද ඇත. උදාහරණයක් ලෙස, පරිගණකයේ කේසිං එක ගැලවූ විට අපට රැම්, හාඩ්ඩිස්ක්, මදර්බෝඩ් වැනි විවිධාකාරයේ හාඩ්වෙයාර් කොටස් විශාල ප්‍රමාණයක් දැක ගත හැකියි.

මූලිකවම හාඩ්වෙයාර් නැවත ප්‍රධාන කොටස් 5කට බෙදිය හැකියි. ඒවා නම්, ආදාන (input), ප්‍රතිදාන (output), සැකසුම් (processing), ගබඩා (storage), ජාල (networking) හෙවත් සන්නිවේදන (communication) වේ.

 
ඉන්පුට් ඩිවයිසස් යනු පරිගනකයට දත්ත ඇතුලු කරන උපාංගයි. එය අත්‍යවශ්‍යයි මොකද පරිගනකයේ රාජකාරිය දත්ත මත ක්‍රියා කිරීමයි. දත්ත මත ක්‍රියා කිරීමට (එනම් දත්ත සැකසීමට) නම් දත්ත ඊට ඇතුලු කළ යුතු වෙනවානෙ. ඒ සඳහා තමයි යතුරු පුවරුව (keyboard), මවුසය (mouse), මයික්‍රොෆෝනය (microphone), ස්කැනරය (scanner) වැනි උපාංග තිබෙන්නේ. මූලිකව 3 ආකාරයක දත්ත පරිගණකයකට ඇතුලු කළ හැකියි. පළමු ආකාරය තමයි අකුරු හා ඉලක්කම් ලෙස පවතින දත්ත ඇතුලු කිරීමට. මේ සඳහා කීබෝඩය මූලික වේ. දෙවැනි දත්ත ස්වරූපය තමයි ශබ්ද (audio/sound). මයික් එක ඊට මූලික වේ. තෙවැනි ආකාරය තමයි රූප (නිශ්චල හා චංචල යන දෙවර්ගයම) ඇතුලු කිරීම. ඒ සඳහා ස්කැනරය හොඳම උදාහරණයකි.

 
දත්ත ඇතුලු කළ පසු එම දත්ත තොරතුරු බවට පෙරලිය යුතුයි. ඒ සඳහා තමයි සැකසුම් උපාංග තිබෙන්නේ. පරිගණකයේ මෙම සැකසීම සිදු කරන උපාංගය මයික්‍රොප්‍රොසෙසරය (microprocessor) ලෙස හැඳින්වෙනවා. මෙයම මයික්‍රොකොන්ට්‍රෝලර් (microcontroller), මධ්‍යම සැකසුම් ඒකකය (Central Processing Unit – CPU) ලෙසත් හැඳින්වෙනවා. සමහරුන් කෙටියෙන් "ච්ප් එක", "ප්‍රොසෙසර් එක" කියාද කියනවා. එය පරිගනකයේ තිබෙන හදවත හා මොලය යන දෙකම වේ. පෙන්ටියම් ආදී නම්වලින් ප්‍රොසෙසර් වර්ග විශාල ගණනක් වෙළඳපොලේ ඇත. මෙම ප්‍රොසෙසරයට උදව් කරන තවත් උපාංග ඇත. මේ සියල්ලම රඳවා තිබෙන්නේ මව්පුවරුව (motherboard) මතය. ඒ අනුව මදර්බෝඩ් එකත් ප්‍රොසෙසිං උපාංගයක් ලෙස සැලකිය හැකියි.




ඇත්තටම පරිගණකයක් තුලදී දත්තවලින් තොරතුරු ලබා ගැනීමට කරන කර්මයන් පෙනෙන තරම්ම සංකීර්ණ නැත. අවසානයේ කොතරම් විස්මයජනක දේවල් පරිගනකයකින් සිදු කර ගත්තත්, ඒ සියලු දේවල් සිදු වන්නේ මේ කියනා කර්මයන් ක්‍රියාත්මක කිරීමෙන්ය. ඒ සියලු කර්මයන් කාණ්ඩ කිහිපයකට බෙදිය හැකියි.

1. mathematical operations - මේවා ගණිත කර්ම වේ. මූලිකවම එම ගණිත කර්ම නම්, එකතු කිරීම (addition), අඩු කිරීම (subtraction), වැඩි කිරීම (multiplication), හා බෙදීම (division) වේ. විවිධ දත්ත මත මෙවැනි ගණිත කර්ම සිදු කිරීමට අවශ්‍ය වේ. උදාහරණයක් ලෙස, 4 හා 5 යන දත්ත දෙක එකතු කරන්නට අවශ්‍ය වූ විට, එකතු කිරීම යන ගණිත කර්මය සිදු කිරීමට සිදු වෙනවා.

5 + 4
3 – 1
4/3
3*2

2. relational operations - සැසඳීමේ කර්ම මේවාය. එනම් දී තිබෙන අගයන් දෙකක් සැසඳිය හැකියි. යම් අගයක් තවත් අගයකට වඩා විශාලයි, යම් අගයක් තවත් අගයකට වඩා කුඩායි ආදී ලෙස සංසන්දනය කිරීමට මින් හැකියි. එම රිලේෂනල් කර්ම පහත දැක්වේ.

x > y (x විශාලයි y ට වඩා)
x >= y (x විශාලයි හෝ සමානයි y ට වඩා)
x < y (x කුඩායි y ට වඩා)
x <= y (x කුඩායි හෝ සමානයි y ට වඩා)
x = y (x සමානයි y)
x <> y හෝ x != y (x අසමානයි y)

ඉහත ආකාරයට යම් අගයක් දෙකක් සැසඳු පසු අපට අවසානයේ ලැබෙන්නේ ඔව්/සත්‍ය හෝ නැහැ/අසත්‍ය යන පිළිතුරු දෙකින් එකකි. උදාහරණයක් වශයෙන් 5>2 යන ප්‍රකාශය සත්‍ය වේ. ඒ කියන්නේ එම ප්‍රකාශයේ අවසන් පිළිතුර "සත්‍ය" යන්නයි. පරිගනක දත්ත සැකසීමේදී මෙවැනි සත්‍ය හා අසත්‍ය යන අගයන් දෙක සුවිශේෂි වේ (පහත විස්තරය බලන්න).

2. logical operation - මේවා තාර්කික කර්මයි. සත්‍ය හා අසත්‍ය යන සුවිශේෂි අගයන් දෙක මත පමණක් මෙම කර්මයන් සිදු කෙරේ. තාර්කික කර්ම කිහිපයක් ඇත – AND, OR, NOT, NAND, NOR, XOR, XNOR. ගණිත හා සැසඳීමේ යන කර්ම වර්ග දෙකෙහිම එම කර්මයන්ට බඳුන් වූයේ සංඛ්‍යා වැනි දත්තයි. එහෙත් තාර්කික කර්මවලදී කර්මයන්ට බඳුන්වන්නේ සත්‍ය හා අසත්‍ය යන සුවිශේෂි දත්ත වර්ග දෙකයි. මෙමඟින් පුලුවන් සංකීර්ණ ප්‍රකාශයක් කුඩා සරල ප්‍රකාශ ගණනාවකට කඩා සමස්ථ සංකීර්ණ ප්‍රකාශයෙහිම සත්‍ය අසත්‍යතාව බැලීමට එම එක් එක් කුඩා ප්‍රකාශවල සත්‍ය අසත්‍යතාවන් සොයා බලා. උදාහරණයක් බලමු.

යම් තරගයකට ඇතුලු වීමට පහත කොන්දේසි සැපිරිය යුතු යැයි සිතමු.
  • වයස 16ට වඩා වැඩි වීම
  • උස අඩි 5ට වඩා වැඩි වීම
  • කොළඹ දිස්ත්‍රික්කයේ පදිංචිව සිටීම හෝ කොළඹ පාසලක ඉගෙන ගෙන සිටීම

දැන් කෙනෙකු තරගයට සහභාගී වීමට පැමිණෙයි. එවිට සංවිධායකයන් ඔහුගේ විස්තර ඉහත කොන්දේසි සමග සසඳා බලයි. සිතමු ඔහුගේ වයස 17, උස අඩි 5 අඟල් 4ක්ද වන බව. තවද, ඔහු පදිංචිව සිටින්නේ නුවර වන අතර කිසිදා කොළඹ පාසලකට ගොස් නැත. එවිට සංවිධායකයා පහත දැක්වෙන ආකාරයට සංසන්දනය කිරීම පිළිවෙලට සිදු කරයි. (වරහන් තුළ ඇත්තටම පවතින AND, OR යන තාර්කික කර්ම පෙන්වා ඇත.)

වයස 16ට වැඩි නිසා ඒක හරි… සහ (AND)
උස අඩි 5ට වැඩි නිසා ඒක හරි... සහ (AND)
(කොළඹ පදිංචි නැත) හෝ (OR) (කොළඹ පාසල් ගොස් නැත) නිසා ඒක වැරදියි…

කොන්දේසි සියල්ල සපුරා නැති නිසා අවසන් පිළිතුර වන්නේ ඔහුට තරගෙට සහභාගී වීමට බැරි බවයි. ඒ කියන්නේ තොරතුරු/කොටස්/ප්‍රකාශ කිහිපයක් සහිත සංකීර්ණ/සංයුක්ත ප්‍රකාශයක් ඉතාම පහසුවෙන් සුලු කළා. මෙය පරිගනකයක් ඇසුරින් සුලු කරන්නට ගියොත් තාර්කික කර්ම තමයි මූලිකව සිදු කරන්නට තිබෙන්නේ. දැන් අපි බලමු තාර්කික කර්ම ගැන කෙටියෙන්.

ඇන්ඩ් (and) යන තාර්කික කර්මයෙන් කියන්නේ දී ඇති කාරණා සියල්ලම සත්‍ය නම් පමණක් අවසන් පිළිතුර සත්‍ය වන බව. එය වගුවක් ආකාරයෙන් පහත දැක්වේ. සාමාන්‍යයෙන් සත්‍ය (true) යන අගය 1 මඟින් හෝ T යන අකුර මඟින් නිරූපණය කළ හැකි අතර, අසත්‍ය (false) යන අගය 0 මඟින් හෝ F යන අකුර මඟින් නිරූපණය කළ හැකියි.

A
B
A AND B
0
0
0
0
1
0
1
0
0
1
1
1

ඉහත ආකාරයෙන් වගුවක් මඟින් ඉතාම සංක්ෂීප්තව අලංකාරවත් විදියට තාර්කික කර්මවල සම්පූර්ණ ක්‍රියාකාරිත්වය කැටි කොට දැක්විය හැකියි. එවැනි වගු සත්‍යතා වගු (truth table) ලෙස හැඳින්වෙනවා. ඉහත ඇන්ඩ් කර්මය සිදු කළේ අගයන් දෙකක් මතයි; එම අගයන් දෙක A, B ලෙස නම් කර ඇත. අප කියනවා ඇන්ඩ් කර්මයේ ඉන්පුට් 2ක් තිබුණු බව. ඇත්තටම අපට හැකියි ඕනෑම තාර්කික කර්මයක් සඳහා ඕනෑම තරමක ඉන්පුට් ගණනක් ගැනීමට. බොහෝවිට ඉන්පුට් 2ක් හොඳටම ප්‍රමාණවත් තාර්කික කර්මයක ක්‍රියාකාරිත්වය නිරූපණය කිරීමට. උදාහරණයක් ලෙස පහත දැක්වෙන්නේ ඉන්පුට් 3ක් මත ක්‍රියාත්මක වන ඇන්ඩ් කර්මයේ සත්‍යතා වගුවයි.

A
B
C
A AND B AND C
F
F
F
F
F
F
T
F
F
T
F
F
F
T
T
F
T
F
F
F
T
F
T
F
T
T
F
F
T
T
T
T

ඉන්පුට් ගණන කොතරම් වුවත් ඇන්ඩ් කර්මයෙන් කරන දේ වෙනස් වන්නේ නැත. සියලුම ඉන්පුට් සත්‍ය නම් පමණි අවසන් පිළිතුර සත්‍ය වන්නේ. ඕර් (or) යන තාර්කික කර්මයෙන් කියන්නේ ඊට වෙනස් දෙයකි. එනම්, ඉන්පුට්වලින් එකක් හෝ සත්‍ය නම් අනිවාර්යෙන්ම අවසන් පිළිතුර සත්‍ය වේ. එහි සත්‍යතා වගුව පහත දැක්වේ.

A
B
A OR B
0
0
0
0
1
1
1
0
1
1
1
1

නොට් (not) කර්මය ඉතාම සරලය. එය විසින් හැමවිට ඉන්පුට් අගයට විරුද්ධ අගය ප්‍රතිදානය කරනවා. එහි සත්‍යතා වගුව පහත දැක්වේ. හැමවිටම ඉන්පුට් එකක් පමණයි තිබිය හැක්කේ.

A
NOT A
0
1
1
0

මූලික තාර්කික කර්ම 3 ඒවාය. ඊට අමතරව එම කර්මයන් එකිනෙකට මිශ්‍ර කර පහත දැක්වෙන තාර්කික කර්මත් සිදු කළ හැකියි. උදාහරණයක් ලෙස, නෑන්ඩ් කර්මය සකස් කර තිබෙන්නේ ඈන්ඩ් හා නොට් කර්ම දෙක මිශ්‍ර කරමින්ය. නෝර් කර්මය සකස් කර ගෙන තිබෙන්නේ ඕර් හා නොට් කර්ම දෙක මිශ්‍ර කරලාය.

A
B
A AND B
NOT (A AND B) = NAND
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0

A
B
A OR B
NOT (A OR B) = NOR
0
0
0
1
0
1
1
0
1
0
1
0
1
1
1
0

පහත xor හා xnor යන තාර්කික කර්ම දෙකම එකම සත්‍යතා වගුවේ සටහන් කර ඇත.

A
B
A XOR B
A XNOR B
0
0
0
1
0
1
1
0
1
0
1
0
1
1
0
1

කොම්පියුටරයේ ප්‍රොසෙසර් එක විසින් ඉහත සියලුම ආකාරවල කර්මයන් උපයෝගි කරගෙන තමයි දත්ත තොරතුරු බවට පත් කරන්නේ. ඔබට එය විශ්වාස කළ හැකි වුවත්, නැති වුවත්, සත්‍යය නම් එයයි. ඔබට සිතේවි මෙතරම් සරල කර්ම කිහිපයකින් කොහොමද පරිගනකයකින් මෙතරම් හපන්කම් කරන්නේ කියා. එම සිතුවිල්ල නම් සාධාරණයි. එහෙත් ඇත්තටම පරිගනකයේ තවත් සුවිශේෂි ගුණයක් මේ සඳහා ඉවහල් වේ. එනම්, පරිගණකයේ වේගය. ඉහත ආකාරයේ සරල කර්ම කෝටි ගණනක් එක තත්පරයක් තුළදී ප්‍රොසෙසරයට සිදු කළ හැකිය. උදාහරණයක් ලෙස, ගිගාහර්ට්ස් 2ක ප්‍රොසෙසරයකට තත්පරයට කර්මයන් දළ වශයෙන් බිලියන 2ක් හෙවත් කෝටි 200ක් කළ හැකිය. මෙවැනි වේගයකින් ඉතාම සරල දේවල් කරන විට, අවසානයේ අතිදැවැන්ත ක්‍රියාවලියක් සිදු කළ හැකියි හරියට කුඩා කුහුඹුන් විසින් විශාල තුඹස් සාදාන්නා සේ.

ඇතුලු කළ දත්ත තොරතුරු බවට පත් කළ පසු එම තොරතුරුවලට කුමක් කළ යුතුද? ඒවා අනිවාර්යෙන්ම ප්‍රයෝජනයට ගත යුතුය (නැතිනම් ඉතිං පරිගනකයට දත්ත කවා ඒවා තොරතුරු බවට පත් කරන එකේ තේරුමක් නැතිව යනවනෙ). ඊට කළ හැකි කාර්යන් 3ක් තිබේ. එක්කෝ ඒවා පසුවට ප්‍රයෝජනයට ගැනීමට ගඩබා කරගත හැකියි; නැතිනම්, ඒවා දැන්ම ප්‍රතිදානය කළ හැකියි; එහෙමත් නැතිනම් දුර හෝ ළඟ තිබෙන වෙනත් පරිගණකයකට ඒවා යැවිය හැකියි (සන්නිවේදනය).

ගඩබා කරන උපාංග (storage devices) යනු දත්ත හා තොරතුරු තාවකාලිකව හෝ ස්ථිරව ගබඩා කර තබා ගන්නා උපාංගයි. සීඩී (CD) හෙවත් සංයුක්ත තැටි (compact disc), DVD (digital versatile disc), ෆ්ලෑෂ් ඩ්‍රයිව් (flash drive) හෙවත් පෙන් ඩ්‍රයිව්, හාඩ් ඩිස්ක් ඩ්‍රයිව් (hard disc drive) හෙවත් හාඩ් ඩිස්ක් එක ආදිය දිගු කාලීන ගබඩා කරන උපාංගයි. මෙවැනි උපාංගයක් මත දත්ත/තොරතුරු ගබඩා කළ විට, ඉතා දිගු කාලයක් (අවුරුදු ගණනක්) නිරුපද්‍රිතිව එම තොරතුරු ගබඩා වී තිබේවි. එහෙත් පරිගණකය ක්‍රියාත්මක වන අතර තුරදී තාවකාලිකව තොරතුරු ගබඩා කර තබා ගන්නා RAM (random access memory) අයත් වන්නෙත් ගබඩා උපාංග ගණයටයි.

ඔබ වුවත් යම් වැඩක් කරන විට එම වැඩේට අවශ්‍ය අඩුම කුඩුම තමන් ළඟට (මේසය මත) තබා ගන්නවානෙ. ගෘහණියක් කෑම පිසින විටත්, ඊට අවශ්‍ය මිරිස්, ලුණු ආදිය ළඟට ගන්නවානේ. වැඩය අවසන් වුණාම එසේ ළඟට ගත් ඒවා ආයෙත් ඒවා තිබූ තැන්වලම තැන්පත් කරනවා. රැම් එකත් එවැන්නකි. දත්ත සකසන විට ඊට අවශ්‍ය කරුණු තාවකාලිකව තබා ගන්නා ස්ථානය රැම් එක වේ. විදුලිය විසන්දි වුවොත් ඉබේම මෙම රැම් එකේ තොරතුරු/දත්ත මැකී යයි. එනිසාම රැම් එක වාෂ්පශීලි මතයකය (volatile memory) කියාද හැඳින්වෙනවා.


 
ප්‍රතිදාන උපාංග (output devices) යනු පරිගණකය තුළ තිබෙන දේවල් පිටතට පෙන්නුම් කරන උපාංගයි. මොනිටරය (monitor), ප්‍රින්ටරය (printer), හා ස්පීකර් (speakers) මේ අතර ප්‍රමුඛ වේ.

 
අතීතයේදී මෙන් නොව අද තනි තනි පරිගනක වෙනුවට ඇත්තේ එකිනෙකට සම්බන්ධ කරපු පරිගනක ජාලයකි (computer network). පරිගනක ජාලගත කිරීම නිසා විශාල වාසි ගණනාවක් ලැබී තිබේ. එක පරිගනකයක තිබෙන දෙයක් ක්ෂණයකින් ලෝකයේ අනෙක් කෙලවර තිබෙන තවත් පරිගනකයකට යැවිය හැකිය. අද අන්තර්ජාලය (Internet) නම් දැවැන්ත ජාලය නිසා ලෝකයේ බොහෝ පරිගනක එකිනෙකට සම්බන්දව පවතිනවා. ඒක නිසා තමයි ෆේස්බුක්, ස්කයිප් වැනි අන්තර්ජාල සේවා ඔස්සේ එකිනෙකා අතර දත්ත/තොරතුරු බෙදා ගැනීමට (share) අවස්ථාව උදාවෙලා තිබෙන්නේ. මෙලෙස පරිගනක ජාල ගත කිරීමටත් යම් යම් උපාංග අවශ්‍ය වේ. රවුටර් (router), ස්විච (network switch), මොඩෙම් (modem) යනු එවැනි නෙට්වර්ක් ඩිවයිසස් කිහිපයකි.


ඉහත ආකාරයේ හාඩවෙයාර් තිබූ පලියට පරිගනකයකින් වැඩක් කර ගත නොහැකිය. උපමාවක් වශයෙන් ගතහොත්, වාහනයක් තිබූ පලියට ඉන් වැඩක් ගත නොහැකියි. ඊට තෙල් ගැසිය යුතුය. එලෙසම, හාඩ්වෙයාර්වලට අමතරව සොෆ්ට්වෙයා්ර් අවශ්‍ය කෙරෙනවා. සොෆ්ට්වෙයාර් ඔබට අතින් ඇල්ලීමට බැරිය. සීඩී එකක හෝ ෆ්ලෑෂ් ඩ්‍රයිව් එකක යම් සොෆ්ට්වෙයාර් එකක් ගබඩා කර තිබෙනවා යැයි සිතමු. ඔබ සීඩී ඇල්ලුවත් එහි ගබඩා වී තිබෙන සොෆ්ට්වෙයාර් ඇල්ලිය නොහැකියිනෙ. උදාහරණයක් ලෙස, සිඩී එක ඇල්ලිය හැකි වුවත්, එහි ගබඩා කර තිබෙන සිංදු හෝ චිත්‍රපටිය ඔබට අතින් ඇල්ලිය හැකිද?

ඉතිං සොෆ්ට්වෙයාර් අවශ්‍ය ඇයි? පිළිතුර සරලයි. හාඩ්වෙයාර් සියල්ල එකතුව දත්ත තොරතුරු බවට පත් කරන බව සැබෑවකි. එහෙත් දත්ත තොරතුරු බවට පත් කරන්නේ කෙලෙසද? දත්තවලට අහවල් දේ කරන්න, අහවල් කර්මය සිදු කරන්න ආදී ලෙස ඊට උපදෙස් දිය යුතුය. මෙන්න මෙම උපදෙස් තමයි සොෆ්ට්වෙයාර් කියන්නේ. වෙනස් වෙනස් දත්තවලට ලබා දිය යුත්තේ වෙනස් වෙනස් උපදෙස්ය. එනිසා විවිධාකාරයේ සොෆ්ට්වෙයාර් දක්නට ලැබේ. උදාහරණයක් ලෙස, ඔබේ සීඩී එකේ යම් දත්ත සමූහයක් ගබඩා වී තිබේ යැයි සිතන්න. දැන් ඔබ පරිගණකයට උපදෙස් මාලාවක් දෙනවා, එම දත්ත ස්පීකරයට යවන්න කියා. එවිට ඉන් ශබ්ද මතු වේවි. ඒ විතරක් නොවේ; එම ශබ්දය අඩු වැඩි කිරීමටද හැකි වන පරිදි උපදෙස් දී තිබෙනවා. මේ අප කතා කළේ ප්ලේයර් ප්‍රෝග්‍රෑම් එකක් ගැන. ඔබ දන්නවා පරිගණකයකින් සිංදුවක් වැනි දෙයක් අසන්නට නම් ප්ලේයර් සොෆ්ට්වෙයාර් එකක් අවශ්‍ය බව.

සොෆ්ට්වෙයාර් පොදුවේ ආකාර 2කට බෙදිය හැකියි - ප්‍රෝග්‍රෑම් හා ඩේටා.

1. ප්‍රෝග්‍රෑම් - මේවා තමයි දත්ත තොරතුරු බවට පත් කරන උපදෙස් මාලා.
2. ඩේටා (දත්ත) - ප්‍රෝග්‍රෑම් වැඩ කරන්නේ දත්ත මතයි. ඉතිං ප්‍රෝග්‍රෑම් සමගම දත්තද පරිගනකයට ලබා දිය යුතුයිනෙ.

දත්ත හා ප්‍රෝග්‍රෑම් යන දෙවර්ගයේම සොෆ්ට්වෙයාර් පරිගනකයේ පවතින්නේ ෆයිල් (file) වශයෙනි. ඒ කියන්නේ ෆයිල් වර්ග 2කි - දත්ත ෆයිල් (data files) හා වැඩසටහන් ෆයිල් (program files හෝ executable files). උදාහරණයක් ලෙස vlc.exe යන ෆයිල් එක ප්‍රෝග්‍රෑම් එකකි. එම ප්‍රෝග්‍රෑම් එකේ සිට mysong.mp3 යන දත්ත ෆයිල් එක ඕපන් කළ විට, එම mp3 ඕඩියෝ ෆයිල් එක ප්ලේ වී ස්පීකරයෙන් ශබ්දය මතු වේවි. එලෙසම, mypic.jpg නම් දත්ත ෆයිල් එක මත ඩබ්ල් ක්ලික් කළ විට, එය piceditor.exe නම් ප්‍රෝග්‍රෑම් එකෙන් ඕපන් වේවි. මෙන්න මේ ආකාරයට තමයි දත්ත හා ප්‍රෝග්‍රෑම් සහයෝගයෙන් ක්‍රියාත්මක වන්නේ.

එක් ප්‍රෝග්‍රෑම් එකක් සෑම දත්ත වර්ගයක් සමගම වැඩ කරන විදියට සාදන්නේ නැත. ඒ ඒ වැඩේ කිරීමට වෙනස් වෙනස් ප්‍රෝග්‍රෑම් සාදනවා. උදාහරණයක් ලෙස, ඕඩියෝ හා වීඩියෝ දත්ත සඳහා ප්ලේයර් ලෙස හැඳින්වෙන ප්‍රෝග්‍රෑම් සාදා තිබෙනවා. ලිපි ලේඛන සකස් කිරීමට බැහැ එවැනි ප්ලේයර්වලින්. ඒ සඳහා MS Word, LibreOffice Writer වැනි ප්‍රෝග්‍රෑම් සාදා තිබෙනවා. හැමදාම ලෝකයේ කොහේ හෝ අලුත් ප්‍රෝග්‍රෑම් සිය දහස් ගණනක් එකතු වෙනවා. ඒ අනුව, සොෆ්ට්වෙයාර් පහත ආකාරයේ බෙදීමකට ලක් කළ හැකියි.


දත්ත හා ප්‍රෝග්‍රෑම් දෙවර්ගයටම පොදුවේ සොෆ්ට්වෙයාර් යන නම යෙදුවත්, ඇත්තටම ප්‍රායෝගික ලෝකයේදී සොෆ්ට්වෙයාර් යන වචනය යොදන්නට පුරුදුව තිබෙන්නේ ප්‍රෝග්‍රෑම්වලටයි. එහි එතරම් වරදක් නැතත්, පුද්ගලයන් සොෆ්ට්වෙයාර් යන වචනය යොදන්නේ කුමන තේරුමින්ද යන වග ගැන සැලකිලිමත්ව සිටින්න. ප්‍රෝග්‍රෑම් අතරින් සමහර ප්‍රෝග්‍රෑම් තිබෙන්නේ සුවිශේෂි රාජකාරී කර ගැනීමටයි. ඒවා ඇප්ලිකේෂන් සොෆ්ට්වෙයාර් (application software) ලෙස හඳුන්වනවා. උදාහරණයක් ලෙස, ලිපිලේඛන සෑදීමට වර්ඩ් ප්‍රොසෙසිං සොෆ්ට්වෙයාර් යොදා ගනී. මෙවැනි ඇප්ලිකේෂන් සොෆ්ට්වෙයාර් එක්කෝ කඩෙන් මිල දී ගත හැකියි (හෝ ඉන්ටර්නෙට් එකෙන් නොමිලේ ගත හැකියි); නැතහොත් තමන්ටම සාදා ගත හැකියි (හෝ ප්‍රෝග්‍රැමර් කෙනෙකු ලවා සාදා ගත හැකියි). ඔබත් ප්‍රෝග්‍රැමිං ඉගෙන ගන්නවා නම්, එහි අරමුණ මෙලෙස අලුතින් සොෆ්ට්වෙයාර් සෑදීම තමයි. මෙලෙස අලුතින් (තමන් විසින් හෝ කාට හරි කියා) සාදා ගන්නා සොෆ්ට්වෙයාර් customized software හෙවත් tailor-made software හෙවත් bespoke software ලෙස හැඳින්වෙනවා. පොදුවේ සාදා තිබෙන (කඩෙන් හෝ අනතර්ජාලයෙන් ලබා ගත හැකි) සොෆ්ට්වෙයාර් off-the-shelf software හෝ standard software ලෙස හැඳින්විය හැකියි.

මීට අමතරව, තවත් වර්ගයක සොෆ්ට්වෙයාර් තිබෙනවා සිස්ටම් සොෆ්ට්වෙයාර් (system software) ලෙස. ඒවායේ අරමුණ ඔබට යම් යම් වැඩ කර දීම නොවේ. ඒ කියන්නේ සිස්ටම් සොෆ්ට්වෙයාර්වලින් ඔබට ලිපිලේඛන සෑදිය නොහැකියි; සිංදු ඇසිය නොහැකියි. නමින්ම කියවෙන ලෙස, සිස්ටම් සොෆ්ට්වෙයාර්වල රාජකාරිය පරිගනක පද්ධතිය නිසි ලෙස පවත්වාගෙන යෑමයි. හාඩ්වෙයාර් හරිහැටි පාලනය කිරීම, සොෆ්ට්වෙයාර් නිසි ලෙස පාලනය කිරීම, පරිගනකය භාවිතා කරන අයට යටිතල පහසුකම් සැලසීම (ඩෙස්ක්ටොප් එකක් දීම, ලොගින් වීමට පාස්වර්ඩ් ආදිය ඇතුලු කිරීමට අවස්ථාව සලසා දීම ආදී යටිතල පහසුකම්) ආදී ඉතාම වැදගත් රාජකාරි තමයි සිස්ටම් සොෆ්ට්වෙයාර්වලට කිරීමට තිබෙන්නේ. ඔබටත් පුලුවන් අවශ්‍ය නම් සිස්ටම් සොෆ්ට්වෙයාර් සාදන්නට.

මෙහෙයම් පද්ධති (operating system) යනු සිස්ටම් සොෆ්ට්වෙයාර් අතර තිබෙන ප්‍රධානතම සොෆ්ට්වෙයාර් එකයි. ඔපරේටිං සිස්ටම් එකෙන් කරන දේවල් ඔබම සිතා බලන්න. ඔබ භාවිතා කරන ඔපරේටිං සිස්ටම් එකෙන් ඔබට සලසා දෙන පහසුකම් ගැන සිතා බලන්න. වින්ඩෝස් 7, ලිනක්ස් ආදී ලෙස විවිධාකාරයේ මෙහෙයුම් පද්ධති තිබෙනවා.

අනිවාර්යෙන්ම සෑම පරිගණකයක්ම ක්‍රියා කිරීමට මෙහෙයුම් පද්ධතියක් අවශ්‍ය වේ. තමන් භාවිතා කරන මෙහෙයුම් පද්ධතිය අනුව පාවිච්චි කිරීමට යන අනෙක් සොෆ්ට්වෙයාර් තීරණය වේ. සෑම ප්‍රෝග්‍රෑම් එකක්ම ඕනෑම ඔපරේටිං සිස්ටම් එකක ක්‍රියා කරන්නේ නැත. උදාහරණයක් ලෙස වින්ඩෝස් මෙහෙයුම් පද්ධතිය සඳහා සාදපු සොෆ්ට්වෙයාර් එකක් ලිනක්ස් මෙහෙයුම් පද්ධතියේ වැඩ කරන්නේ නැත. එනිසාම මෙහෙයුම් පද්ධතිය platform ලෙසද හැඳින්වෙනවා. වින්ඩෝස් xp, වින්ඩෝස් 7, වින්ඩෝස් විස්ටා, වින්ඩෝස් 8 ආදී මෙහෙයුම් පද්ධති සියල්ලම වින්ඩෝස් ප්ලැට්ෆෝම් එක ලෙස හැඳින්වෙන අතර, ලිනක්ස් මින්ට්, උබුන්ටු, රෙඩ්හැට් ආදී මෙහෙයුම් පද්ධති ලිනක්ස්/යුනික්ස් ප්ලැට්ෆෝම් එක ලෙස හැඳින්වෙනවා.

එනිසා යම් ප්‍රෝග්‍රෑම් එකක් සාදන විට ප්‍රෝග්‍රැමර්ට තීරණය කිරීමට සිදු වෙනවා තමන්ගේ ප්‍රෝග්‍රෑම් එක කුමන ප්ලැට්ෆෝම් එකක් මත රන් වීමට අවශ්‍යද කියා. එක් ප්ලැට්ෆෝම් එකක් මත රන් වන ප්‍රෝග්‍රෑම් එකක් තවත් ප්‍රෝග්‍රෑම් එකක් මත රන් වන්නේ නැත.

හාඩ්වෙයාර් සාදන්නේ කවුද? සොෆ්ට්වෙයාර් සාදන්නේ කවුද? අනිවාර්යෙන්ම මිනිසුන් වේ. එසේ සාදපු හාඩ්වෙයාර් හා සොෆ්ට්වෙයාර් විවිධාකාරයේ වැඩවලට භාවිතා කරන්නේ කවුද? මිනිසුන්ය. මේ ආදී ලෙස පරිගනක සමග නොයෙක් ආකාරවලින් සම්බන්ද වන මිනිසුන් තමයි ලයිව්වෙයාර් කියන්නේ. ඒ අනුව ප්‍රෝග්‍රැමර්ද ඊට අයත්ය.

4 comments: