Tuesday, May 17, 2016

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


C ප්‍රෝග්‍රැමිං ලැංවේජ් එක 1970 දශකයේ ඇමෙරිකාවේ AT&T Bel Lab ලෙස ප්‍රචලිත පර්යේෂණාගාරයේදී ඩෙනිස් රිචී නම් තැනැත්තාගේ මූලිකත්වයෙන් නිර්මාණය විය. මෙම ලැබ් එකේදීම මේ වන විටත් B යන නමින් එතරම් ප්‍රසිද්ධ නොවූ පරිගණක භාෂාවක්ද නිර්මාණය වී තිබුණි. එය B ලෙස නම් කෙරුණේ Bel යන නමේ මුල් අකුර සලකාගෙනයි. එම B භාෂාවට පසුව නිපදවූ නිසා තමයි එය C ලෙස නම් කෙරුණේ. එදා සිටම මේ දක්වාම ලොව ප්‍රචලිතවම හා ප්‍රබලතම පරිගණක භාෂාව තමයි C. එය බිහි කිරීමේ මූලිකම අරමුණ වූයේ යුනික්ස් (Unix) නම් ලෝකප්‍රකට මෙහෙයුම් පද්ධතිය සෑදීමටයි (මේ කාලයේ වින්ඩෝස් ඔපරේටිං සිස්ටම් තිබුණේ නැත). ඔබ දන්නවා ලිනක්ස්, ඇප්ල් මෙහෙයුම් පද්ධති පවා සකස් කර තිබෙන්නේ යුනික්ස් පාදක කරගෙනයි.

සී භාෂාව තෙවන පරම්පරාවේ භාෂාවක් වුවත්, එය දෙවැනි පරම්පරාවේ භාෂාව වන ඇසෙම්බ්ලි මෙන්ම හාඩ්වෙයාර්/සර්කිට්වලට කිට්ටුවෙන් වැඩ කරනවා. සමහරවිට ඔබට මේ ගැන එකවර හැඟීමක් නොමැති වන්නට ඇති. එනිසා මඳක් ඒ ගැන සොයා බලමු.

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

ඇසෙම්බ්ලි භාෂාවද බයිනරි කෝඩ්වලට ඉතා කිට්ටුය. මෙහිදී 10001110 ආදී 1 හා 0 වලින් පමණක් තිබෙන උපදෙස්වලට ADD වැනි ඉංග්‍රිසි වචන ආදේශ කර ඇත. එනිසා ඇසෙම්බ්ලර් යන පරිවර්තකය විසින් ඇසෙම්බ්ලි කෝඩ් නැවත බයිනරි කෝඩ්වලට පරිවර්තනය කරයි. බයිනරි ලැංවේජ් එකට ඉතාම ළඟ බැවින් හා ඊට වඩා පහසුවෙන් භාවිතා කළ හැකි බැවින්, අදටත් ඇසෙම්බ්ලි භාෂාව භාවිතා වෙනවා විශේෂිත අවස්ථාවල (real-time programming, embedded systems වගේ අවස්ථාවල). ඔබ මයික්‍රොප්‍රොසෙසර් යොදාගෙන ඉලෙක්ට්‍රෝනික් සර්කිට් නිර්මාණය කරනවා නම්, බොහෝවිට ඔබට ඇසෙම්බ්ලි ප්‍රෝග්‍රැමිං සිදු කිරීමට සිදු වේවි. ඇසෙම්බ්ලි හා බයිනරි යන පරම්පරා දෙකම "පහළ ගණයේ භාෂා" (low level language) ලෙස හැඳින්වෙනවා

මෙහි "පහල ගණය" ලෙස විශේෂණ යොදා තිබෙන්නේ එම භාෂා පහත් හෝ වැඩක් නැති නිසා නොව, ඉලෙක්ට්‍රොනික් සර්කිට් (හෙවත් හාඩ්වෙයාර්) වලට වඩා කිට්ටු නිසාය. උපමාවක් ඇසුරින් කියතොත් පොලොවට (සර්කිට් එකට) ඉතාම ළඟින් තිබෙන්නේ තට්ටු ගොඩනැඟිල්ලක පහලම තට්ටුවයි (පහල ගණයේ භාෂා).

එහෙත් සාමාන්‍යයෙන් තෙවැනි පරම්පරාවේ භාෂා සර්කිට්වලට වඩා කිට්ටු වන්නට උත්සහ දරා තිබෙන්නේ ප්‍රෝග්‍රැමර්ටයි (මිනිසාටයි). එනිසාම තෙවැනි පරම්පරාවේ භාෂාවන් "ඉහල ගණයේ භාෂා" (high level language) ලෙස හැඳින්වෙනවා. මෙහිදී ප්‍රෝග්‍රැමර් විසින් දෙන උපදෙස් එකවර හාඩ්වෙයාර්/සර්කිට්වලට තේරෙන්නේ නැත. එනිසාම සර්කිට්/හාඩ්වෙයාර් වලින් වැඩ ගැනීමට නිතරම මෙම ලැංවේජ්වලට තවත් අතරමැදි "කුඩා ප්‍රෝග්‍රෑම් කෑලිවලින්" සහය ගන්නට සිදු වෙනවා. මෙම ක්‍රමයේ වාසි මෙන්ම අවාසිද ඇත. එක් අවාසියක් නම්, ඍජුවම සර්කිට් සමග ගනුදෙනුවක් සිදු නොවීමයි. එය හරියට ශීත කාමරයක සිට කම්කරුවන්ට ලබා දෙන උපදෙස් වැනිය. ශීත කාමරයේ සිටින ඉංජිනේරුවා හෝ පරිපාලකයා දන්නේ නැහැ වැඩබිමේ තිබෙන නියම තත්වය. එහෙත් ඔහුගේ එම උපදෙස් වැඩබිමේ සිටින සුපර්වයිසර්ලා හරහා කම්කරුවන්ට ලැබේ. එනිසා අවසානයේදී කෙසේ හෝ වැඩේ සිදු වේ. ශීත කාමරයේ සිටින කෙනාට අව්වේ ඉඳ දුක් විඳින්නට අවශ්‍ය නැත. එය වාසියකි. එහෙත් ඍජුවම වැඩබිම ඔහු සමග වැඩ නොකරයි. එය අවාසියකි. මෙහිදී වැඩබිම හා කම්කරුවන් හාඩ්වෙයාර්/සර්කිට්වලට හරියටම ගැලපේ. ශීත කාමරයේ සිටින පරිපාලකයා තමයි තෙවැනි පරම්පරාවේ භාෂාවට උපමා කළ හැක්කේ

එහෙත් පෙර පැවසුවා සේම, තෙවැනි පරම්පරාවේ අනෙක් භාෂාවන්ට වඩා සී භාෂාව සර්කිට්/හාඩ්වෙයාර්වලට කිට්ටුය. එනිසාම සමහරුන් සී භාෂාව "පහල මට්ටමේ ඉහළ ගණයේ භාෂාවක්" (the lowest high level language) කියා හඳුන්වනවා (එනම් හයි ලෙවල් හා ලෝ ලෙවල් යන ආකාර දෙකෙහිම ගතිගුණ එහි තිබෙනවා). මේනිසා තමයි සී ප්‍රබලතම භාෂාව බවට පත්ව තිබෙන්නේ

පසු කාලීනව ප්‍රෝග්‍රැමිං කරන විදිවල වෙනස්කම් ඇති විය. Object Oriented Programming (OOP) වැනි ප්‍රෝග්‍රැමිං ක්‍රමවේද බිහිවිය. ඉතිං OOP ක්‍රමයට අනුගත කිරීමේ ප්‍රතිපලයක් ලෙස 1980 දශකයේ ජාන් ස්ට්‍රෝස්ට්‍රප් (Bjarne Stroustrup) විසින් C++ යන ලැංවේජ් එක බිහිවිය. ඒ අනුව C++ (සී ප්ලස් ප්ලස්) යනු සී භාෂාව "ඩබ්ල් ඕ-පී" ක්‍රමයට අනුගත කළ විට ලැබුණු භාෂාව වේ. මීට අමතරව java යන භාෂාවද c/c++ යන භාෂා ආශ්‍රය කොටගෙන නිපදවූ භාෂා වේ (එහෙත් c/c++ ට වඩා ජාවා බොහොම සරල කර ඇත). තව තවත් භාෂා c/c++ යන භාෂා පදනම් කරගෙන නිර්මාණය කර ඇති බව පෙනේ.

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

C ප්‍රෝග්‍රැමිං

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

1. ටෙක්ස්ට් එඩිටර් (text editor) එකක් - ඔබ සෝස්කෝඩ් ලියන්නේ ඉංග්‍රිසි අකුරුවලින්ය. සරලව කියතොත්, ඉංග්‍රිසි අක්ෂර හා ඉලක්කම් පමණක් ලිවිය හැකි සොෆ්ට්වෙයාර් තමයි ටෙක්ස්ට් එඩිටර් කියන්නේ. ඔබට තිබෙන්නේ වින්ඩෝස් ප්ලැට්ෆෝම් එකක් නම් (Windows XP, Windows 7, Windows 8 වැනි මෙහෙයුම් පද්ධතියක් නම්), දැනටමත් Notepad යන ටෙක්ස්ට් එඩිටර් එක එහි තිබෙනවා. ලිනක්ස් ප්ලැට්ෆෝම් එක භාවිතා කරන්නේ නම්, vi, pluma, gedit වැනි ටෙක්ස්ට් එඩිටර් එහි තිබෙනවා. එනිසා අමුතුවෙන් ටෙක්ස්ට් එඩිටර් ඉන්ස්ටෝල් කරගැනීමට අවශ්‍ය නැත. මීට අමතරව තවත් ටෙක්ස්ට් එඩිටර් වර්ග රාශියක් තිබෙනවා. අවශ්‍ය නම්, ඔබට අන්තර්ජාලයෙන් ඒවා ලබා ගත හැකියි.

2. කම්පයිලර් එකක් - සෝස්කෝඩ් එක සකස් කළ පසු, එය කෙලින්ම රන් කරන්න බැරි බව ඔබ දන්නවා. එනිසා ඔබ යම් ප්‍රෝග්‍රෑම් එකක් ලියූ පසු එය වැඩ කරනවාද නැද්ද යන්න බැලීමට නම්, එම සෝස්කෝඩ් එක කම්පයිල් කර බයිනරි කෝඩ් එකක් බවට පත් කළ යුතු වෙනවානෙ. සී යනු කම්පයිල් ක්‍රමයේ භාෂාවක් නිසා කම්පයිලර් එකක් අවශ්‍යයි. ඒ කියන්නේ සී කම්පයිලර් එකක් (c compiler) අත්‍යවශ්‍යයි. වින්ඩෝස් ප්ලැට්ෆෝම් එකේදී නම් අනිවාර්යෙන්ම අමුතුවෙන් එම කම්පයිලර් එක ඉන්ස්ටෝල් කර ගැනීමට සිදු වෙනවා. එහෙත් බොහෝවිට ලිනක්ස් ප්ලැට්ෆෝම් එකේ නම් සී කම්පයිලර් එකක් ඉබේම ඉන්ස්ටෝල් වී තිබෙනවා. ඇත්තෙන්ම මේ දෙවර්ගයේම ප්ලැට්ෆෝම් සඳහා සී කම්පයිලර් ගණනාවක්ම තිබෙනවා. GCC, CygWin, CodeWarrior, Turbo C, Microsoft C Compiler ආදී ලෙස විවිධ නම්වලින් එම කම්පයිලර් ඔබට අන්තර්ජාලයෙන් ලබා ගත හැකියි.

තවද, සී ප්‍රෝග්‍රෑම් සිදු කිරීම සඳහාම ටෙක්ස් එඩිටර් එකක් හා කම්පයිලර් එකක් යන දෙකම එකට එකතු කර සාදා තිබෙන සොෆ්ට්වෙයාර් තිබෙනවා (මුදල් ගෙවා මෙන්ම නොමිලේ මෙවැනි සොෆ්ට්වෙයාර් ලබා ගත හැකියි). එවිට ඔබ එම සොෆ්ට්වෙයාර් එක ඉන්ස්ටෝල් කරගැනීම පමණයි කළ යුත්තේ. මෙවැනි සොෆ්ට්වෙයාර් Integrated Development Environment (IDE) ලෙස හැඳින්වෙනවා. ඇත්තෙන්ම IDE එකක, මීට අමතරව තවත් පහසුකම් රාශියක් තිබෙනවා. එය තරමක් සංකීර්ණයි. බොහෝවිට IDE එකත් අමුතුවෙන් ඉගෙනීමට සිදු වෙනවා සී භාෂාව ඉගෙන ගන්නවාට අමතරව. ප්‍රයෝජනවත් (හෝ විශාල) ප්‍රෝග්‍රෑම් සෑදීමට නම් ඇත්තටම එවැනි IDE එකක් අවශ්‍ය කරනවා. එනිසයි මීට මොහොතකට පෙරත් මා පැවසුවේ ප්‍රයෝජනවත් වැඩසටහන් සෑදීමට නම්, සී භාෂාවට අමතරව තවත් දේවල් ඉගෙනීමට සිදු වන බව

එහෙත් අප තවම සිටින්නේ ප්‍රෝග්‍රැමිංවල ආධුනික මට්ටමේය. එනිසා දැනට එවැනි IDE එකක් භාවිතා කිරීම එතරම් උචිත නොවන්නට පුලුවන්. දැනට මා යෝජනා කරන්නේ තමන්ගේ පරිගනකයේ තිබෙන ටෙක්ස්ට් එඩිටර් එක හා GCC යන කම්පයිලර් එක භාවිතා කරන ලෙසයි. ඒ සඳහා කිසිදු මුදලක් වැය නොවේ. (සාමාන්‍යයෙන් ලිනක්ස්වල තිබෙන කම්පයිලර් එකත් GCC වේ).

පෙරත් සඳහන් කළ සේම, තමන් භාවිතා කරන ප්ලැට්ෆෝම් එක මෙහිදී වැදගත් වේ. ලිනක්ස් ප්ලැට්ෆෝම් එකේ ලියන ප්‍රෝග්‍රෑම් වින්ඩෝස් ප්ලැට්ෆෝම් එකට වැඩ කරන්නේ නැත; වින්ඩෝස් ප්ලැට්ෆෝම් එකට ලියපු ප්‍රෝග්‍රෑම් ලින්කස්වලට වැඩ කරන්නේද නැත. එනිසා තමන්ගේ ප්‍රෝග්‍රෑම් වැඩ කළ යුත්තේ කුමන ප්ලැට්ෆෝම් එකක් සඳහාද යන්න ඔබ දැන් තීරණය කළ යුතුය. බොහෝ දෙනෙකුගේ ස්වාභාවික තීරණය වන්නේ වින්ඩෝස් ප්ලැට්ෆෝම් එකයි. ඊට හේතුව බහුතරයක් තමන්ගේ පරිගනකවල ස්ථාපනය කර තිබෙන්නේ කුමක් හෝ වින්ඩෝස් මෙහෙයුම් පද්ධතියකි. දැන් අපි බලමු GCC ඔබේ පරිගනකයේ ඉන්ස්ටෝල් කර ගන්නා අයුරු

සටහන
 
සාමාන්‍යයෙන් යම් ප්ලැට්ෆෝම් එකක් සඳහා සාදපු ප්‍රෝග්‍රෑම් එකක් වෙනත් ප්ලැට්ෆෝම් එකක වැඩ කරන්නේ නැත. උදාහරණයක් ලෙස, ඔබ වින්ඩෝස්වල භාවිතා කරන ප්‍රෝග්‍රෑම් එක උබුන්ටුවල ඉන්ස්ටෝල් කිරීමට බැරිය. වින්ඩෝස්, ලිනක්ස්/යුනික්ස්, ඇප්ල්, ඇන්ඩ්‍රොයිඩ් ආදී ලෙස ප්‍රචලිත ප්ලැට්ෆෝම් ගණනාවක් ඇත. කෙසේ වෙතත්, යම් ප්ලැට්ෆෝම් එකක් සඳහා සාදපු ප්‍රෝග්‍රෑම් වෙනත් ප්ලැට්ෆෝම් එකක් මත රන් කරන ක්‍රම කිහිපයක්ද ඇත.

එක ක්‍රමයක් නම්, තමන් දැනට භාවිතා කරන මෙහෙයුම් පද්ධතිය තුළම ඔබට අවශ්‍ය වෙනත් ප්ලැට්ෆෝම් එකක් හෙවත් මෙහෙයුම් පද්ධතියක් ඉන්ස්ටෝල් කරගත හැකියි. මෙම ක්‍රමය virtual machine ලෙස හැඳින්වෙනවා. මෙවිට, තමන්ගේ මෙහෙයුම් පද්ධතිය තුළ පළමුවෙන්ම සුදුසු වර්චුවල් මැෂින් සොෆ්ට්වෙයාර් එකක් ඉන්ස්ටෝල් කර ගන්නවා. ඉන්පසු එම වර්චුවල් මැෂින් සොෆ්ට්වෙයාර් එක රන් කර, එහි උපදෙස් අනුව අලුත් මෙහෙයුම් පද්ධතිය වර්චුවල් මැෂින් එක තුළ ඉන්ස්ටෝල් කර ගන්න. ඇත්තටම මෙහිදී සිදු වන්නේ මෙහෙයුම් පද්ධතියක් තුළ තවත් මෙහෙයුම් පද්ධතියක් ඉන්ස්ටෝල් කර ගැනීමයි. වර්චුවල් මැෂින් එක තුළ ඔබට ඇත්තෙන්ම විවිධාකාරයේ මෙහෙයුම් පද්ධති ඕනෑ තරමක් ඉන්ස්ටෝල් කර ගත හැකියි. වර්චුවල් මැෂින් ගැන බොහෝ දේ කතා කිරීමට හා ඉගෙනීමට ඇති අතර, අවශ්‍ය නම් එම කරුණු ගැන ඔබ වෙනමම සොයා බලා ඉගෙන ගන්න.

තවත් ක්‍රමයක් නම්, ප්ලැට්ෆෝම් එම්‍යුලේටර් (emulator) එකක් තමන්ගේ මෙහෙයුම් පද්ධතිය තුළ ඉන්ස්ටෝල් කර ගැනීමයි. උදාහරණයක් ලෙස, ඔබ භාවිතා කරන්නේ ලිනක්ස් නම්, වින්ඩෝස් ප්ලැට්ෆෝම් එකට සාදපු ප්‍රෝග්‍රෑම් ලිනක්ස් තුළ රන් කිරීමට අවශ්‍ය නම්, WINE වැනි වින්ඩෝස් එම්‍යුලේටරයක් ලිනක්ස්හි ඉන්ස්ටෝල් කර ගත හැකියි. මේ ආකාරයට ඇන්ඩ්‍රොයිඩ් ඇප්ස් ඔබේ පරිගණකයේ රන් කළ හැකියි ඇන්ඩ්‍රොයිඩ් එම්‍යුලේටරයක් ඉන්ස්ටෝල් කර ගැනීමෙන්. ඔබ දැක හෝ අසා ඇති ප්ලේස්ටේෂන් ගේම්ස් ගැන. මෙවැනි ගේම් සීඩී සාමාන්‍යයෙන් පරිගණකයේ රන් වන්නේ නැත. ඒ සඳහා ප්ලේස්ටේෂන් කන්සෝල් නම් උපකරණයක් අවශ්‍ය වෙනවා. එහෙත් ප්ලේස්ටේෂන් එම්‍යුල්ටරයක් පරිගණකයේ ඉන්ස්ටෝල් කිරීමෙන් එවැනි ගේම්ස් පරිගනකය මත ප්ලේ කළ හැකියි.

ඉහත ක්‍රම දෙකෙහිම හොඳ හා නරක ලක්ෂණ ඇත. උදාහරණයක් ලෙස, වර්චුවල් මැෂින් ක්‍රමය ක්‍රියාත්මක කිරීමට අමුතුවෙන් අලුත් ඔපරේටිං සිස්ටම් එකක් ඉන්ස්ටෝල් කිරීමට සිදු වෙනවා (මෙවිට එම අලුත් ඔපරේටිං සිස්ටම් එක නීත්‍යානුකූලකව භාවිතා කරන වින්ඩෝස් නම්, ඒ සඳහා මුදල් වැය කිරීමට සිදු වෙනවා). මෙවිට එම අලුත් ඔපරේටිං සිස්ටම් එකට සාදපු ඕනෑම ප්‍රෝග්‍රෑම් එකක් රන් කළ හැකි වීම එහි ඇති ප්‍රධානතම වාසියකි. එහෙත් එම්‍යුලේටර් ක්‍රමයේදී සමහර ප්‍රෝග්‍රෑම් තවමත් වැඩ නොකරන නමුත් (එය ප්‍රබලතම අවාසියයි), එම්‍යුලේටර් එක සඳහා මුදල් වැය වන්නේ නැති වීම වාසියකි.

තවත් ක්‍රමයක් තිබෙනවා. ප්ලැට්ෆෝම් කිහිපයකම රන් කළ හැකි සොෆ්ට්වෙයාර් සෑදීය හැකියි. මෙවිට වර්චුවල් මැෂින් හෝ එම්‍යුලේටර් අවශ්‍ය නැත. එකම ප්‍රෝග්‍රෑම් එක ඉබේම ප්ලැට්ෆෝම් කිහිපයක රන් වනු ඇත. එකම ප්‍රෝග්‍රෑම් එක ප්ලැට්ෆෝම් කිහිපයකම රන් කළ හැකි වීම portability ලෙස හැඳින්වෙනවා (එවැනි ප්‍රෝග්‍රෑම් portable applications/software ලෙස හැඳින්වේ).

ඉන්ටර්ප්‍රීටර් ක්‍රමයේ ලැංවේජ්වලින් සාදන ප්‍රෝග්‍රෑම් සියල්ලම මීට (එනම් පෝටබල් සොෆ්ට්වෙයාර්වලට) ඇතුලත්ය. මෙවිට සාදපු ප්‍රෝග්‍රෑම් එක රන් වන්නේ ඉන්ටර්ප්‍රීටරය මතයි. ඉතිං තමන් භාවිතා කරන ප්ලැට්ෆෝම් එක මත ඉන්ටර්ප්‍රීටරය ඉන්ස්ටෝල් කළ පසු ප්‍රෝග්‍රෑම් එක කිසිදු ගැටලුවක් නැතිව රන් වේවි. තවත් අවස්ථාවලදී සෝස් කෝඩ් එක කම්පයිල් කරනවා. එහෙත් මෙහිදී කම්පයිල් වන්නේ අවසාන බයිනරි කෝඩ් බවට නොව, යම් අතරමැදි තත්වයකටයි (එනම් බාගෙට කම්පයිල් වීමක් සිදු වෙනවා). ජාවා ප්‍රෝග්‍රෑම් මේ සඳහා හොඳම උදාහරණයයි. මෙලෙස බාගෙට කම්පයිල් කිරීම නිසා කම්පයිල් හා ඉන්ටර්ප්‍රීටර් යන ක්‍රම දෙකෙහිම හොඳ ලක්ෂණ උකහා ගත හැකි වෙනවා. මෙවිට බාගෙට කම්පයිල් වෙච්ච ප්‍රෝග්‍රෑම් එක රන් වීමට තවමත් ඉන්ටර්ප්‍රීටර් එකක් අවශ්‍ය වන බව සිහිතබා ගන්න.

තවත් වර්ගයක පෝටබල් සොෆ්ට්වෙයාර් ක්‍රමයක් ඇත. මෙහිදී ප්ලැට්ෆෝම් කිහිපයකට ගැලපෙන ලෙස එකම සෝස්කෝඩ් එකක් ලියනවා. ඉන්පසු එම එකම සෝස්කෝඩ් එක ප්ලැට්ෆෝම් කිහිපයක් සඳහා වෙන වෙනම කම්පයිල් කළ හැකියි. උදාහරණයක් ලෙස ඔබ එම සෝස්කෝඩ් එක ගෙන (කිසිදු වෙනසක් කිරීමක් නොකර) ලිනක්ස් ප්ලැට්ෆෝම් එකක කම්පයිල් කළොත් ඉන් ලැබෙන්නේ ලිනක්ස් ප්ලැට්ෆෝම් එක මත රන් කළ හැකි ප්‍රෝග්‍රෑම් එකක් හෙවත් ලිනක්ස් ප්‍රෝග්‍රෑම් එකක් වන අතර, එම සෝස්කෝඩ් එකම එලෙසම වින්ඩෝස් ප්ලැට්ෆෝම් එකක් මත කම්පයිල් කළොත් ඉන් ලැබෙන්නේ වින්ඩෝස් ප්‍රෝග්‍රෑම් එකකි. මෙය source code portability ලෙස හැඳින්වෙනවා. ඇත්තටම සී ලැංවේජ් එක ගැන කතා කරනව විට අප කතා කරන්නේ මෙම සෝස්කෝඩ් පෝටබිලිටි එක තමයි

මේ අනුව, ලිනක්ස් හා වින්ඩෝස් යන ප්ලැට්ෆෝම් දෙකෙහිම රන් කළ හැකි ප්‍රෝග්‍රෑම් සෑදිය හැකියි. එහෙත් විශාල/සංකීර්ණ ප්‍රෝග්‍රෑම් හෝ "විසිතුරු" බව වැඩි ප්‍රෝග්‍රෑම් රන් කිරීමේදී ගැටලු ඇති විය හැකියි. එනිසා ඔබ අනිවාර්යෙන්ම තමන් ඉලක්ක කරගත් ප්ලැට්ෆෝම් එකට ප්‍රමුඛතාව ලබා දී ප්‍රෝග්‍රෑම් සිදු කළ යුතුය

ලිනක්ස්වල සී කම්පයිලර් ඉන්ස්ටෝල් කිරීම

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


ප්‍රතිචාරය ලෙස ලැබුණේ No command 'gcc' found වැනි ප්‍රකාශයක් නම්, ඒ කියන්නේ gcc ඉන්ස්ටෝල් වී නැති බවයි. එවිට එය ඉන්ස්ටෝල් කරගත හැකියි. එය කිරීම ඉතාම පහසුය. සාමාන්‍යයෙන් ලිනක්ස් මත සොෆ්ට්වෙයාර් එකක් ඉන්ස්ටෝල් කරන ක්‍රමය අනුගමනය කරන්න. ලිනක්ස් මෙහෙයුම් පද්ධති විශාල ප්‍රමාණයක් තිබෙනවානෙ (රෙඩ්හැට්, උබුන්ටු, මින්ට්, කේලී, ආදි ලෙස). ඉතිං ඒ එක් එක් පද්ධතියේ ඒ සඳහා යම් ක්‍රමයක් තිබෙනවා සොෆ්ට්වෙයාර්/පැකේජ් ඉන්ස්ටෝල් කිරීමට. දැනටමත් කම්පයිලර් ඉන්ස්ටෝල් වී නොමැති නම්, Debian, Ubuntu, Mint ආදී ලිනක්ස් මෙහෙයුම් පද්ධතියක ටර්මිනල් එකේ sudo apt-get install build-essential යන්න ටයිප් කර බිල්ඩ්-එසෙන්ෂල් යන පැකේජය ඉන්ස්ටෝල් කරගන්න. මෙම පැකේජය ඉන්ස්ටෝල් කරන විට සී හා සී ප්ලස් ප්ලස් යන දෙක සඳහාම කම්පයිලර් හා ඊට අවශ්‍ය තවත් දේවල් ගණනාවක්ම ඉන්ස්ටෝල් වේවි. එච්චරයි. Fedora වැනි ලිනක්ස් මෙහෙයුම් පද්ධතියක sudo yum install gcc යන්න ටර්මිනලයක ටයිප් කර එන්ටර් කර කම්පයිලරය ඉන්ස්ටෝල් කර ගන්න. මෙවිට සී කම්පයිලරය පමණයි ඉන්ස්ටෝල් වන්නේ. ඔබට සී හා සී ප්ලස් ප්ලස් යන දෙක සඳහාම කම්පයිලර් අවශ්‍ය නම් sudo yum install gcc gcc-c++ යන්න රන් කළ යුතු වෙනවා.

වින්ඩෝස්වල සී කම්පයිලර් ඉන්ස්ටෝල් කිරීම

වින්ඩෝස් මෙහෙයුම් පද්ධතියක සාමාන්‍යයෙන් සොෆ්ට්වෙයාර් ඉන්ස්ටෝල් කරන ආකාරයටමයි කම්පයිලර් එක ඉන්ස්ටෝල් කර ගන්නේ. පළමුව කම්පයිලර් සොෆ්ට්වෙයාර් එක ලබා ගන්න. මෙහිදී තෝරා ගැනීම් ගණනාවක් තිබෙනවා මොකද විවිධ අය විසින් කම්පයිලර් සොෆ්ට්වෙයාර් ගණනාවක් සාදා තිබෙන නිසා. මා මෙහිදී CygWin යන ප්‍රෝග්‍රෑම් එක ඉන්ස්ටෝල් කර ගන්නා ලෙස යෝජනා කරනවා. මෙය නොමිලේම අන්තර්ජාලයෙන් ලබා ගත හැකියි. ඔබ වෙනත් කම්පයිලරයක් වුවද ඉන්ස්ටෝල් කර ගත්තාට වරදක් නැත. සමහරවිට එම ප්‍රෝග්‍රෑම් ඉන්ස්ටෝල් කළාට පසුව සුලු සුලු දේවල් කිහිපයක්ද කිරීමට තිබිය හැකියි (උදාහරණයක් ලෙස, PATH යන environment variable එක සැකසීම). එවිට, එම ප්‍රෝග්‍රෑම් එක සමග ඇති උපදෙස් පිළිපැද ඒ දේවල් සිදු කරන්න.

වින්ඩෝස්හිදීද ඔබට කම්පයිල් කිරීම සිදු කරන්නට වන්නේ terminal එක මතයි (වින්ඩෝස්වලදී ටර්මිනල් යන වචනය වෙනුවට Command prompt හෙවත් DOS prompt යන්න භාවිතා වෙනවා). මා පෞද්ගලිකව භාවිතා කරන්නේ ලිනක්ස් මෙහෙයුම් පද්ධතියක් නිසා, මෙතැන් සිට පෙන්වන සියලු උදාහරණ ලිනක්ස් ප්‍රෝග්‍රෑම් වේ. එහෙත් වින්ඩෝස් මතද ඒවා එලෙස ලියා කම්පයිල් කළ හැකි පරිදි මා එම උදාහරණ සකස් කර ඇත.

10 comments:

  1. Supiri wadak..elaga kotasa danakam balan inne api..thanks lot to u..

    ReplyDelete
    Replies
    1. :) me dawaswala internet eke publish karanne nathi pothak liyana nisai blog post danna parakku wenne... eheth man digatama liyanawa...

      Delete
    2. Dan oya liyana potha mokak sambandawada liyana ekakda....

      Delete
    3. ekath electronics gena thamai... (a book on basic electronics for kids...)

      Delete