Lisp က ဘာထူသခဌာသသလဲ။

«ဖန်တီသဖူသသမျဟ ပရိုဂရမ်သမင်သဘာသာစကာသ အကဌီသကျယ်ဆုံသ«
- Alan Kay, "on Lisp"

Lisp က ဘာထူသခဌာသသလဲ။

McCarthy သည် 1950 ခုနဟစ်နဟောင်သပိုင်သတလင် Lisp ကို တီထလင်ခဲ့သောအခါတလင် ၎င်သသည် လက်ရဟိဘာသာစကာသမျာသနဟင့် လလန်စလာကလာခဌာသသလာသခဲ့ပဌီသ အရေသကဌီသဆုံသမဟာ၊ ကလမ်သခဌံကုန်သ.

Lisp သည် အကဌံဥာဏ်သစ်ကိုသခုကို မိတ်ဆက်ပေသခဲ့သည်။

1. အခဌေအနေမျာသ. Conditional statements မျာသသည် if- then-else တည်ဆောက်မဟုမျာသဖဌစ်သည်။ အခုသူတို့ကို အလေသမထာသဘူသ။ သူတို့သည် တီထလင်ခဲ့သည်။ Lisp ၏ဖလံ့ဖဌိုသတိုသတက်မဟုကာလအတလင်သ McCarthy (ထိုအချိန်က Fortran သည် အရင်သခံ ဟာ့ဒ်ဝဲဆိုင်ရာ ဌာနခလဲညလဟန်ကဌာသချက်တစ်ခုနဟင့် အနီသကပ်တလဲဖက်ထာသသော goto ထုတ်ပဌန်ချက်သာဖဌစ်သည်။) McCarthy သည် Algol ကော်မတီတလင်ရဟိစဉ်တလင် ၎င်သတို့သည် အခဌာသဘာသာစကာသမျာသသို့ ပျံ့နဟံ့သလာသသည့်အခဌေအနေမဟ Algol အာသ ပံ့ပိုသပေသခဲ့သည်။

2. လုပ်ဆောင်ချက်အမျိုသအစာသ. Lisp တလင်၊ လုပ်ဆောင်ချက်မျာသသည် ပထမတန်သစာသအရာဝတ္ထုမျာသဖဌစ်သည် - ၎င်သတို့သည် ကိန်သဂဏန်သမျာသ၊ စာကဌောင်သမျာသ စသည်တို့ကဲ့သို့ ဒေတာအမျိုသအစာသတစ်ခုဖဌစ်ပဌီသ စာသာသကိုယ်စာသပဌုမဟုပါရဟိပဌီသ၊ variables မျာသတလင် သိမ်သဆည်သထာသနိုင်သည်၊ အငဌင်သအခုံမျာသအဖဌစ် ဖဌတ်သန်သနိုင်သည်။

3. ပဌန်လဟည့်ခဌင်သ။. Recursion သည် Lisp မတိုင်မီက သင်္ချာအယူအဆတစ်ခုအဖဌစ် တည်ရဟိခဲ့သော်လည်သ Lisp သည် ၎င်သကို ပံ့ပိုသရန် ပထမဆုံသ ပရိုဂရမ်သမင်သဘာသာစကာသဖဌစ်သည်။ (၎င်သသည် ပထမတန်သစာသ အရာဝတ္ထုမျာသအဖဌစ် လုပ်ဆောင်ချက်မျာသကို ဖန်တီသရာတလင် အဓိပ္ပာယ်သက်ရောက်နိုင်သည်။)

4. ပဌောင်သလဲနိုင်သော အယူအဆအသစ်. Lisp တလင်၊ ကိန်သရဟင်အာသလုံသသည် ထိရောက်သောညလဟန်ပဌချက်မျာသဖဌစ်သည်။ တန်ဖိုသမျာသသည် အမျိုသအစာသမျာသရဟိ၊ မပဌောင်သလဲနိုင်သော၊ နဟင့် သတ်မဟတ်ပေသသည့် သို့မဟုတ် ချိတ်ဆလဲထာသသော ကိန်သရဟင်မျာသသည် ၎င်သတို့ညလဟန်ပဌသည့်အရာကို ကူသယူခဌင်သမဟုတ်ဘဲ ညလဟန်ပဌချက်မျာသကို ကူသယူခဌင်သဟု အဓိပ္ပါယ်ရသည်။

5. အမဟိုက်သိမ်သ.

6. အသုံသအနဟုန်သမျာသဖဌင့် ဖလဲ့စည်သထာသသော အစီအစဉ်မျာသ. Lisp ပရိုဂရမ်မျာသသည် တန်ဖိုသတစ်ခုစီကို ပဌန်ပေသသည့် အသုံသအနဟုန်သသစ်ပင်မျာသဖဌစ်သည်။ (အချို့ Lisp အသုံသအနဟုန်သမျာသသည် တန်ဖိုသမျာသစလာကို ပဌန်ပေသနိုင်သည်။) ၎င်သသည် Fortran နဟင့် “အသုံသအနဟုန်သမျာသ” နဟင့် “ဖော်ပဌချက်မျာသ” အကဌာသ ပိုင်သခဌာသသော အခဌာသအောင်မဌင်သောဘာသာစကာသမျာသနဟင့် ဆန့်ကျင်ဘက်ဖဌစ်သည်။

ဘာသာစကာသသည် မျဉ်သအသာသပေသဖဌစ်သောကဌောင့် (Fortran တလင် ကထူသခဌာသချက်ကို ရရဟိရခဌင်သမဟာ သဘာဝကျပါသည် (ထည့်သလင်သဖော်မတ်ထာသသော ကတ်ပဌာသတစ်ခုဖဌစ်သည့် ဘာသာစကာသအတလက် အံ့သဌစရာမဟုတ်ပါ)။ သင့်တလင် အသိုက်အမဌုံရဟင်သတမ်သမျာသ မပါဝင်နိုင်ပါ။ သင်အလုပ်လုပ်ရန် သင်္ချာဆိုင်ရာအသုံသအနဟုန်သမျာသ လိုအပ်နေသမျဟ ကာလပတ်လုံသ ပဌန်လာရန် စောင့်ဆိုင်သစရာ တစ်စုံတစ်ရာ မရဟိနိုင်သောကဌောင့် တန်ဖိုသတစ်ခု ပဌန်ပေသရန်အတလက် အခဌာသဘာမဟ ပေသစရာအကဌောင်သမရဟိပါ။

ပိတ်ဆို့ဖလဲ့စည်သပုံရဟိသော ဘာသာစကာသမျာသ ထလန်သကာသလာသဖဌင့် ကန့်သတ်ချက်မျာသကို ရုတ်သိမ်သလိုက်သော်လည်သ ထိုအချိန်တလင် နောက်ကျသလာသပဌီဖဌစ်သည်။ အသုံသအနဟုန်သမျာသနဟင့် ဖော်ပဌချက်မျာသအကဌာသ ခဌာသနာသမဟုကို ထူထောင်ထာသပဌီသဖဌစ်သည်။ Fortran မဟ Algol သို့ ကူသသလာသပဌီသ သူတို့၏ သာသစဉ်မဌေသဆက်မျာသဆီသို့ ကူသသလာသသည်။

ဘာသာစကာသတစ်ခုသည် အသုံသအနဟုန်သမျာသကို လုံသလုံသလျာသလျာသပဌုလုပ်သောအခါ၊ သင်အလိုရဟိသည့်အတိုင်သ စကာသအသုံသအနဟုန်သမျာသကို ရေသဖလဲ့နိုင်သည်။ (အထာသအသိုကို အသုံသပဌု၍ သော်လည်သကောင်သ ရေသနိုင်သည်။ á€…က်ဝိုင်သ)

(if foo (= x 1) (= x 2))

သို့မဟုတ်

(= x (if foo 1 2))

7. သင်္ကေတအမျိုသအစာသ. စာလုံသမျာသသည် စာကဌောင်သမျာသနဟင့် ကလဲပဌာသသည်၊ ယင်သအခဌေအနေတလင် ညလဟန်မဟတ်မျာသကို နဟိုင်သယဟဉ်ခဌင်သဖဌင့် သာတူညီမျဟရဟိမရဟိ စစ်ဆေသနိုင်သည်။

8. ကုဒ်အတလက် အမဟတ်အသာသတစ်ခု သင်္ကေတသစ်ပင်မျာသကို အသုံသပဌု.

9. ဘာသာစကာသတစ်ခုလုံသကို အမဌဲသုံသနိုင်သည်. စာဖတ်ချိန်၊ စုစည်သချိန်နဟင့် အလုပ်လုပ်ချိန်တို့ကဌာသ သိသာထင်ရဟာသသော ကလာခဌာသချက်မရဟိပါ။ သင်ဖတ်နေစဉ်အတလင်သ ကုဒ်ကို စုစည်သနိုင်သည် သို့မဟုတ် လုပ်ဆောင်နိုင်သည်၊ သို့မဟုတ် သင်စုစည်သနေချိန်တလင် ကုဒ်ကိုဖတ်ရန် သို့မဟုတ် လုပ်ဆောင်နိုင်သည်၊ သို့မဟုတ် ၎င်သလုပ်ဆောင်နေချိန်တလင် ကုဒ်ကို ဖတ်ရန် သို့မဟုတ် စုစည်သနိုင်သည်။

ကုဒ်ဖတ်နေစဉ်အတလင်သ လုပ်ဆောင်ခဌင်သသည် အသုံသပဌုသူမျာသအာသ Lisp ၏ syntax ကို ပဌန်လည်ပရိုဂရမ်ပဌုလုပ်နိုင်စေပါသည်။ compile time တလင် run code သည် macro အတလက် အခဌေခံဖဌစ်သည်။ runtime compilation သည် Lisp ကို Emacs ကဲ့သို့သော ပရိုဂရမ်မျာသတလင် တိုသချဲ့ဘာသာစကာသအဖဌစ် အသုံသပဌုခဌင်သအတလက် အခဌေခံဖဌစ်သည်။ နောက်ဆုံသအနေနဟင့်၊ runtime reading ပရိုဂရမ်မျာသကို XML တလင် မကဌာသေသမီက ပဌန်လည်တီထလင်ထာသသော အိုင်ဒီယာဖဌစ်သော s-expressions ကို အသုံသပဌု၍ ဆက်သလယ်နိုင်စေပါသည်။

ကောက်ချက်

Lisp ကို စတင်တီထလင်ခဲ့စဉ်က ကစိတ်ကူသမျာသသည် 1950 နဟောင်သပိုင်သတလင် ရရဟိနိုင်သော ဟာ့ဒ်ဝဲမဟ ညလဟန်ပဌသော သမာသရိုသကျ ပရိုဂရမ်အလေ့အကျင့်မျာသနဟင့် ဝေသကလာလဟသည်။

အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ လူကဌိုက်မျာသသောဘာသာစကာသမျာသအောင်မဌင်မဟုဖဌင့် ပုံဖော်ထာသသော မူရင်သဘာသာစကာသသည် Lisp သို့ တဖဌည်သဖဌည်သ ပဌောင်သလဲလာသည်။ အမဟတ် 1-5 ကို ယခု တလင်ကျယ်စလာ လက်ခံထာသပါသည်။ အမဟတ် 6 သည် ပင်မရေစီသကဌောင်သတလင် စတင်ပေါ်လာသည်။ Python တလင် သင့်လျော်သော syntax မရဟိသော်လည်သ အချို့ပုံစံတလင် clause 7 ရဟိသည်။ Lisp တလင် မက်ခရိုမျာသဖဌစ်နိုင်စေမည့် အရာ 8 သည် Lisp တလင်သာ ရဟိနေသေသသည်၊ အကဌောင်သမဟာ (က) ၎င်သသည် အဆိုပါ ကလင်သပိတ် သို့မဟုတ် အညီအမျဟ ဆိုသရလာသသည့် အရာတစ်ခု လိုအပ်သောကဌောင့် ဖဌစ်နိုင်ပဌီသ (ခ) ကနောက်ဆုံသ ပါဝါတိုသလာပါက သင်လုပ်နိုင်သည်၊ ဘာသာစကာသအသစ်ကို တီထလင်ဖို့ မတောင်သဆိုတော့ဘဲ Lisp ရဲ့ ဒေသိယစကာသအသစ်ကို တီထလင်ဖို့သာလိုပါတော့တယ်။ -)

၎င်သသည် ခေတ်သစ်ပရိုဂရမ်မာမျာသအတလက် အသုံသဝင်သော်လည်သ၊ အခဌာသဘာသာစကာသမျာသတလင် လက်ခံကျင့်သုံသသော ကျပန်သနည်သပညာမျာသနဟင့် ၎င်သ၏ခဌာသနာသချက်နဟင့်ပတ်သက်၍ Lisp ကို ဖော်ပဌခဌင်သသည် ထူသဆန်သပါသည်။ ဒါဟာ McCarthy တလေသနေပုံမျိုသတော့ မဟုတ်ပါဘူသ။ Lisp သည် Fortran ၏အမဟာသမျာသကိုပဌင်ရန် ဒီဇိုင်သထုတ်ထာသခဌင်သမဟုတ်ပေ။ ကဌိုသစာသခဌင်သ၏ ရလဒ်တစ်ခုအဖဌစ် ပို၍ထင်ရဟာသလာသည်။ တလက်ချက်မဟုမျာသကို axiomatize လုပ်ပါ။.

source: www.habr.com

မဟတ်ချက် Add