Негизги айырмасы – Функционалдык программалоо менен Императивдик программалоо
Функционалдык программалоо менен императивдик программалоонун негизги айырмасы функционалдык программалоо эсептөөлөрдү математикалык функциялар катары карап, абалды жана өзгөрүлүүчү маалыматтарды өзгөртүүдөн качат, ал эми императивдик программалоодо программанын абалын өзгөрткөн операторлор колдонулат.
Программалоо парадигмасы компьютердик программанын структурасын жана элементтерин куруу стилин камсыз кылат. Программалоо парадигмалары программалоо тилдерин өзгөчөлүктөрүнө жараша классификациялоого жардам берет. Программалоо тили көбүрөөк парадигмаларга таасир этиши мүмкүн. Объектке багытталган парадигмада программа объекттердин жардамы менен түзүлөт, ал эми объекттер билдирүүлөрдү методдор аркылуу өткөрүп беришет. Логикалык программалоо эсептөөнү математикалык логика менен гана билдире алат. Дагы эки программалоо парадигмасы - функционалдык программалоо жана императивдик программалоо. Функционалдык программалоо математикалык функцияларды баалоо катары эсептөөлөрдү туюндурууга мүмкүндүк берет. Императивдик программалоо эс тутумдун абалын ачыктан-ачык өзгөрткөн билдирүүлөрдү берет. Бул макалада функционалдык программалоо менен императивдик программалоонун ортосундагы айырма талкууланат.
Функционалдык программалоо деген эмне?
Функционалдык программалоо математикага негизделген. Функционалдык программалоонун негизги принциби бардык эсептөөлөр өзүнчө математикалык функциялардын жыйындысы катары каралат. Математикалык функция киргизүүлөрдү чыгууларга карталайт. f(x)=xx деп аталган функция бар деп ойлойлу. x мааниси 1 чыгаруу 1 менен салыштырылган. x мааниси 2 чыгаруу 4 менен салыштырылган.x мааниси 3 чыгаруу 9 менен салыштырылган жана башкалар.
01-сүрөт: Функционалдык программалоо тилинин мисалы – Хаскелл
Функционалдык программалоодо үлгүлөр каралат. Функционалдык программалоо тилдери Хаскелл, сандардын суммасын табуу үчүн төмөнкү ыкманы колдонот.
Сумма функциясы бүтүн санга ээ жана натыйжа да бүтүн сан болот. Аны сумма катары жазса болот: [int] -> int. Төмөнкү схемалар боюнча жыйынтык чыгарса болот.
sum[n]=n, бир сандын суммасы сандын өзү.
Эгерде сандар тизмеси болсо, аны төмөнкүчө жазса болот. n биринчи санды, ал эми ns башка сандарды билдирет
суммасы (n, ns)=n + ns суммасы.
3, 4, 5 болгон үч сандын суммасын табуу үчүн жогорудагы үлгүлөрдү колдонсо болот.
3 + сумма [4, 5]
3 + (4 + сумма [5])
3+ 4 + 5=12
Функция же туюнтма кандайдыр бир абалды өзүнүн алкагынан тышкары өзгөртсө же кайтаруучу мааниден тышкары анын чакыруучу функциялары менен байкала турган өз ара аракеттесе, терс таасирлери бар деп айтылат. Функционалдык программалоо бул терс таасирлерди азайтат. Күйдүн өзгөрүшү функциянын кириштеринен көз каранды эмес. Бул программанын жүрүм-турумун түшүнүүдө пайдалуу. Функционалдык программалоонун бир кемчилиги императивдик программалоого салыштырмалуу функционалдык программалоону үйрөнүү кыйыныраак.
Императивдик программалоо деген эмне?
Императивдик программалоо – бул программанын абалын өзгөртүүчү билдирүүлөрдү колдонгон программалоо парадигмасы. Ал программанын кантип иштээрин сүрөттөөгө багытталган. Java, C жана C сыяктуу программалоо тилдери императивдик программалоо тилдери болуп саналат. Ал эмне кылуу керектиги боюнча кадам-кадам жол-жобосун камсыз кылат. Императивдик программалоо тилдеринде if, else, while, for циклдери, класстар, объекттер жана функциялар сыяктуу структуралар камтылган.
02-сүрөт: Императивдик программалоо тилинин мисалы – Java
Он сандын суммасын Java тилинде төмөнкүдөй тапса болот. Ар бир итерацияда i мааниси суммага кошулуп, сумма өзгөрмөсүнө дайындалат. Ар бир итерацияда сумманын мааниси мурда эсептелген суммага кошула берет.
int сумма=0;
үчүн (int i=0; i<=10; i++) {
сумма=сумма + i;
}
Императивдик программалоону үйрөнүү, түшүнүү жана мүчүлүштүктөрдү оңдоо оңой. Мамлекеттик өзгөрмөлөрдү колдонуунун аркасында программанын абалын табуу оңой. Кээ бир кемчиликтери: ал кодду узун кылып, масштабдуулугун азайтышы мүмкүн.
Функционалдык программалоо менен императивдик программалоонун кандай окшоштугу бар?
Функционалдык программалоо да, императивдик программалоо да программалоо парадигмасы
Функционалдык программалоо менен императивдик программалоонун ортосунда кандай айырма бар?
Функционалдык жана Императивдик программалоо |
|
Функционалдык программалоо – бул эсептөөнү математикалык функцияларды баалоо катары караган жана абалды жана өзгөрүлүүчү маалыматтарды өзгөртүүдөн качкан программалоо парадигмасы. | Императивдик программалоо – бул программанын абалын өзгөртүүчү билдирүүлөрдү колдонгон программалоо парадигмасы. |
Структуралар | |
Функционалдык программалоо функциялык чакырууларды жана жогорку даражадагы функцияларды камтыйт. | Императивдик программалоо if, else, while, for циклдерин, функцияларды, класстарды жана объекттерди камтыйт. |
Программалоо тилдери | |
Scala, Haskell жана Lisp - функционалдык программалоо тилдери. | C, C++, Java - императив программалоо тилдери. |
Фокус | |
Функционалдык программалоо акыркы натыйжага багытталган. | Императивдик программалоо программанын иштешин сүрөттөөгө багытталган. |
Жөнөкөйлүк | |
Функционалдык программалоо кыйын. | Императивдик программалоо оңой. |
Кыскача маалымат – Функционалдык программалоо жана Императивдик программалоо
Программалоо парадигмасы компьютердик программанын структурасын жана элементтерин куруу стилин камсыз кылат. Функционалдык программалоо жана императивдик программалоо алардын экөөсү. Функционалдык программалоо менен императивдик программалоонун айырмасы функционалдык программалоо эсептөөлөрдү математикалык функциялар катары карап, абалды жана өзгөрүлүүчү маалыматтарды өзгөртүүдөн качат, ал эми императивдик программалоодо программанын абалын өзгөрткөн операторлор колдонулат.