Python(පයිතන්) හඳුනා ගනිමු


Python(පයිතන්) හඳුනා ගනිමු

දහසක් පරිගණක භාෂා අතරින් තවත් එක් පරිගණක භාෂාවක්. දහසක් පරිගණක භාෂා අතරින් පයිතන් සුවීශේෂී වන්නේ එහි ඇති වේගය, ඉතා ඉක්මනින් ඉගන ගත හැකිවීම, කුඩා කේත ප්‍රමාණයකින් ලිවීමේ හැකියාව වැනි බොහෝමක් අංගයන් නිසා. ඒ අතරින් වඩාත් වැදගත්ම ලක්ෂණය පයිතන් වලින් ලියන ලද පරිගණක වැඩසටහන් (MS Windows, Linux(Unix-like), Mac OSX,Amiga, Palm Handheld,Symbian OS Series60  ආදී)බොහෝ පද්ධති ගණනක ධාවනය කළ හැකිවීම යි. ලොව ජනප්‍රියතම වෙබ් අඩවි කීපය අතර වන ගූගල් වෙබ් සෙවුම් යන්ත්‍රය (Google search engine), YouTube  ආදී වෙබ් අඩවි ද  BitTorrent, Gentoo Portage වැනි ඩෙස්ක්ටොප් පරිගණක වැඩසටහන් ද මේ මගින් නිපැයූවන් වීම පයිතන්හී සූවිශේෂී භාවයට හොඳ සජීවී නිදසුන් කිපයක් පමණ යි.

            කේත රචනයට යොමුවීමට අදහස් කර සිටන නවකයන්ට ද  ආරම්භයක් ලෙස ඉතා පහසුවේ කේතන ක්‍රමවේද ඉගැනුම සඳහා යොදාගන්න පුළුවන්. එය එතරම්ම සරලයි. ඒ වගෙම විනෝදාත්මක යි. ආධුනිකයෙකුට පයිතන් ඉගැනුමේ ලොකුම වාසිය අත්වන්නේ එකම පරිගණක භාෂාවක් මගින් විවිද පරිගණක ක්‍රමවේ ද(imperative,  functional, object oriented) අත්හදා බලා ඉගන ගැනුමට හැකිවීම යි. පයිතන් හී නිල වෙබ් අඩවිය (http://www.python.org) මගින් ඔබට පයිතන් භාගත කරන්න පුළුවන්. වැදගත්ම කාරනය වනුයේ එය නොමිලේම භාගත කළ හැකි විවෘත සහ නිදහස් මෘදුකාංගයක් වීම යි.

මෙතෙක් ආමග
විවිද  ක්‍රමවේද  භාවිතා  කරන්නත් පුළුවන්
කේත  ලියන්නේත්  අමුතු ක්‍රමය කට
Scripting Language එකක් ලෙසටත් ඉදිරියන්
විශේෂ යෙදුම්
Standard library විශාල ගණනක්
අවසන් සටහන

මෙතෙක් ආමග
          1990 දී ලන්දේසි ජාතිකයෙකු වන Guido von Rossum විසින් පයිතන් ලොකයට හඳුන්වා දුන්නා. මූලිකව පයිතන් නිර්මාණය කරලා තියෙන්නේ ABC නම් පරිගණක භාෂාවේ ඇති ලක්ෂණ බොහෝමයක් ආභාෂට අරගෙන. දැන් වන විට පයිතන් ලෝකයම ආක්‍රමනය කරලා කිව්වොත් වැරදි නෑ. Desktop Applications, වෙබ් අඩවි වලින් නොනැවතී දුරකථන සඳහා ද තම අනසක පතුරන්නටත් මේ පිඹුරාට(පයිතන්) හැකි වෙලා තියෙනවා. මේ ලිපිය ලියන විට python 3.0 වෙළුම නිකුත් වේලා අවසාන යි. නමුත් ඉදිරියේදී ලිපිවලදී විශේෂයෙන් සඳහන් නොකරන ලද අවස්තාවන් හීදී  2.6 වෙළුම භාවිතා කිරීමට අදහස් කර ඇත. ඒ බොහෝමයක් තුන්වෙනි පාර්ශවයන් විසින් නිර්මිත මොඩියුලයන් තවම නව වෙළුමට යාවත් කාලින කර නැති නිසා.

විවිද  ක්‍රමවේද  භාවිතා  කරන්නත් පුළුවන්
            පයිතන් මගින් ‍කේතනය කිරීමේදී object oriented, imperative (Procedural/Structured),  functional ආදී කේතන ක්‍රම(programming paradigms)  කීපයන් කැමති ක්‍රමයකින් හෝ ඇවැසිනම් object oriented අමතක කර Procedural ක්‍රමයටම වුවද භාවිතා කරන්න පුළුවන්. එසේම එමගින් ලියන ලද කේතයක් ජාවා(java) හෝ ඩොට් නෙට්(.net) මත පවා ධාවනය කරන්නට සුදුසු පරිදි සකස් කළ හැකිවීමත් විශේෂ වාසියක්. තවද C, C++ ආදී  පරිගණක භාෂා මගින් ලියන ලද මොඩියුලයන්ට පයිතන් පහසුවේන් සංකලනය(integration) කළ හැකි යි. අවශ්‍ය නම් C වල සිට Python මොඩියුලයන් ගේ  සහය ද ලභා ගත හැක.

කේත  ලියන්නේත්  අමුතු ක්‍රමය කට
            පයිතන්හී කේතනය සඳහා යොදාගන්න ක්‍රමවේදය(syntax) ඉතා සිත්ගන්නා සුළුයි. වෙනත්  පරිගණක භාෂාවන් වල ‍මේ ක්‍රමය සුළභව භාවිතා කරලා නැහැ. ‍සාමාන්යෙන් බොහෝමයක් පරිගණක භාෂාවන්හී කේත කොටසක් වෙන් කර දැක්වීමට සඟළ වරහන්, විශේෂ කී වර්ඩ්(begin, end, end sub, end if ...)  ආදිය භාවිතා වන මුත් පයිතන් හී භාවිතා කරන්නේ ඉන්ඩන්ටේෂන් එකයි.. මෙහිදී වෙන්කර දැක්වීමට කේතයන් එක පෙළට හිස් තැන් මගින් හෝ ටැබ්(tab) මගින්  දැමීම මගින් සිදු කරනවා. මේ ලක්ෂණය නිසා සමහර නවකයන් පසුබෑමකට ලක් වෙනවා. ඒ මීට කලින් වෙනත් පරිගණක භාෂා වල ක්‍රමවේදයන්ට ඇබ්බැහි වී සිටින නිසා යි. පසුබට නොවී උත්සහ කළහොත් එය වඩා පහසු බව වැටහේවී.

Scripting Language එකක් ලෙසටත් ඉදිරියන්
            පයිතන් Scripting Language එකක් ලෙසටද භාවිතා කළ හැකියි. Scripting Language ලෙස හඳුන් වනුයේ කම්පයිල් කිරීමකින් තොරවම ධාවනය කළ හැකි කේතයන් සහිත පරිගණක භාෂවන්ටයි. මේ ගුණාංගය නිසා වෙබ් අඩවි නිර්මාණයටද විවිද පරිගණක වැඩසටහන් වලට ඔබ්බවා ඇති   භාෂාවක් සේද භාවිතා කරයි. Blender, Maya, Houdini, Softimage XSI, TrueSpace, Poser, Modo, Nuke  ආදී ත්‍රිමාණ රූප නිර්මාණ මෘදුකාංග මීට හොඳ උදාරහණයක්.

විශේෂ යෙදුම්
පයිතන් සඳහා යෙදුම් විශාල ගණනක් තියෙනවා. CPython, Jython, IronPython, PyPy, PyS60 ආදිය ඉදිරියෙන් ඉන්නවා.  Jython මගින් පයිතන් කේතයන් ජවා බයිට කෝඩ් බවට පරිවර්තනය කරන්නත්  IronPython මගින් පයිතන් කේතයන් .net  හෝ මොනෝ  Framework සඳහා පරිවර්තනයත් සිදු කරයි.

PyS60 යනු Nokiya දුරකථන සඳහා නිරමිත පයිතන් පරිවර්තක යයි.

Standard library විශාල ගණනක්

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

First steps of Python
පසුගිය කොටසින් අපි පයිතන් හා බැඳුන් වට පිටාව ගැන සොයා බැලුවා. මෙවර අපි සත්‍ය ලෙසටම පයිතන් මගින් ක්‍රමලේඛනයක් ලියන්න උත්සාහ කරමු.
ආරම්භය පෙර
පයිතන් පරිගණකයට ස්ථාපනය
Python IDLE (Integrated DeveLopment Environment)
IDLE එක ගණක යන්ත්‍රයක් ලෙස

ආරම්භය පෙර
පරිගණකය යනු ඉලෙක්ට්‍රොනික උපාංගයකි. පරිගණකය සඳහා ලියනු ලබන සියලුම වැඩසටහන් අවසානයේ මේ ඉලෙක්ට්‍රොනික දත්තයන් බවට පරිවර්තනය සිදු කළ යුතුය. අපි පරිගණකයට ලියනු ලබන වැඩසටහන් අප ලියන්නේ මනුෂයන්ට කියවිය හැකි ආකාරයටය. නමුත් පරිගණකයට වැටහෙනුයේ ඉලෙක්ට්‍රොනික භාෂාවය. එයට Machine Language යැයි අපි කියමු. එය binary නැතිනම් ද්වීමය සංක්‍යා වලින් සෑදුනු පරිගණක විධාන වලින් සමන්විත පරිගණකයේ ක්‍රියාකාරීත්වය සිදුවිය යුතු ආකාරය දැක්වෙන සම්මතයකි. පරිගණකය මේ ද්වීමය සංඛ්‍යා විදුලිය ඇත නැත යන පදනම මත තේරුම් ගනී. නමුත් මේ binaryකේතයන් මිනිසින්ට තේරුම් ගැනීම අපහසුය. එසේම එම විධානයන්මගින් පරිගණකයට ක්‍රමලේකනය කිරීමට ඉතා දීර්ග කාලයක් වැය කිරීමට සිදුවේ. යම්කිසි ආකාරයකින් මිනිසුන්ට පවා කියවිය හැකි අයුරන් යම් යම් නීතී-රීතී අනුපිලිවලකට ලියන ලද ‍විධානයන් සමූහයක් machine readable(පරිගණකයට කියවිය හැකි) ආකරයට පරිවර්තනය කරන මෘදුකාංගයට අපිcompiler එකක් හෝ interpreter එකක් හෝ යැයි කියමු. එසේම එකිනෙකට වෙනස් වෙනස් ආකාරයට මේ නීති-රීති සමූහයන් සඳහා සම්මත මිනිසුන් විසින් සකසා ඇත. අපි පරිගණක භාෂාවන්(programming languages) ලෙස හඳුන්වන්නේ ඒවායි. මෙම සම්මතය ඉගනගත් විට මිනිසුන්ට කියවිය හැකි නිසා අපිට ඒවාට human readable කේතයන්(codes) ලෙස හඳුන්වයි.

මෙසේ human readable කේතයන් machine readable බවට පරිවර්තනය කිරීමේ ප්‍රධාන ක්‍රම දෙකක් වේ. එකක් නම් එක වරම human readable කේතයන් සියල්ල machine readable බවට පරිවර්තනය කිරීමයි. මෙම ක්‍රියාවලියට අපි compilation යැයි කියමු. මෙය සිදුකරන මූදුකාංගයට compiler ය යැයි කියයි. මෙසේ කම්පයිල් කරගත් පසුව මුල් human readable කේතය තව දුරටත් අවශ්‍ය නෙවේ. අවශ්‍ය වේනම් ඒ නැවත වෙනස් කමක් කිරීමට ඇත්නම් පමණි. මෙම ක්‍රමයේ අවාසියනම් එක් පරිගණක පද්ධතියක් සඳහා compile කරන ලද මෘදුකාංගයක් වෙනත් පද්ධතියක දාවන කිරීමට නොහැකි වීමයි. compiler ය විසින් විවිද පද්දති සඳහා compile කිරීමට පහසුකම් සලසා ඇතිනම් අපට විවිද පද්ධති (Windows/ Linux/ mac os ආදී...) සඳහා එකම human readable code එක කීපවරක් compile කිරීමට සිදුවනු ඇත. අනෙක් ක්‍රමය නම් human readable code පරිගනකය තුලදී දාවනය කිරීමට අවශ්‍ය විටදී එවෙලේම කොටසින් කොටස පරිවර්තනය කිරීමයි. මේ ක්‍රියාවලියට සිදුකරන මෘදුකාංගයට අපි interpreter යැයි කියමූ. මේ ක්‍රමයේ ඇති වාසියනම් interpreter ය සහය දක්වන ඕනෑම පද්ධතියක් තුල ධාවනය කළ හැකි වීමයි. අවාසිය නම් පරිගනකයට එක වර වැඩ දෙකක් කිරීමට සිදුවන නිසා(පරිවර්තනය සහ එම කේත ධාවනය) පරිගණක වැඩසටහන compiled පරිගණක වැඩසටහනකට වඩා වේගයෙන් තරමක් අඩු වීමයි.

 
පයිතන් interpreted පරිගණක භාෂාවක්. ඒ නිසා python මගින් නිර්මිත වැඩසටහන් python සහය දක්වන ඕනෑම පද්ධතියක් මත ධාවනය කළ හැකියි. නමුත් ඔබට පයිතන් මගින් human readable code එකක් intermediate code එකක් බවට පත් කළ හැකියි. intermediate code එකක් යනු human readable හා machine readable යන‍දෙකෙන් කොයිකටවත් අයිති නැති කොටසකි. එනම් ඔබට python මගින් කේතයක් (human readable code) එකක් compile කළවිට ලැබෙන්නේ machine readable code එකක් නොවේ intermediate code එකක්. මේ කේතයන්ට අපි python byte code එහෙමත් නැතිනම් python object code එකක් කියලා කියනවා. සාමාන්යෙන් compiler එකක් human readable code එකක් machine readable code එකක් බවට පරිවර්තනය කරිමේදී තාවකාලික ලෙස මෙසේ අතර මැදි ‍object code එකක් සාදයි. ඉන්පසු linker නම් විශේෂ මෘදුකාංගයක් මගින් සියළුම object code එකතු කර machine code එක බවට පරිවර්තනය කරයි. නමුත් python compilerය object codeඑක සාදා එතනින් නවත්තවයි. ජාවා පරිගණක භාෂාවේද මෙම ලක්ෂනය ඇත. නමුත් අපිට අවශ්‍යනම් ‍python කේතයන් compile නොකර වුවද භාවිතා කළ හැකියි. ධාවනය කළ හැකියි. සාමාන්යෙන් පයිතන් කේතයන් අඩංගු ගොනුවක් py කියන දිගුව(extension) සහිතව සුරැකිය යුතුයි. උදාහරණයක් ලෙස hello.py යන ගොනුවක් ඇත්නම් එයින් හැඟවෙන්නේ ඒ කම්පයිල්නොකරන ලද පයිතන් ගොනුවක් බවයි. සාමාන්යෙන් කම්පයිල් කළ පසු මේ ගොනුවේ extension එකpyc(හෝ pyo) ලෙස වෙනස් වෙනවා.

පයිතන් පරිගණකයට ස්ථාපනය

බොහෝමයක් ලිනක්ස් පද්ධති සමග python ලැබෙනවා. වින්ඩොස් පද්ධතියකදී නම් http://www.python.org/ftp/python/2.6.1/python-2.6.1.msi මගින් python ස්තාපනය කරගන්න.

පයිතන් මගින් කේතනය ආරම්භ කරන්න හොඳම තැන තමයි මේක. ‍ඇත්තෙන්ම මෙය ‍විනෝදාත්මකයි. ගණක යන්ත්‍රයක් විදියටත් භාවිතා කරන්න පුළුවන්.
වින්ඩොස් පද්ධතියකනම් Start >All program >Python 2.6 >IDLE (Python GUI) යටතේ ධාවනය කළ හැකියි. Linux පද්ධතියකනම් Terminal එක මත python ලෙස ටයිප් කිරීම මගින් ලබාගන්න පුළුවන්.
දැන් පළමු කේතය ලියන්නට පටන්ගමු. සාම්ප්‍රදායික ලෙස මුල්ම වැඩ සටහන සඳහා Hello World යන වචන දෙක මුද්‍රනය කරන ආකාරය බලමු. මේ සඳහා IDLE එකේ print "Hello World!"ලෙස සටහන් කරන්න.



 

IDLE එක ගණක යන්ත්‍රයක් ලෙස


එසේම ඔබට IDLE එක ගණක යන්ත්‍රයක් ලෙස භාවිතා කළ හැකියි. මේ උදාහරණ කීපයක්.

>>>1+4
5
>>>30+99
129
>>>1125+5374
6499
>>>7-6
1
>>>14-20
-6
>>>5*5
25
>>>5**2
25
#මෙහිදී 5**2 මගින් 5හි දෙවන බලය හඟවයි. ** මගින් සංඛ්‍යාවක බලය දක්වනු ලබයි.
>>>6/2
3
>>>10/3
3
#ඉතිරිය නොසලකා ඇත
>>>10.0/3.0
3.3333333333333335
#දශම සහිතව සංඛ්‍යා බැවින් ඉතිරිය දශම සහිතවම දක්වා ඇත
>>>10%3
1
>>>28%5
3
# “%”සලකුණ මගින් සංඛ්‍යාවක් බෙදූ පසු ලැබෙන ඉතිරිය දැන ගත හැක.

ගණිත සලකුණු

Command and description  
+  Addition සංඛ්‍යා දෙකක් එකතු කරීම භවිතා කරයි
   >>>4+5
   9
-   Subtraction  සංඛ්‍යා දෙකක් අඩුකිරීමට කරීම භවිතා කරයි
   >>>9-4
   5
*  Multiplication සංඛ්‍යා දෙකක් ගුණකිරීමට භවිතා කරයි
   >>>3*6
   18
/   Division   සංඛ්‍යා දෙකක් බෙදීමට භවිතා කරයි
   >>>9/3
   3
% Remainder   සංඛ්‍යා දෙකක් බෙදූවිට ලැබෙන ඉතිරය දක්වයි.
   >>>9%2
   1
**    Exponent සංඛ්‍යායවක බලය දක්වයි.(දර්ශකය)
   >>>9**3
   729

ඔබ 6 වසරේ ගණිතයේ උගත් ගණිත සලකුණු වල ප්‍රමුතා ලැයිතුව මතක ඇතැයි සිතමි. එය නැවත python ට අදාල වන පරිදි සකස්කර මෙසේ කියමු.
මුලින්ම වරහන් තුල ඇති සංඛ්‍යා සුළු කරන්න.
දෙවනුව ** සහිත සංඛ්‍ය සුළු කරන්න.
තෙවනුව පිළිවළින් * , \ සහ % සහිත සංක්‍යා සුළු කරන්න.
අවසානයට පිළිවලින් + සහ –සහිත සංඛ්‍යා සුළු කරන්න.

>>>(15 - 7)*23%3
1
>>>15 - 7*23%3
13
>>>

(15 –7)*23%3 යන ගණිත ගැටළුව python විසින් සුළු කරන ලද ආකාරය සිතා බලමු.
පලමුව වරහන් තුල ඇති සංඛ්‍යාව සුළු කළ යුතුයි. එවිට ,
8*23%3 යන සංක්‍යාව ලැබේ.
දැන් 8 සහ 23 ගුණ කළ යුතුය. එවිට,
184%3 යන සංක්‍යාව ලැබේ.
දැක් 184, 3න් බෙදුවිට ලැබෙන ඉතිර ගණන සෙවිය යුතුය. එවිට පිළිතුර ලෙස,
1 යන සංක්‍යාව ලැබේ.
මෙලෙසම 15 –7*23%3 යන ගණිත ගැටළුව විසඳන ආකාරයගැන සිතන්නනට උත්සාහ කරන්න. ඊලඟ කොටසේදී සැබෑලෙසම පරිගණක කේතයක් ලියන්නට උත්සහ කරමු. එවිට ඔබ විසින් ලියන ලද කේතයන වෙනත් ඕනෑම පරිගණකය ධවනය කීරීමට ඔබට හැකි වෙනු ඇත.


මෙම ලිපිය Dasun Weerasinghe විසින් ලියන ලද digit.lk වෙතින් උපුටා ගැණුනු ලිපියකි. 
digit.lk ලිපිය වෙත යාමට මෙතන ක්ලික් කරන්න.


10 comments:

Tharindu Edirisinghe said...

වැදගත් ලිපියක්. දිගටම ලියන්න. මම lynda.com එකේ Python video tutorial එක download කරගත්ත. මේ ටිකේ ඉගෙනගන්නයි යන්නෙ. මේ ලිපිය ඒකට හොඳ ආරම්භයක්.

saman's blog said...

හරිම සංතෝසයි. මගෙන් සුභ පැතුම්. දසුන් වීරසිංහත් සුතුටු වෙයි.

Lakal Fernando said...

watinawa sir. isthuthui

saman's blog said...

ස්තුතියි

සුදු මහත්තයා said...

මාරයිනේ සර් .. සර්ගෙ පයිතන් පාඩම් ටිකත් මම බලනවා ඈ :D

මාධව විදුරංග said...

මාත් පටන් ගන්නයි යන්නේ එහෙනං! සර්ට ගොඩක් ස්තූතියි! දිගටම මේ ගැන ලිපි දාන්න සර්!

saman's blog said...

සුදු මහත්තයටත් මාධවටත්

බොහෝම ස්තුතියි

Unknown said...

සර්, රටට කරන සේවය මිල කළ නොහැකියි. නැත්නම් අපි වගේ දුප්පතුන්ට මේ දැනුම කවදා ලබාගන්නද? සර්ගේ කැපවීමට බොහෝම බොහෝම බොහෝම ස්තූතියි.... සර්ට ජය....

saman's blog said...

ස්තුතියි

Unknown said...

බ්ලොග් එකනම් සුපිරියි. ලොවෙත් වටිනවා. O/L ICT ඉගෙනගන්න අය greendjr9edu බ්ලොග් එකට එන්න.