C, FORTRAN, Pascall зэрэг уламжлалт програмчлалын хэл нь процедурын програмчлал дээр суурилдаг. Энэхүү програмчлалын парадигм нь процедурын дуудлагуудыг ашигладаг бөгөөд процедур бүр (жишээ нь: функц эсвэл дэд программ) нь дагаж мөрдөх тооцооллын багц юм. Энэ нь хүртээмжтэй бөгөөд ойлгоход хялбар боловч код уртасч эсвэл илүү төвөгтэй болох үед нэг функцэд өөрчлөлт оруулах нь эргээд хайхад толгойны өвчин болж болзошгүй алдаануудыг үүсгэдэг. Энэхүү спагетти кодоос зайлсхийхийн тулд компьютерийн архитекторууд харьцангуй шинэ програмчлалын хоёр парадигмыг боловсруулсан: объект хандалтат програмчлал (OOP) ба функциональ програмчлал.
Парадигм бүр нь кодын бүтэцтэй холбоотой маш өөр арга барилыг ашигладаг. Энэ нийтлэлд бид програмчлалын парадигм бүрийг яг юу болох, юунд ихэвчлэн ашигладаг болохыг задлах болно. Эцсийн эцэст та өөрийн гэсэн үзэл бодлыг бий болгож эхэлнэ гэж найдаж байна. Эхэлцгээе!
Функциональ програмчлал гэж юу вэ?
Функциональ програмчлал нь процедурын програмчлалтай адил функцүүдээс бүрдсэн програм хангамжийг бүтээхэд төвлөрдөг; Гэсэн хэдий ч нарийн ялгаа байдаг. Доорх функциональ програмчлалын үндсэн ойлголтуудын талаар ярилцах замаар бид эдгээр ялгааг тодруулж байна.
Нэгдүгээр зэрэглэлийн иргэд
Функцуудыг команд гэж үздэг. Командууд нь програмчлалын хэлний хамгийн энгийн элемент болдог. Тиймээс функц нь дараахь байж болно.
хувьсагчид хадгалагданааргумент болгон дамжуулсан функцээс буцаж ирсэн Тэд ийм чадвартай тул чиг үүргийг нэгдүгээр зэрэглэлийн иргэд гэж нэрлэдэг. Нэгдүгээр зэрэглэлийн иргэн гэдэг нэр томьёо нь ерөнхийдөө боломжтой бусад бүх үйл ажиллагааг дэмждэг элементийг үндсэндээ тэмдэглэдэг.
Цэвэр функцууд
Функциональ програмчлалын зорилго нь боломжтой бол цэвэр функцүүдийг бичих явдал юм.
Цэвэр функц нь програмын дэлхийн төлөвийг өөрчилдөггүй тул ямар ч гаж нөлөөгүй гэж үздэг. Үүний оронд түүний буцаах утга нь зөвхөн оролтын параметрүүд дээр суурилдаг.
Цэвэр функцууд нь хөрвүүлэгчийн олон тооны оновчлолыг идэвхжүүлж, програмыг гүйцэтгэх хугацааг мэдэгдэхүйц багасгахад хүргэдэг. Цаашилбал, цэвэр функцууд нь нэгжийг шалгахад тохиромжтой. Бид кодын хаана ашиглах талаар санаа зовохгүйгээр цэвэр функцийг тусад нь нэгжээр шалгаж болно.
Дээд эрэмбийн функцууд ба рекурс
Функциональ програмчлалд for, while гэх мэт давтагдах давталтын бүтцийн оронд бид дээд эрэмбийн функцууд болон рекурсив давталтын сүүл дуудлагуудыг ашигладаг.
Дээд эрэмбийн функц нь функцийг оролт болгон авч, оролтын функц дээр үйлдэл хийж, дараа нь функцийг буцаана.
Сүүл дуудлага нь функцийн төгсгөлд байгаа функцийн дуудлагыг хэлнэ. Функц өөрийгөө дуудах үед сүүлний дуудлага нь рекурсив давталт үүсгэж болзошгүй. Олон хөрвүүлэгчид сүүл дуудлагын оновчлолыг (сүүлийн дуудлагыг арилгах гэх мэт) гүйцэтгэдэг.
Ердийн команд гогцооноос рекурсийг илүүд үзэх гол шалтгаанууд нь:
кодын энгийн байдал
кодыг илүү бат бөх болгохын тулд хувирах объектуудаас зайлсхийх
Өөрчлөгдөхгүй байдал
Хувьсах чадвар нь хувьсагчид өгөгдөл хуваарилагдсаны дараа түүний байнгын байдлыг хэлнэ.
Функциональ програмчлалд хувьсагчдад оноогдсон утгыг өөрчлөх боломжгүй; утгыг өөрчлөх цорын ганц арга бол шинэ хувьсагч үүсгэх явдал юм. Энэ нь функциональ програмчлалд цэвэр функцүүдийг ашиглах боломжийг олгодог хувиршгүй байдал юм. Эдгээр функцууд нь орцуудаа өөрчлөхгүй бөгөөд үр дүнд хүрэхийн тулд зөвхөн оролтод тулгуурладаг. Ийм байдлаар функциональ програмчлал нь математиктай төстэй юм. Функциональ програмчлалыг Хаскелл хэлээр дамжуулан компьютерийн шинжлэх ухааны академийн орчинд хүртэл бүтээсэн.
Дүгнэж хэлэхэд, функциональ програмчлал нь хяналтын урсгалыг заагаагүй бол програмын юу хийдгийг харуулдаг тунхаглалын програмчлалын загвар юм. Энэ нь цэвэр функц, хувиршгүй хувьсагч, сүүл дуудлагын рекурсийг ашигладаг. Үүний үр дүнд ойлгох, дибаг хийх, нэгжийг шалгахад хялбар код бий болно. Цаашилбал, функциональ програмчлал нь програмын гүйцэтгэлийн хурдыг нэмэгдүүлэх, санах ойн хэрэгцээг багасгах зорилгоор олон тооны хөрвүүлэгчийг оновчтой болгох боломжийг олгодог.
def sum_numbers(numbers):
return sum(numbers)
# Example usage:
my_numbers = [1, 2, 3, 4, 5]
total = sum_numbers(my_numbers)
print(total) # Output: 15
Объект хандалтат програмчлал гэж юу вэ?
Функциональ програмчлалаас ялгаатай нь объект хандалтат програмчлал (OOP) нь зайлшгүй шаардлагатай парадигм юм. Энэ нь тус код нь алхам алхмаар программ хэрхэн үр дүнд хүрэх ёстойг тайлбарласан гэсэн үг юм. Эдгээр мэдэгдэл нь програмын төлөвийг журмын дагуу өөрчилдөг.
Функциональ програмчлалаас ялгаатай нь объект хандалтат програмчлал (OOP) нь зайлшгүй шаардлагатай парадигм юм. Энэ нь тус код нь алхам алхмаар программ хэрхэн үр дүнд хүрэх ёстойг тайлбарласан гэсэн үг юм. Эдгээр мэдэгдэл нь програмын төлөвийг журмын дагуу өөрчилдөг.
OOP дахь төлөв гэдэг нэр томьёо нь аливаа багц утгуудыг мөн хөтөлбөрийн явцад тэдгээрт хийсэн өөрчлөлтийг хэлнэ.
Объект хандалтат програмчлал нь холбогдох функцууд болон тэдгээрийн хувьсагчдыг объект болгон бүлэглэдэг. Объектод функцуудыг аргууд, хувьсагчдыг шинж чанарууд гэж нэрлэдэг.
Жишээлбэл, энэ зураг нь OOP нь автомашиныг шинж чанар, аргуудын бүлэг болгон хэрхэн илэрхийлж болохыг харуулж байна.
Объект хандалтат програмчлалын дөрвөн тулгуур
Ярилцлагын үеэр таны харж болох нийтлэг асуулт бол OOP-ийн дөрвөн тулгуурыг тодорхойлох явдал юм. Дөрвөн тулгуур нь капсул, хийсвэрлэл, удамшил, полиморфизм юм. Объект хандалтат програмчлалыг судлахдаа эдгээр зарчмуудыг таних нь чухал бөгөөд тэдгээр нь бүгд хоорондоо холбоотой байдаг.
Encapsulation: Холбогдох хувьсагч, функцийг объект болгон бүлэглэх үйлдэл. Объект үүсгэх нь анги гэж нэрлэгддэг зураг төсөл эсвэл загвар дээр суурилдаг.
Функц болон хувьсагчдыг бүлэглэх нь хувьсагчдыг объектын нэг хэсэг болгон нэгтгэсэн тул функцийг цөөн эсвэл огт параметргүйгээр дуудах боломжийг олгодог.
Хийсвэрлэл: объектын зарим шинж чанар, аргуудыг гадны ажиглалтаас нуух.
Тодорхой параметрүүд болон функцуудыг объектод хязгаарлах нь тухайн ангийн хийсвэрлэсэн гишүүдэд ирээдүйд хийх аливаа өөрчлөлт бусад ангиудад нөлөөлөхгүй гэдгийг баталгаажуулдаг. Ингэснээр програмын өргөтгөл, сайжруулалтыг хөнгөвчлөх болно.
Өв залгамжлал: объект нь өөр объектын зарим шинж чанар, аргуудыг өвлөн авах боломжтой.
Java хэл дээр энэ өв залгамжлалыг өргөтгөл гэсэн түлхүүр үгээр тэмдэглэдэг. Өөр анги нэмэгдэж байгаа эх анги нь супер анги эсвэл үндсэн анги гэж нэрлэгддэг. Жишээлбэл, Тоёота, Форд ангиуд нь Машины ангиллын өргөтгөл байж болно. Харин Форд Мустанг бол Форд ангийн өргөтгөл юм. Энэ тохиолдолд Тоёота болон Форд хоёрын нийтлэг кодыг тэдний супер ангиллын машинд нэг удаа бичиж болно.
Тиймээс одоо байгаа шинж чанар, аргуудыг өвлөн авч, тэдгээрт шинэ боломжуудыг нэмж оруулах нь кодын илүүдлийг багасгаж, дахин ашиглах боломжийг нэмэгдүүлдэг.
Полиморфизм: шууд утгаараа “олон хэлбэр” гэсэн утгатай бөгөөд ижил функцэд янз бүрийн байдлаар хариу үйлдэл үзүүлдэг объектуудыг хэлнэ.
Полиморфизм нь тухайн объектын бусад объектуудтай харилцах харилцаа, дээд ангийн гишүүдийг түүний үүсмэл ангиудад хэрхэн өргөжүүлэхэд суурилдаг. Энэ нь дахин илүүдлийг багасгаж, дахин ашиглах чадварыг нэмэгдүүлдэг. Полиморфизм нь нарийн төвөгтэй ойлголт юм; Хэрэв та илүү ихийг мэдэхийг сонирхож байгаа бол бид таныг Java хэл дээр Объект хандалтат програмчлалыг сурах хичээлийг үзэхийг зөвлөж байна.
OOP-ийн тулгуур багана бүр өөрийн гэсэн ач холбогдолтой боловч тулгуур багана нь бие биенээсээ хамааралтай байдаг. Encapsulation нь хийсвэрлэл болон өв залгамжлалыг боломжтой болгоход зайлшгүй шаардлагатай шинж чанар юм. Нэмж дурдахад полиморфизм нь удамшилгүйгээр оршин тогтнох боломжгүй юм. Дөрвөн багана тус бүр нь парадигмын салшгүй хэсэг юм. OOP нь бүхэлдээ бие даасан шинж чанар, арга барил бүхий объектууд, тэдгээрийн бусад объектуудтай харилцах харилцаагаар дамжуулан ажилладаг.
Хамгийн энгийнээр хэлбэл, функциональ програмчлал нь програмд яг юу хийхийг зааж өгөхийн тулд хувиршгүй өгөгдлийг ашигладаг. Объект хандалтат програмчлал нь програмын төлөвийг өөрчлөх объектуудаар дамжуулан үр дүнд хэрхэн хүрэхийг програмд зааж өгдөг. Гоёмсог код үүсгэхийн тулд хоёр парадигмыг ашиглаж болно. OOP хэтийн төлөвөөс харахад та шавраар ямар нэгэн зүйлийг баримал хийж, бодит ертөнцийн дагуу загварчлах боломжтой. Функциональ програмчлалын тусламжтайгаар энэ нь барилгын блокуудыг овоолж, эцэст нь нэгдмэл хэсгийг бий болгохтой илүү төстэй юм.
Тэгэхээр та эндээс хаашаа явах ёстой вэ? Хэрэв та объект хандалтат програмчлалын ажлын ярилцлагад ороход туслахыг хүсвэл дараах курсыг үзэж болно: Гроккингийн объект хандалтат дизайны ярилцлага
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# This method returns the person’s name
def get_name(self):
return self.name
# This method returns the person’s age
def get_age(self):
return self.age
# Example usage:
person1 = Person(“Alice”, 30)
print(person1.get_name()) # Output: Alice
print(person1.get_age()) # Output: 30
Тэгэхээр та эндээс хаашаа явах ёстой вэ? Хэрэв та объект хандалтат програмчлалын ажлын ярилцлагад ороход туслахыг хүсвэл дараах курсыг үзэж болно: Гроккингийн объект хандалтат дизайны
Хайлт
Категори
Категори
- 1 минутын уншлага (288)
- 2 минутын уншлага (136)
- Богино прожектууд (9)
- боловсрол (76)
- Зөвлөгөө (22)
- Зөвлөгөө (61)
- Код (37)
- Хөндлөнгийн (14)