Saturday 8 August 2009

මයෙ මැණික් කැටේ(පලමු කොටස)

ඔන්න ඉතින් මැණික් කැටේ එක්ක මොකුත් කරන්න ඉස්සෙල්ලා මැණික් කැටේ දාගන්න එපෑ. (වැරදියට අනං මනං කැත කතා හිතනව නෙමේ හොදද? මම කතා කරේ install කරගන්න එක ගෑන).

මේ ලිපියෙන් මම උත්සහ කරන්නෙ language එකට අත තියන්නයි, fundamentals ගැන අවබෝධයක් ගන්න උදව් වෙන්නයි. උපරිමයෙන් උත්සහ කරනවා ඕනම කෙනෙක්ට තේරෙන්න සරල විදියට තේරුම් කරන්න. අපැහැදිලි තැන් තිබ්බොත් අහන්න. මැණික් කැටේ ගැන මාකටින් පාරක් දාන්න බලාපොරොත්තුවක් නම් නෑ.

linux පාවිච්චි කරන අයට තියෙන්නෙ ruby කියන repository එක install කරගන්න (apt-get install ruby). වැඬ අල්ලන්න ඒක හොදටම ඇති. වැඬේ නැගලා ගියොත් අනික්වා ගැන බලමු. windows කට්ටිය මෙන්න මේක download කරගන්න. ඊට පස්සෙ ඉතින් next->next->next->finish නේ. ;)

ඕං එහෙනම් දෙයියනේ බුදුනේ කියලා notepad එක open කරගමු නේද? හැමෝම කරනවා වගේ ලෝකෙට "හලෝ" කියන්නෙ නැතුව අපිටම "හලෝ" කියාගෙන බලමුද? notepad එකේ මෙහෙම type කරන්නකො.

puts "adooo gemba"

අපි ඕක save කරගන්න ඕනා .rb කියන extension එකත් එක්ක. java කරපු කට්ටියට මතක ඇතිනෙ java code එක save කලේ ".java" කියලනෙ. එහෙනම් ඉතින් file->save ගිහිල්ලා "myfirst.rb" කියලා මේක save කරගමුකෝ. දැනට desktop එකේ save කරගන්න. (myfirst වෙනුවට ඔයාට කැමති නමක් දාගත්තට කිසිම අවුලක් නෑ හොදද?). මතක තියාගන්න file extension එක ".rb.txt" නෙමයි ".rb" යි කියලා. දැන command prompt එක අරගන "myfirst.rb" එක save කරපු තැනට (desktop එකට) මාරු වෙලා (cd ) මෙහෙම කොටන්න.

ruby myfirst.rb

ඔයා අර උඬින් ලියපු text එක(adooo gemba) display උනා නේද? (බැරිවෙලාවත් file not found කියලා ආවොත් extension එක .rb මිසක් .rb.txt නෙමේ නේද කියලා check කරන්න) double quotations ඇතුලෙ තියන text එක මාරු කරලා save කරලා දෙතුන් පාරක් run කරලා බැලුවට කවුරුත් බනින එකක් නෑ.

දැන් පොඬිඬක් විතර boring කොටස. theory චික් නෙ? හරි, සරලව කියන්න බලන්නම් කො. code එකක කොහෙන් ගියත් අඬංගු වෙන කොටස් තුනක් තියනවා. ඔයාලා දැනටමත් දන්නවනෙ මම මේ කියන්නෙ sequence selections සහ repetition ගැන කියලා. sequence කියන්නෙ කෝච්චිය වගේ statements එකින් එක execute කරගෙන යනවට. repetition කියන්නෙ අර වලිගෙ හපන්න try කරන බලුකුක්ක වගේ එකතැන කැරකෙනවට. එකකො ඌට කැරකිල්ල හැදිල නතර වෙන්න ඕනෙ නැත්තම් කවුරු හරි කෑගහන්න ඕනෙ. එතකන් පොර කැරකෙනවා. loops කියලා කියන්නෙත් එව්වට තමා. selection කියන්නෙ අර උගුල ලග නතරවෙච්ච මීය වගේ "කේක් කෑල්ල කනවද, චීස් කෑල්ල කනවද" කියලා හිත හිත ඉන්නවට. මම වැඬේ පටලුවෙ නෑ නේද?

අපි ඉතින් පලවෙනි කොටසට sequence වලට විතරක් සීමාවෙලා ඉමු. ඕන්න අපි අර කලින් කරපු "හලෝ" කිවිල්ල පොඬ්ඬක් පිලිවලට කරමු. අපි ඕක function එකක් ඇතුලට දාමු. මෙන්න මෙහෙමයි වැඬ් කරන්නෙ

def sayhi
puts "adoooo gemba"
end

sayhi

def කියන්නෙයි end කියන්නෙයි keywords. def කිලා නම දීලා ඊට පස්සෙ ඉදලා end වලට වෙනකන් එක කොටසක් විදියට තමයි ගනන් ගැනෙන්නෙ. java වල { යි }යි වගේ. vb වල sub යි end subයි වගේ. puts කියන්නෙ java වල print වගේ. vb වල ? වගේ. sayhi කියන්නෙ අර උඬ ලියපු function name එකනේ. අනතිමට sayhi කියලා තියෙන්නෙ ඒ function එක run කරන්න කියලා. සිද්දිය පැහැදිලීද? එහෙනම් තව අඬියක් ඉස්සරහට තියමුකෝ...

def sayhi(name)
puts "adooo #{name}"
end

sayhi "anthrax"

කරලා තියන වැඬේ පැහැදිලීද? function එකට parameter එකක් pass කරන්න පුලුවන් කරන එක තමයි ඔය වරහන් එක්ක කරලා තියෙන්නෙ. වෙනසක් තේරුනාද? sayhi කියන function එකට මම fixed name එකක් assign කරලා නෑ. sayhi function එක call කරද්දි දෙන නමට තමයි එයා greet කරන්නෙ. වැඬ් ලේසී නේද? #{} වලින් කරලා තියෙන්නෙ අර parameter එකේ තියන text එක output text වලට ඔබ්බවන එක. මොන programming language එක පාවිච්චි කලත් හොද internal documentation එකක් maintain කරන්න අමතක කරන්න හොද නෑ නෙ. # සලකූණ යොදලා තමයි අපි comment එකක් දාන්නෙ. හෝව් හෝව්, කෑගහන්න ඉස්සෙල්ලා මේ ටිකත් කියවලා ඉම්මුකො. දැන් ඔය කියන්න ලෑස්ති උනේ #{} පාවිච්චි කරපු විදියයි comment කරන විදියයි එකවගෙයි කියලා නේද? පොඬ්ඬක් හොදට බලන්න අපි #{} පාවිච්චි කරලා තියෙන්නෙ "" ඇතුලෙ නේද? ;)

#this is a commemt
def sayhi(name="gemba") #this is also a comment
puts "adooo #{name}" #here is another comment
end #this is a comment too

sayhi "anthrax"
sayhi

පොඬි වෙනස්කමක් කරලා තියනවා දැක්කද? name variable වලට default value එකක් assign කරලා තියනවා gemba කියලා. එතකොට ඔයා sayhi function එක parameter එකක් නැතුව call කලොත් adooo gemba කියලයි, parameter එකක් එක්ක call කලොත් adoo කියලයි වෙනස් output දෙකක් ලැබෙනවා.

දැනට මෙතනින් නවත්තන්නම්. කූරුගාලා ප්‍රශ්ණ එහෙම තිබ්බොත් අහන්නකො..

14 comments:

  1. ප්‍රශ්න නම් නෑ anthrax අයියේ... lesson එක එළ... ඔහොම යං... බොහොම පිං මේ වැඩේ කරනවට...

    ReplyDelete
  2. වැඩේ පටන් ගත්තට ජය වේවා.

    පස්සෙ කාලෙක හොයාගන්න ලේසිවෙන්න, tag කලොත් නරකද?

    ReplyDelete
  3. අඩේ එල එල !
    මම මේක හැමදාම කියවනවා.

    මේ.. Ruby වලයි Ruby-On-Rails වලයි වෙනස කියාදීපංකො මචං.

    ReplyDelete
  4. එළ එළ, ටිකක් python වගේ නේද?

    ReplyDelete
  5. chathuraw,
    තැන්කූ තැන්කූ ... ;)

    Gaveen,
    මේ කරනවා.. මගෙ ඔක්කොම ඉතින් පිස්සගෙ පලාමල්ල වගේනෙ. tag කරල තියන එක හොදයි තමයි. හුගක් ඉස්තූතී අදහසට.

    ඉනදරේ,
    ruby කියන්නෙ language එක මචෝ. rails කියන්නෙ framework එක. හරියට C# යි .netයි වගේ.

    Kaushalya,
    මට pyton එක්ක නම් ගොඬක් experience නෑ. හැබැයි මගේ අදහස නම් මැණික පිළිවෙලයි සහ ශක්තිමත්

    ReplyDelete
  6. @ඉන්ද්‍රනාම,

    änthräX කිවුව හරි. හැබැයි පොඩි පැහැදිලි කිරීමක් කරන්න ඕන. Ruby කියන්නෙ programming language එකක්. Ruby on Rails කියන්නෙ Ruby භාෂාවෙන් ලියපු web application framework එකක්. හරියට Java වලට String හරි Struts හරි, එහෙම නැත්නම් PHP වලට Zend, CakePHP හරි Symfony හරි, එහෙමත් නැත්නම් Python වලට Django හරි TurboGears හරි වගේ. සරලව කිවුවොත් Rails ධාවනයට Ruby අවශ්‍යයි.

    RoR කියන්නේ මෑත කාලයේ wep application programmingවල විප්වීය වෙනසක් ඇතිකල framework එකක්. වැඩිපුර විස්තර änthräX පස්සෙ කියයි. :)

    ReplyDelete
  7. ඇන්ත්‍රැක්ස්ටත් ගවීන්ටත් දෙන්නටම ස්තූතියි පැහැදිලි කරලා දුන්නට :)

    ඇන්ත්‍රැක්ස්... ඉදිරි ලිපි ඉක්මනින් බලාපොරොත්තු වෙනවා :D

    ReplyDelete
  8. ෂහ්.. මරු පාඩම. . ඔළුවට බරක් නැතුව බලන්න පුළුවන්
    අනිවා මම මේක දිගටම බලනවා
    මේ ruby සාමාන්‍යයෙන් පාවිච්චි වෙන්නෙ මොනවගේ යෙදුම්වලටද කියල කියනවද

    ReplyDelete
  9. ගොඩක් ස්තුතියි !

    මට හිතෙනවා වැදගත්ම දෙයක් මග හැරිලා කියල, Ruby වල ප්‍රයෝජන, භාවිතා වන අවස්ථා, දැනට භාවිතා වන ස්ථාන ආදිය පොඩ්ඩක් සඳහන් කරන්න.

    ReplyDelete
  10. මට නම් මේවා තෙරෙන්නේ නෑ කොල්ලෝ . . . ඒත් කමෙන්ට් දැක්කම නම් හිතෙනවා උඹ කරන්නේ හොඳ වැඩක් කියලා . . . එල එල . . . ඔහොම යං . . . !

    ReplyDelete
  11. puts "ela ela... thanx a lott..."

    --
    මේකෙ Statement වෙන් කරන්නෙ කොහොමද? 
    semi-colon (;) එකක් වත් දාල නෑනෙ..

    ReplyDelete
  12. තමීර, Supun,
    බොහොම ඉස්තූතී. මගෙ එකම බලාපොරොත්තුව මේක සරලව ලියන එක.
    ඇත්ත තමයි, පොඬි පැහැදිලි කිරීමක් කරන්නම් ඊළග ලිපියෙන්.

    දුකා,
    තැන්කූ වේවා දුකා අයියා..

    ගයන්ත,
    coment එකට නම් ආස හිතුන ඇත්තටම.

    ';' පාවිච්චි කරන එකේ අදහස එක line එකේ multiple statement දානවනම් නෙ. c++ වල java වල ; දාන්න force කරලා තිබුනට ruby වල newline character එකත් end of line විදියට සලකනවා. එක් එක්කෙනාගෙ ආස ආසනැති ගතිය අනුව ; පාවිච්චි කරන්න නොකරන්න පුලුවන් මැණික එක්ක. ;)

    ReplyDelete
  13. එල කොල්ලෙක් නෙ.... ඔහොම දැක්කමනෙ ලියන්න ආස හිතෙන්නෙ. තැන්කූ වේවා.
    සොරි වෙන්ඬෝනා මේ සතියෙ මුකුත් ලියන්න උනේ නෑ. (බේබදු කම මහරජකමට වඬා ලොකුයිලුනෙ..) ඉක්මනටම ඊලග post එක දාන්නම්

    ReplyDelete