Програмчлалын үндсэн парадигмууд. Програмчлалын парадигмын тухай ойлголт Декларатив ба процедурын санах ой


Үнэлгээ: / 0
Дэлгэрэнгүй үзэх: 3084

Програмчлалын парадигмууд

Ямартай ч парадигм гэж юу вэ? Энэ бол хүрээлэн буй ертөнцийн үзэгдлийн талаархи тодорхой үзэл бодол, тэдэнтэй хийх боломжтой үйл ажиллагааны талаархи санаа гэж бид хэлж чадна. Програмчлалд парадигмыг ихэвчлэн хөтөлбөрийн ажлыг хэрхэн зохион байгуулах тухай ерөнхий ойлголт гэж ойлгодог.

Бусад зүйлсийн дотор удирдамж (бүтцийн), объект хандалтат ба тунхаглал (функциональ-логик) зэрэг програмчлалын парадигмууд байдаг. Олон хэл нь олон програмчлалын парадигмуудыг дэмждэг. Нөгөөтэйгүүр, зөвхөн нэг парадигмыг хэрэгжүүлэхэд чиглэсэн хэлүүд байдаг.

Бүтцийн програмчлал

Зарим төлөөлөгчид: Фортран, Паскаль, С.

Удирдамжийн хөтөлбөр нь алхам алхмаар хэрхэн үр дүнд хүрэхийг зааж өгдөг. Тиймээс ийм програмчлалыг ойлгоход маш хялбар байдаг.

Бүтэцлэгдсэн програмчлалын хувьд командын гүйцэтгэлийн дараалал нь оролтын өгөгдлөөс бүрэн хамаардаг.

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

Функциональ ба логик програмчлал

Функциональ хэлний төлөөлөгчид: Лист, Хаскелл.

Логик хэлний төлөөлөгч: Пролог.

Тунхаглалын хөтөлбөр нь зорилго болгон юунд хүрэхийг заасан (тунхагласан). Асуудлыг нарийн томъёолох нь чухал юм. Программист үүнийг шийдэх алгоритмыг заагаагүй байна.

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

Логик програмчлалд программуудыг математик логик томьёо хэлбэрээр илэрхийлдэг бөгөөд тэдгээрээс логик үр дагаврыг гаргах замаар асуудлын шийдэлд хүрдэг.

Объект хандалтат програмчлал

Объект хандалтат хэлний төлөөлөгчид: C++, Java, Python.

Хөтөлбөрт объект хэлбэрээр дүрслэгдсэн өгөгдөлд онцгой анхаарал хандуулдаг. Объектууд хоорондоо мессеж дамжуулах механизмыг ашиглан харилцан үйлчилдэг. Програмистын даалгавар бол объектуудыг хэрэгжүүлэх явдал бөгөөд ингэснээр тэдэнтэй харилцахдаа хүссэн үр дүнд хүрэх боломжтой болно.

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

OOP нь удамшил, полиморфизм, капсулжуулалт зэрэг ойлголтууд дээр суурилдаг.

Encapsulation нь объектын чухал бус нарийн ширийн зүйлийг нуусан гэж үздэг. Объект аливаа тушаалыг хүлээн авахдаа харьяалагдах ангидаа үндэслэн түүнийг хэрхэн боловсруулахаа “мэддэг”.

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

Програмчлалын парадигм нь програм бичих хэв маягийг тодорхойлдог санаа, үзэл баримтлалын багц юм.

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

Эхний зайлшгүй хэл нь машины кодууд байсан - компьютерийн төрөлх програмчлалын хэл. Эдгээр хэл дээр заавар нь маш энгийн байсан бөгөөд энэ нь компьютерийн ачааллыг бууруулсан боловч том хэмжээний програм бичихэд хүндрэл учруулдаг байв. 1954 онд анхны "хүний" програмчлалын хэл гарч ирэв - FORTRAN, дараа нь ALGOL, COBOL, BASIC, Pascal, C.

Императив програмчлалын нэг онцлог шинж чанар нь "сүйтгэх даалгавар" үйлдэлтэй хувьсагчтай байх явдал юм. Өөрөөр хэлбэл, А хувьсагч байсан, энэ нь X утгатай байсан. Алгоритм нь дараагийн алхамд А хувьсагчдад Y утгыг оноож өгөхийг заадаг.А-д байсан утга нь "үүрд мартагдах" болно.

Императив програмчлал нь орчин үеийн компьютер дээр гүйцэтгэх хурд маш чухал байдаг жижиг дэд даалгавруудыг хэрэгжүүлэхэд хамгийн тохиромжтой. Нэмж дурдахад, гадаад төхөөрөмжтэй ажиллах нь ихэвчлэн үйлдлүүдийг дараалан гүйцэтгэх ("цорго нээх, ус татах") хэлбэрээр тодорхойлогддог бөгөөд энэ нь эдгээр ажлыг зайлшгүй хэрэгжүүлэхэд тохиромжтой нэр дэвшигч болгодог.

Програмчлалын үндсийг заах императив парадигмын хүрээг сонгох нь эргэлзээгүй юм шиг санагддаг. Үүнд хэд хэдэн шалтгаан бий:

· императив парадигм нь хүний ​​мөн чанар, сэтгэн бодох хөгжлийн эхний үе шатанд алгоритмын тухай зөн совингийн үзэл баримтлалд хамгийн ойр байдаг (бага сургуульд аль хэдийн алгоритмчлалын элементүүдтэй хөгжлийн боловсролын эерэг туршлага байдаг);

· Захиргааны парадигмын хүрээнд програмчлал нь үндсэн сургуулийн ахлах ангийн сурагчдын ойрын хөгжлийн бүсэд багтдаг өргөн хүрээний даалгавруудад үр дүнтэй байдаг;

· Императив парадигм нь компьютерийн мөн чанар, түүний үйл ажиллагааны үндсэн зарчимд хамгийн ойр байдаг, учир нь орчин үеийн компьютерийн бүх нарийн төвөгтэй байдлыг үл харгалзан техник хангамжийн түвшинд үүнийг ямар нэгэн автомат машин (процессор + санах ой +) гэж үзэж болно. ...) төлөвийн хязгаарлагдмал багц (агуулгын) санах ойтой);

· Тунхаглалын програмчлалын парадигмын хүрээнд зөвхөн бүтээгдсэн програм хангамжийн бүтээгдэхүүний эзлэх хувь бага байна; Дүрмээр бол асуудлыг шийдвэрлэхдээ парадигмуудын хослолыг ашигладаг бөгөөд тэдгээрийн аль нэг нь зайлшгүй шаардлагатай байдаг;

· Императив парадигмыг ашиглан програм хангамжийн бүтээгдэхүүн боловсруулах боломжийг олгодог бие даасан программ хангамж болон бусад системд нэгтгэсэн дэд систем хэлбэрээр програмчлалын системийн өргөн сонголт;


· Төрөл бүрийн хэвлэл мэдээллийн хэрэгсэл, дэлхийн сүлжээн дэх цаасан болон цахим хэлбэрээр холбогдох програмчлалын системүүдийн талаархи өргөн хүрээний боловсрол, лавлагаа болон бусад хэвлэлүүд.

Сул тал: цэвэр хэлбэрээр энэ нь зөвхөн маш энгийн асуудлыг шийдвэрлэх боломжийг олгодог.

Үйл явдалд тулгуурласан програмчлал нь янз бүрийн үйл явдалд (хэрэглэгчийн үйлдэл) үзүүлэх хариу үйлдлийг заасан програмчлал юм. PMS-ийг императив парадигмын "удам" гэж үзэж болно. SUP нь 2 дэд ангилалтай:

1. Зэрэгцээ програмчлал нь программыг зэрэгцээ гүйцэтгэх боломжтой харилцах процессуудын багц хэлбэрээр илэрхийлдэг. Ийм программуудыг нэг процессор дээр (процесс бүрийн алхмуудыг ээлжлэн гүйцэтгэх) эсвэл хэд хэдэн процессор дээр гүйцэтгэж болно.

Зэрэгцээ үйл явцын системд үйл явц бүр үйл явдлыг боловсруулдаг. Үйл явдал нь бүхэл системийн хувьд ерөнхий эсвэл нэг буюу хэд хэдэн процессын хувьд хувь хүн байж болно. Жишээлбэл, хэрэглэгчийн график интерфейсийн элементүүд эсвэл аливаа бодит үйл явцыг загварчлах (жишээлбэл, замын хөдөлгөөний хяналт) -ийг ийм нэр томъёогоор тайлбарлах нь маш тохиромжтой, учир нь үйл явдлын тухай ойлголт нь ийм даалгаварт байгалийн шинж чанартай байдаг.

2.Объект хандалтат програмчлал нь программыг объектуудын багц болон тэдгээрийн харилцан үйлчлэл гэж үздэг програмчлалын технологи юм. Програмын объект бүр нь зарим ангийн жишээ юм; - Ангиуд нь эцэг эхийнхээ шинж чанарууд болон аргуудыг өвлөн авахын зэрэгцээ өөрийн гэсэн ангиллыг нэмж болно. Ангийн шатлал нь хэд хэдэн түвшний нарийвчилсан түвшинд шийдэж буй асуудлын мөн чанарыг загварчлах боломжийг олгодог бөгөөд дараа нь тодорхой дэд даалгаврыг шийдвэрлэхэд шаардагдах нарийвчлалын түвшинд тохирох ангиллыг ашиглах боломжийг олгодог.

Объектуудын дараах үндсэн шинж чанаруудыг тодруулах нь чухал юм.

1.) Нэг объект нь нөгөө рүү нь мессеж илгээх замаар л нөлөөлж чаддаг тул "харилцагч"-ын өөрийн өгөгдөлтэй ямар ч байдлаар шууд ажиллах боломжгүй тул тэдгээрийн дотоод уялдаа холбоог зөрчиж чадахгүй. Энэ шинж чанарыг (өгөгдөл нуух) ерөнхийд нь капсулжуулалт гэж нэрлэдэг.

2.) Объектууд зөвхөн мессеж солилцох замаар харилцан үйлчилдэг тул харилцан ярилцагч объектууд нь мессеж боловсруулагчийн хэрэгжилтийн талаар юу ч мэдэхгүй байж болно. Харилцаа нь зөвхөн мессеж/үйл явдлын хувьд тохиолддог бөгөөд энэ нь домэйнд холбогдоход хялбар байдаг. Энэ шинж чанарыг (харилцааны зөвхөн домэйны хувьд тайлбар) хийсвэрлэл гэж нэрлэдэг.

3.) Объектууд бие биедээ мессеж илгээх замаар харилцан үйлчилдэг. Тиймээс, хэрэв объектын харилцан үйлчлэлийн аль ч хувилбарт та дурын объектыг ижил мессежийг боловсруулах чадвартай өөр объектоор солих юм бол уг хувилбар хэрэгжих боломжтой болно. Энэ шинж чанарыг (объектыг ижил төстэй ангийн бүтэцтэй өөр объектоор солих чадварыг) полиморфизм гэж нэрлэдэг.

Орчин үеийн олон хэлүүд OOP-ийг өөр өөр түвшинд дэмждэг: Smalltalk, Ruby зэрэг цэвэр объект хандалтат хэлүүд нь объект хандалтат хөгжүүлэлтийн хэв маягийг дэмжих, бүр хэрэгжүүлэхэд зориулагдсан бөгөөд бусад програмчлалын хэв маягийг дэмждэггүй; - Java, C++, Python зэрэг объект хандалтат хэлүүд нь үндсэндээ OOP-ийг дэмжихэд зориулагдсан боловч процедурын програмчлалын элементүүдийг ашиглах боломжийг олгодог; - Түүхээс харахад процедурын хэлүүд, тухайлбал Perl болон Fortran 2002 зэрэг нь боловсронгуй болж, зарим OOP элементүүдийн дэмжлэгийг нэмсэн.

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

Тунхаглалын програмчлал нь императив програмчлалын эсрэг; эхнийх нь юу хийх ёстойг, хоёр дахь нь яг яаж хийхийг тайлбарласан.

Тунхаглалын програмчлалын хамгийн чухал төрөл нь функциональ ба логик (эсвэл харилцааны) програмчлал юм.

1.Функциональ програмчлал нь императив хандлагын өөр хувилбаруудын нэг юм. Энэ нь Сүмийн ламбдагийн тооцоолол дээр суурилдаг. Императив програмчлалын хувьд алгоритмууд нь дараалсан гүйцэтгэсэн үйлдлүүдийн тайлбар юм. "Одоогийн гүйцэтгэлийн алхам" (өөрөөр хэлбэл цаг хугацаа), "одоогийн төлөв" гэсэн ойлголт байдаг бөгөөд энэ хугацаанд өөрчлөгддөг.

Функциональ програмчлалд цаг хугацааны тухай ойлголт байдаггүй. Програмууд нь илэрхийлэл бөгөөд програмын гүйцэтгэл нь эдгээр илэрхийллийг үнэлэхээс бүрдэнэ.

Дэд илэрхийллийг үнэлэх дараалал нь хамаагүй тул функциональ програмчлалыг параллелизмыг дэмждэг платформ дээр байгалийн жамаар хэрэгжүүлж болно.

Бусад "зайлшгүй" програмчлалын загваруудын нэгэн адил функциональ програмчлалыг ихэвчлэн дараалсан үйлдлүүдийн хувьд томьёолоход хэцүү асуудлыг шийдвэрлэхэд ашигладаг. Хиймэл оюун ухаантай холбоотой бараг бүх ажил энэ ангилалд багтдаг. Тэдгээрийн дотроос дүрсийг таних, хэрэглэгчтэй байгалийн хэлээр харилцах, шинжээчдийн системийг хэрэгжүүлэх, автоматжуулсан теоремыг батлах, симболын тооцоолол зэрэг ажлуудыг дурдах нь зүйтэй. Эдгээр даалгаврууд нь уламжлалт хэрэглээний програмчлалаас хол байдаг тул компьютерийн шинжлэх ухааны хичээлийн хөтөлбөрт төдийлөн ач холбогдол өгдөггүй.

Логик програмчлал

Функциональ програмчлалын хувьд програмууд нь илэрхийлэл бөгөөд тэдгээрийн гүйцэтгэл нь утгыг тооцоолохоос бүрддэг. Логик програмчлалын хувьд програм нь онол (нэлээн хязгаарлагдмал хэлээр дүрслэгдсэн) бөгөөд нотлох шаардлагатай мэдэгдэл юм. Энэхүү мэдэгдлийн нотолгоо нь програмын гүйцэтгэлээс бүрдэнэ.

Логик програмчлал ба Пролог хэл нь байгалийн хэлний шинжилгээний чиглэлээр хийсэн судалгааны үр дүнд бий болсон. Дараа нь логик програмчлал нь хиймэл оюун ухааны бусад даалгавруудыг хэрэгжүүлэхэд адилхан үр дүнтэй болохыг олж мэдсэн.

Логик програмчлал нь байгалийн зэрэгцээ хэрэгжүүлэх боломжийг олгодог.

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

БОЛЖ БАЙНА УУ. Танилцуулга нь маш хөгжилтэй, гэхдээ та үүнийг уншдаггүй, тиймээс хэн нэгэн сонирхож байвал тайралтанд тавтай морилно уу!

Зайлшгүй програмчлал



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

Эдгээрт машины код, ассемблер хэл, Фортран гэх мэт өндөр түвшний эхэн үеийн хэлүүд багтсан.

Гол оноо:

Энэхүү парадигмд тооцооллыг программын төлөвийг алхам алхмаар өөрчилдөг заавар хэлбэрээр тайлбарласан болно.

Доод түвшний хэлэнд (ассемблер хэл гэх мэт) төлөв нь санах ой, бүртгэл, туг байж болох ба заавар нь зорилтот процессорын дэмждэг заавар байж болно.

Дээд түвшний хувьд (C гэх мэт) төлөв нь зөвхөн санах ой бөгөөд заавар нь илүү төвөгтэй байж болох бөгөөд ажиллах явцад санах ойг хуваарилж, задлахад хүргэдэг.

Маш өндөр түвшний (Python гэх мэт, хэрэв та үүнийг зайлшгүй програмчлах юм бол) төлөв нь зөвхөн хувьсагчаар хязгаарлагддаг бөгөөд командууд нь ассемблер хэл дээр хэдэн зуун мөр шаардагдах нарийн төвөгтэй үйлдлүүд байж болно.

Үндсэн ойлголтууд:

- Зааварчилгаа
-Төр

Үүсгэсэн ойлголтууд:

- Даалгавар
- Шилжилт
- Санах ой
- Индекс

Үндсэн байдлаар:
- Ассемблей хэлүүд
- Фортран
-Алгол
- Кобол
- Паскаль
- C
- C++
-Ада
Туслах хэрэгсэл болгон:
- Питон
- Руби
- Java
- C#
-PHP
- Хаскелл (монадуудаар)

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

Бүтцийн програмчлал



Бүтцийн програмчлал нь програмчлалын парадигм (мөн хөгжүүлэх арга зүй болгон ашигладаг) бөгөөд энэ нь програмчлалыг хөгжүүлэх анхны том алхам болсон юм.

Бүтцийн програмчлалыг үндэслэгч нь Э.Дейкстра, Н.Вирт зэрэг алдартай хүмүүс юм.

Энэ парадигмын анхдагч хэлүүд нь Фортран, Алгол, В байсан бөгөөд дараа нь Паскаль, С нар залгамжилсан.

Гол оноо:

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

Бүтэцлэгдсэн програмчлалд бид төлөв болон заавартай ажилладаг хэвээр байгаа боловч нийлмэл заавар (блок), салаа, давталтын заавар гэсэн ойлголтыг нэвтрүүлсэн.

Эдгээр энгийн өөрчлөлтийг хийснээр ихэнх тохиолдолд goto хэллэгийг арилгаж, кодыг хялбарчлах боломжтой.

Заримдаа goto нь кодыг уншихад хялбар болгодог тул өрсөлдөгчдийнх нь бүх мэдэгдлийг үл харгалзан өргөн хэрэглэгддэг.

Үндсэн ойлголтууд:

- Блок
- Дугуй
- Салбарлах

Энэ парадигмыг дэмждэг хэлүүд:

Үндсэн байдлаар:
- C
- Паскаль
- Үндсэн
Туслах хэрэгсэл болгон:
- C#
- Java
- Питон
- Руби
- JavaScript

Хэсэгчилсэн дэмжигдсэн:
- Зарим макро ассемблер (макро ашиглан)

Дахин хэлэхэд орчин үеийн ихэнх хэлүүд бүтцийн парадигмыг дэмждэг.

Процедурын програмчлал



Дахин хэлэхэд, програм хангамжийн өсөн нэмэгдэж буй нарийн төвөгтэй байдал нь програмистуудыг тооцооллыг тайлбарлах өөр арга замыг хайхад хүргэв.

Үнэн хэрэгтээ, програмчлалыг шинээр харах боломжийг бидэнд олгосон нэмэлт ойлголтууд дахин гарч ирэв.

Энэ үзэл баримтлал нь энэ удаад процедур байсан.

Үүний үр дүнд програм бичих шинэ арга зүй бий болсон бөгөөд энэ нь өнөөг хүртэл сайшаалтай байдаг - анхны асуудал нь жижиг хэсгүүдэд хуваагддаг (процедурууд) бөгөөд энэ нь бүх тодорхой процедурын шийдэл нь өчүүхэн болж хувирах хүртэл тохиолддог.

Гол оноо:

Процедур гэдэг нь бие даасан кодын хэсэг бөгөөд үүнийг нэг заавар болгон гүйцэтгэх боломжтой.

Орчин үеийн програмчлалд процедур нь олон гарах цэгтэй (С-тэй төстэй хэлээр буцах), олон оролтын цэгтэй (Python-д yield эсвэл C++-д статик локал хувьсагч ашиглах), аргументтай, гүйцэтгэлийн үр дүнд утгыг буцаана. тоо, параметрийн төрөл гэх мэт хэт ачаалалтай.

Үндсэн ойлголтууд:

- Процедур

Үүсгэсэн ойлголтууд:

- Сорилт
- Аргументууд
- Буцах
- Рекурс
- Хэт ачаалал

Энэ парадигмыг дэмждэг хэлүүд:

Үндсэн байдлаар:
- C
- C++
- Паскаль
- Объект Паскаль
Туслах хэрэгсэл болгон:
- C#
- Java
- Руби
- Питон
- JavaScript

Хэсэгчилсэн дэмжигдсэн:
- Эрт суурь

Эдгээр бүх хэлний хэд хэдэн нэвтрэх цэгийг зөвхөн Python дээр дэмждэг гэдгийг тэмдэглэх нь зүйтэй.

Модульчлагдсан програмчлал



Хөтөлбөрүүдийн өсөн нэмэгдэж буй нарийн төвөгтэй байдал нь хөгжүүлэгчид өөрсдийн кодыг хуваалцахад хүргэв. Энэ удаад журам хангалтгүй байсан бөгөөд энэ удаад шинэ үзэл баримтлалыг танилцуулав - модуль.

Урагшаа харахад модулиуд нь програм хангамжийн өсөн нэмэгдэж буй нарийн төвөгтэй байдлыг гайхалтай хурдаар агуулж чадахгүй болсон гэж би хэлэх болно, дараа нь багцууд (энэ нь модульчлагдсан програмчлал), ангиуд (энэ нь аль хэдийн OOP), загварууд (ерөнхий програмчлал) ) гарч ирэв.

Модульчлагдсан програмчлалын хэв маягаар тайлбарласан програм нь модулиудын багц юм. Дотор нь юу байгаа, ангиуд, императив код эсвэл цэвэр функцууд хамаагүй.

Модулиудын ачаар програмчлалд анх удаа ноцтой капсулжуулалт гарч ирэв - модулийн доторх аливаа объектыг ашиглах боломжтой, гэхдээ тэдгээрийг гадаад ертөнцөд харуулахгүй.

Гол оноо:

Модуль нь үйл ажиллагааны хувьд ижил төстэй бусад програмын нэгжүүдийг нэгтгэсэн програмын тусдаа нэртэй нэгж юм.

Жишээлбэл, List.mod файл нь List классыг агуулдаг
ба түүнтэй ажиллах функцууд - модуль.

Хэлбэр, тэгш өнцөгт, гурвалжин модулиудыг агуулсан геометрийн хавтас нь мөн модуль боловч зарим хэл нь модуль ба багцын ойлголтыг тусгаарладаг (ийм хэлээр багц нь модулиудын багц ба/эсвэл бусад багц юм. багц).

Модульд заасан байгууллагуудыг ашиглахын тулд тэдгээрийг импортлох (холбох) боломжтой.

Үндсэн ойлголтууд:

- Модуль
- Импорт

Үүсгэсэн ойлголтууд:

- Гялгар уут
- Бүрхүүл

Энэ парадигмыг дэмждэг хэлүүд:

Үндсэн байдлаар:
- Хаскелл
- Паскаль
- Питон
Туслах хэрэгсэл болгон:
- Java
- C#
- ActionScript 3

Хэсэгчилсэн дэмжигдсэн:
- C/C++

Зарим хэлүүд модулиудын хувьд тусдаа хийсвэрлэлүүдийг нэвтрүүлдэг бол зарим нь модулиудыг хэрэгжүүлэхийн тулд толгой файлууд (C/C++), нэрийн орон зай, статик классууд болон/эсвэл динамик холбоосын сангуудыг ашиглаж болно.

Дүгнэлтийн оронд

Энэ нийтлэлд би одоо алдартай объект хандалтат, ерөнхий болон функциональ програмчлалын талаар тайлбарлаагүй. Зүгээр л би энэ талаар өөрийн гэсэн, нэлээд радикал үзэл бодолтой байсан учраас би holivar эхлүүлэхийг хүсээгүй. Ядаж одоохондоо. Хэрэв сэдэв нь нийгэмд хэрэгтэй бол би эдгээр парадигмуудын үндсийг нарийвчлан тодорхойлсон хэд хэдэн нийтлэл бичихээр төлөвлөж байна.

Мөн би автомат, хэрэглүүр, aspect/agent/component-oriented програмчлал гэх мэт чамин парадигмуудын талаар юу ч бичээгүй. Би нийтлэлийг маш том болгохыг хүсээгүй бөгөөд хэрэв сэдэв эрэлт хэрэгцээтэй байгаа бол би эдгээр парадигмуудын талаар илүү дэлгэрэнгүй, код жишээн дээр бичих болно.

(АЛГОРИТМЖУУЛАЛТ БА ПРОГРАМЧЛАЛЫН ҮНДЭС)
  • Програмчлалын парадигм ба технологи
    1-р бүлгийн зорилго.“Програмчлалын парадигм”, “Програмчлалын технологи” гэсэн ойлголтуудыг судлах. 2. Орчин үеийн програм хангамж хөгжүүлэх технологийн талаар ерөнхий ойлголттой болно. 3. Бүтцийн хөтөлбөрийг бий болгох үе шатуудыг судлах. 4. Програм хангамж хөгжүүлэлтийн амьдралын мөчлөгийн загваруудтай танилцах...
  • SE програмчлалын парадигмууд
    SWEBOK нь хэд хэдэн програмчлалын парадигмуудыг агуулдаг Харна уу: Lavrishcheva E. M. Програм хангамжийн инженерчлэл дэх угсралтын төрлийн програмчлалын парадигмууд // UKRProg-2014. № 2-3. хуудас 121-133. . Түүний програмчлалын сургалтанд дараахь зүйлс орно. процедурын програмчлал(CS1011 “Програмчлалын үндэс” хичээл),...
    (ПРОГРАММЫН ИНЖЕНЕР, ТЕХНОЛОГИ ПРОГРАМЧЛАХ ЦОГЦ СИСТЕМ)
  • ПРОГРАМЧЛАХ ПАРАДИГМ
    Модульчлагдсан програмчлал. ҮНДСЭН ОЙЛГОЛТОрчин үеийн програмчлалын гол асуудлуудын нэг бол модуль ба бүрэлдэхүүн хэсгүүдийг дахин ашиглах явдал юм (KPI). Эдгээр нь шинэ, илүү төвөгтэй програм хангамжийг хөгжүүлэхэд ашиглахад тохиромжтой програмууд, дэд програмууд, алгоритмууд, техникийн үзүүлэлтүүд гэх мэт байж болно....
    (ПРОГРАМЫН ИНЖЕНЕР. ПАРАДИГМ, ТЕХНОЛОГИ, КЕЙСИЙН ХЭРЭГСЭЛ)
  • Процедурын парадигм
    Процедурын парадигм нь цаг хугацааны хувьд хамгийн түрүүнд байсан бөгөөд удаан хугацааны туршид ноёрхсон. Одоогийн байдлаар энэ нь програм хангамж хөгжүүлэх зах зээлийн тал орчим хувийг эзэлсээр байгаа хэдий ч объект хандалтат парадигм руу аажмаар шилжиж байна. Програм хангамж хөгжүүлэлтийн бүх түвшинд хэрэглэгдэж байна...
    (АЛГОРИТМЖУУЛАЛТ БА ПРОГРАМЧЛАЛ)
  • Мэдээллийн болон процедурын санах ой
    Бусдаас үл хамааран санах ойн функциональ зохион байгуулалтын өөр нэг бие даасан арга бол түүнийг хуваах явдал юм тунхаглалТэгээд процедурын.Санах ойг зохион байгуулах эдгээр хоёр арга нь бүрэн ойлгомжтой функциональ үндэслэлтэй байдаг. Тунхаглах санах ойн нэг хэлбэр нь оюун ухааныг дэмжих зорилготой юм...
    (Сэтгэл судлал, сурган хүмүүжүүлэх ухаан)
  • Хэрэглээний, онолын болон функциональ програмчлалын парадигмуудыг багтаасан компьютерийн програмчлалын эриний эхэн үед бий болсон програмчлалын ерөнхий парадигмууд нь хамгийн тогтвортой байдаг.

    Хэрэглээний програмчлал нь компьютер гарч ирэхээс өмнө судалж байсан тоон боловсруулалтын тооцооллын процесс, мэдээллийн компьютержуулалтыг тусгасан асуудлын чиг баримжаатай байдаг. Энд л тодорхой практик үр дүн хурдан гарч ирэв. Мэдээжийн хэрэг, ийм газруудад програмчлал нь кодчилолоос тийм ч их ялгаатай биш бөгөөд дүрмээр бол үйлдлийг илэрхийлэх операторын хэв маяг хангалттай байдаг. Хэрэглээний програмчлалын практикт батлагдсан загвар, процедурын номын санд итгэж, эрсдэлтэй туршилтаас зайлсхийх нь заншилтай байдаг. Шинжлэх ухааны тооцооллын үнэн зөв, тогтвортой байдлыг үнэлдэг. Хэрэглээний програмчлалын туршлагатай Фортран хэл аажмаар энэ чиглэлээр Паскаль, Си, суперкомпьютерууд дээр Sisal зэрэг зэрэгцээ програмчлалын хэлүүдэд бага зэрэг ашиг тусаа өгч эхэлсэн.

    Онолын програмчлал нь програмчлал, компьютерийн шинжлэх ухааны чиглэлээр хийсэн шинжлэх ухааны туршилтуудын үр дүнг харьцуулах зорилготой нийтлэлийн чиг баримжааг баримталдаг. Програмчлал нь албан ёсны загвараа илэрхийлэх, тэдгээрийн ач холбогдол, үндсэн мөн чанарыг харуулахыг хичээдэг. Эдгээр загварууд нь холбогдох математикийн үзэл баримтлалын үндсэн шинж чанаруудыг өвлөн авч, компьютерийн шинжлэх ухаанд алгоритмын арга гэж өөрсдийгөө тодорхойлсон. Хөтөлбөрийн диаграмм, текст дэх бүтээн байгуулалтыг нотлох хүсэл эрмэлзэл, тэдгээрийн үр нөлөө, үнэмшилтэй, зөв, зөв, бусад албан ёсны харилцааг үнэлэх нь бүтэцтэй програмчлалын үндэс суурь болж, хөтөлбөр боловсруулах явцад найдвартай байдалд хүрэх бусад аргууд, жишээлбэл, чадварлаг програмчлал юм. . Програмчлалын онолын ажлын материал болж байсан Алгол, Паскалийн стандарт дэд бүлгүүдийг ML, Миранда, Схем, Хаскелл болон бусад туршилт хийхэд тохиромжтой хэлээр сольсон. Одоо тэд C болон Java хэл дээрх шинэлэг зүйлүүдээр нэгдэж байна.

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

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

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

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

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

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

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

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

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

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

    Хувь хүний ​​​​мэдээллийн системийн бие даасан дизайны эргономик хэв маяг бүхий дасан зохицох арга нь компьютерийн мэргэжилтнүүдэд хүний ​​хүчин зүйлд мэдрэмтгий бодит цагийн технологийн процессыг чадварлаг програмчлах, зохион байгуулах, дэмжих боломжийг олгодог. Програмчлалын парадигмын хөгжлийн чиглэл нь мэдээллийн системийг хөгжүүлэх, ашиглах сонирхолтой хүмүүсийн хүрээний өөрчлөлтийг харуулж байна. Үйл явдал, үл хамаарах зүйл, алдаа, боломж, барилга байгууламжийн шатлал ба ортогональ байдал, экстраполяци ба хөтөлбөрийн өсөлтийн цэг, чанарын хэмжилт гэх мэт програмчлалын практикт зориулсан олон чухал ойлголтууд. хийсвэрлэх, албан ёсны болгох хангалттай түвшинд хүрч чадаагүй. Энэ нь бидэнд програмчлалын парадигмын хөгжлийг урьдчилан таамаглах, ирээдүйн бүрэлдэхүүн хэсэг програмчлалын боловсролын материалыг сонгох боломжийг олгодог. Хэрэв дахин ашиглах боломжтой эд ангиудыг сонгох уламжлалт арга хэрэгсэл, аргууд нь хамгийн их ажиллагаатай хамгийн бага холболтын оновчтой сонголт гэж ойлгогддог модулийн шалгуурт нийцсэн бол орчин үеийн элементийн суурь нь энгийн үйлдлийг гүйцэтгэдэг олон контакттай нэгжүүдийг ажиллуулах боломжийг олгодог. Гэхдээ бид энэ бүх төрлийн болон програмчлалын парадигмуудтай Википедиа хүртэл танилцаж болно. Одоогийн байдлаар янз бүрийн чиглэлд програмчлалын хөгжил маш өргөн хүрээтэй байна.

    Редакторын сонголт
    , Афганистан, Тажикистан, Киргизстан, Казахстан, Туркменстан, Орос, Турк, Хятад гэх мэт Хуваарилалт...

    Жоржиа бол зочломтгой, найрсаг хүмүүс бөгөөд үргэлж туслах болно. Энэ нарлаг оронд ирсэн болохоор та...

    Үнэлгээ: / 0 Дэлгэрэнгүй үзэх: 3084 Програмчлалын парадигмууд Ер нь парадигм гэж юу вэ? Та энэ гэж хэлж болно ...

    Армян хэл () нь ихэвчлэн тусдаа бүлэгт ангилагддаг Энэтхэг-Европ хэл бөгөөд Грек, Фриги хэлтэй бага зэрэг нийлдэг....
    ГАДЕС Тэнгэрийн эзэн Зевсийн ах, тэнгисийн захирагч Посейдоны ах Кронусын гурван хүүгийн нэг нь Плутон ("эд баялаг", өөрөөр хэлбэл....
    Орчин үеийн хүмүүсийн краниометрийн (өөрөөр хэлбэл гавлын ясны хэмжилттэй холбоотой) үзүүлэлтүүдийн шинжилгээ нь амьд бүх...
    Би зочилж, Украины "дэлхийн анхны" цыган цагаан толгойг өөрийн нүдээр харсан. Миний дуртай номын жагсаалтын эхний байрыг...
    Хүн бүр амьдралдаа дор хаяж нэг удаа гэм буруугийн мэдрэмжийг мэдэрч байсан. Шалтгаан нь янз бүрийн шалтгаан байж болно. Энэ бүхэн ялангуяа үүнээс хамаарна ...
    Тэрээр Тунгус голын эрэг дээр тоглож байхдаа стеарин дүүргэсэн шүдэнзний хайрцаг, дотор нь цаас байсан, харанхуйлсан...