Функциональ програмчлал ба императив програмчлалын ялгаа

Агуулгын хүснэгт:

Функциональ програмчлал ба императив програмчлалын ялгаа
Функциональ програмчлал ба императив програмчлалын ялгаа

Видео: Функциональ програмчлал ба императив програмчлалын ялгаа

Видео: Функциональ програмчлал ба императив програмчлалын ялгаа
Видео: MJC Engineering Kata. Забавы инженеров - помогаем продать кроссовки. 2024, Арваннэгдүгээр
Anonim

Гол ялгаа – Функционал програмчлал ба Зайлшгүй програмчлал

Функциональ програмчлал ба императив програмчлалын гол ялгаа нь функциональ програмчлал нь тооцооллыг математик функц гэж үзэж, төлөв болон хувирах өгөгдлийг өөрчлөхөөс зайлсхийдэг бол императив програмчлал нь програмын төлөвийг өөрчилдөг хэллэгүүдийг ашигладаг.

Програмчлалын парадигм нь компьютерийн программын бүтэц, элементүүдийг бүтээх хэв маягийг өгдөг. Програмчлалын парадигмууд нь програмчлалын хэлийг шинж чанарт нь үндэслэн ангилахад тусалдаг. Програмчлалын хэл нь илүү олон парадигмд нөлөөлж болно. Объект хандалтат парадигмын хувьд програм нь объектуудыг ашиглан бүтэцлэгдсэн байдаг ба объектууд нь аргуудыг ашиглан мессеж дамжуулдаг. Логик програмчлал нь тооцооллыг зөвхөн математик логикоор илэрхийлж болно. Өөр хоёр програмчлалын парадигм бол функциональ програмчлал ба императив програмчлал юм. Функциональ програмчлал нь тооцооллыг математик функцүүдийн үнэлгээ болгон илэрхийлэх боломжийг олгодог. Императив програмчлал нь санах ойн төлөвийг тодорхой өөрчлөх мэдэгдлүүдийг өгдөг. Энэ нийтлэлд функциональ програмчлал ба императив програмчлалын ялгааг авч үзэх болно.

Функциональ програмчлал гэж юу вэ?

Функциональ програмчлал нь Математик дээр суурилдаг. Функциональ програмчлалын гол зарчим бол бүх тооцоолол нь тусдаа математик функцүүдийн нэгдэл гэж тооцогддог. Математик функц нь оролтыг гаралттай харьцуулдаг. 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;

}

Imperative програмчлалыг сурах, ойлгох, дибаг хийхэд хялбар. Төлөв хувьсагчийг ашигладаг тул програмын төлөвийг олоход хялбар байдаг. Зарим сул тал нь кодыг уртасгаж, өргөтгөх боломжийг багасгаж чаддаг.

Функциональ програмчлал ба императив програмчлалын хооронд ямар төстэй зүйл байдаг вэ?

Функциональ програмчлал ба Императив програмчлал хоёулаа програмчлалын парадигмууд юм

Функциональ програмчлал ба императив програмчлалын хооронд ямар ялгаа байдаг вэ?

Функционал ба Зайлшгүй програмчлал

Функциональ програмчлал нь тооцооллыг математик функцүүдийн үнэлгээ гэж үздэг, төлөв болон хувирдаг өгөгдлийг өөрчлөхөөс зайлсхийдэг програмчлалын парадигм юм. Императив програмчлал нь програмын төлөвийг өөрчилдөг мэдэгдлүүдийг ашигладаг програмчлалын парадигм юм.
Бүтэц
Функциональ програмчлал нь функцийн дуудлага болон дээд зэрэглэлийн функцуудыг агуулдаг. Императив програмчлалд if, else, while, for циклүүд, функцууд, ангиуд болон объектуудыг агуулна.
Програмчлалын хэл
Scala, Haskell болон Lisp нь функциональ програмчлалын хэл юм. C, C++, Java бол зайлшгүй шаардлагатай програмчлалын хэл юм.
Төвлөрөл
Функциональ програмчлал нь эцсийн үр дүнд төвлөрдөг. Императив програмчлал нь програм хэрхэн ажилладагийг тайлбарлахад чиглэдэг.
Энгийн
Функциональ програмчлал хэцүү. Заавал програмчлах нь илүү хялбар.

Хураангуй – Функциональ програмчлал ба Зайлшгүй програмчлал

Програмчлалын парадигм нь компьютерийн программын бүтэц, элементүүдийг бүтээх хэв маягийг өгдөг. Функциональ програмчлал ба Императив програмчлал нь эдгээрийн хоёр юм. Функциональ програмчлал ба императив програмчлалын ялгаа нь функциональ програмчлал нь тооцооллыг математик функц гэж үзэж, төлөв болон хувирах өгөгдлийг өөрчлөхөөс зайлсхийдэг бол императив програмчлал нь програмын төлөвийг өөрчилдөг хэллэгүүдийг ашигладагт оршино.

Зөвлөмж болгож буй: