Pages

January 29, 2007

ကၽြန္မ စိတ္၀င္စားေသာ အရာတစ္ခု

ဒီေန ့ေတာ့ Laptop တစ္လံုးမွာ Installation လုပ္ေနရတာကို ေစာင့္ရင္း ပ်င္းလာတာနဲ ့ Technical Websites ေတြ သြားၾကည့္လိုက္တာ Haskell အေၾကာင္း ေရးထားတာေလး တစ္ခုကို ေတြ ့လိုက္ရတယ္။ Haskell ဆိုတဲ့ နာမည္ၾကားရင္ အလိုလို စိတ္၀င္စားလာတဲ့ အက်င့္က ရွိေနေတာ့့ သြားဖတ္ၾကည့္ ျဖစ္သြားတယ္။ အဲ့ဒီ Site မွာ ေရးထားတာ အစေလးကလည္း ယဥ္တယ္ေျပာရမလားပဲ.. ဒီလိုေလး ေရးထားပါတယ္။

Danger! If you are happy with your current knowledge of programming languages, don’t read on – Haskell might be responsible for some serious defects in your motivation.

သူဘယ္ေလာက္ပဲ ၿခိမ္းေျခာက္ပါေစ၊ ကၽြန္မကလည္း မဖတ္ဘဲ မေနႏိုင္ဆိုေတာ့ ဆက္ၿပီး အားလံုး ၿပီးေအာင္ ဖတ္ျဖစ္သြားတာေပါ့။ စိတ္၀င္စားစရာပါပဲ။ Haskell ကို စတင္ ေလ့လာေနသူ တစ္ေယာက္ရဲ့ အျမင္ကို ေရးထားတာပါ။ တစ္ေနရာမွာ ေျပာထားတာက သူ ့အတြက္ေတာ့ Haskell ဟာ ေလ့လာရ ခက္တဲ့ Languages ေတြထဲမွာပါ ပါတယ္တဲ့။ ဟုတ္မွာပါ။ ကၽြန္မ ဖတ္ဖူး သေလာက္လည္း Haskell က တျခား ကၽြန္မသိတဲ့ တျခား Languages ေတြ နဲ ့ယွဥ္ရင္ ေလ့လာရ ခက္တာပါပဲ။ ဒါေပမယ့္ နားလည္သြားရင္ေတာ့ ေရးရတာ အရမ္း ျမန္ပါတယ္။

Haskell က Functional Programming Language ပါ။ အဲ့ဒီေတာ့ Haskell ရဲ့ ေရးေတာ့မယ္ဆို စဥ္းစားရတဲ့ ပံုေတြက တျခား ကၽြန္မတို ့ သံုးေနၾက C, Java, Pascal တို ့နဲ ့ Procedural Programming Language ေတြနဲ ့ လံုး၀ မတူပါဘူး။ ကၽြန္မ အတြက္ေတာ့ Haskell ဟာ စိတ္၀င္းစားဖို ့အရမ္း ေကာင္းပါတယ္။ အေသးစိတ္ ေလ့လာခြင့္ မရခဲ့ေတာ့ ေသခ်ာ မရွင္းျပႏိုင္ေသး ပါဘူး။ ဒါေပမယ့္ Recursive functions ေရးတာကို စိတ္၀င္စားသူေတြဟာ ဒီ Haskell နဲ ့ေရးရတာကို ႏွစ္သက္ၾကမွာေတာ့ ေသခ်ာ ပါတယ္။
ဒီမွာ Haskell နဲ ့ေရးထားတဲ့ Sorting ပါ။
Haskell quicksort:
qsort [] = []
qsort (x:xs) = qsort (filter (<>= x) xs)

The first line reads: "When you sort an empty list ([]), the result is another empty list". The second line reads: "To sort a list whose first element is named x and the rest of which is named xs, sort the elements of xs that are less than x, sort the elements of xs that are greater than or equal to x, and concatenate (++) the results, with x sandwiched in the middle."

Code အေနနဲ ့ကေတာ့ နည္းနည္းေလး ေရးရတာပါ။ ဒါေပမယ့္ အရင္ဆံုး နားလည္ဖို ့ေတာ့ အေတာ္ေလး ၾကိဳးစားရပါတယ္။

အဲ့ဒါကိုပဲ C လို Procedural Programming Language မွာ ေရးမယ္ဆို ဒီလိုဆိုၿပီး ေရးျပထားေသးတယ္။ Java လို ေရးျပဖို ့ကၽြန္မ့ စိတ္ကူးခဲ့ေပမယ့္ C နဲ ့ Java သိပ္မကြာတာနဲ ့ C နဲ ့ေရးထားတာကိုပဲ ကူးၿပီး ႏွိဳင္းယွဥ္ၾကည့္ လိုက္ပါေတာ့တယ္။

void qsort(int a[], int lo, int hi) {
{
int h, l, p, t;
if (lo < l =" lo;" h =" hi;" p =" a[hi];" l =" l+1;"> l) && (a[h] >= p))
h = h-1;
if (l < h) {
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l < h);
t = a[l];
a[l] = a[hi];
a[hi] = t;
qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}

ကၽြန္မ Haskell ကို စသိခဲ့တာ 2000 ေလာက္ကပါ။ ကၽြန္မတို ့ ေက်ာင္းမွာ သင္လို ့ရတဲ့ Modules ေတြထဲမွာ Haskell ကို အဓိက ထားၿပီး သင္တဲ့ Subject တစ္ခုရွိ ပါတယ္။ ကၽြန္မတို ့လို ခုမွ ေက်ာင္းတက္ရမယ့္ Fresher ေလးေတြကို Senior ႀကီးေတြက Subjects ေတြ အေၾကာင္း ရွင္းျပတာနဲ ့ Haskell ဆိုတဲ့ နာမည္ကို စတင္သိ ခဲ့တာပါ။ Haskell ဟာ ကၽြန္မ စိတ္၀င္းစားတဲ့ Programming Language ပံုစံမ်ိဳး ျဖစ္တာနဲ ့ အဲ့ဒီ Subject ကို ယူခ်င္ေပမယ့္ အေျခအေန အမ်ိဳးမ်ိဳးကို ေတြးေတာၿပီး ကၽြန္မ အယူျဖစ္ခဲ့ပါဘူး။ ဒါေပမယ့္ စိတ္၀င္စားတာနဲ ့ သူငယ္ခ်င္းေတြ တက္တဲ့ Lectures တခ်ိဳ ့ကို လိုက္တက္ ၾကည့္ခဲ့ ပါတယ္။ ေနာက္ပိုင္း ေက်ာင္းၿပီးေတာ့လည္း အနည္းအက်ဥ္း ဖတ္ျဖစ္တာေလာက္ပဲ ရွိပါတယ္။ ကၽြန္မ Haskell ကို စိတ္၀င္စားေပမယ့္ ခုခ်ိန္ထိေတာ့ အေသးစိတ္ ေလ့လာၾကည့္ဖို ့ အခြင့္အေရး မရေသးပါဘူး။ တခ်ိန္ခ်ိန္ေတာ့ Haskell လို System Programming Languages ေတြကို ေလ့လာၾကည့္ခ်င္ ပါေသးတယ္္။

Haskell ဆုိနဲ ့ စာလံုးေတြကုိျမင္တိုင္း…
ေက်ာင္းသားဘ၀ နဲ ့အဲ့ဒီတုန္းက သူငယ္ခ်င္းေတြကို သတိရမိတယ္

Source : Haskell.org (Introduction) , Haskell Programming (Wiki)

7 comments:

Anonymous said...

Get Yangon City FM Radio Toolbar and listen -one click convenience. Direct from Yangon (Rangoon) and LIVE transmission.Chat with other users also.

http://yangoncityfm.ourtoolbar.com

kyawmintun said...

I really interest this programming language. I never heard that before. And what I noticed is, you blood is full with programmer mind.

Nay Nay Naing said...

Ko KMT,
Thanks alot for your comment.. :)
I'm very glad to know that you are interested in Haskell after reading this post.

Myo Kyaw Htun said...

Oops! I've never heard that before :) Haskell coding is so compact! Thanks you for your sharing.

Thiha Kyaw Zaw said...

There is the another function language called ML which is older than Haskell and influenced to Haskell. Now Microsoft has been developing the another functional language called F# which is quite similar to Caml(a kind of ML).

MYO HAN HTUN said...

ကၽြန္ေတာ္ကေတာ့ Programmer တစ္ေယာက္မဟုတ္ေပမယ့္ Programming ကို ေတာက္တိုမယ္ရ တီးမိေခါက္မိတဲ့သူတစ္ေယာက္အေနနဲ႕ .. အခုလို ဒီ Language နာမည္ကို စသိခြင့္ရတဲ့အတြက္ရယ္၊ ဗဟုသုတရတဲ့ အတြက္ပါ .. ေက်းဇူးတင္မိပါတယ္။

Nay Nay Naing said...

Thank you all for your comments. :)