🌝

Kutubxona, freymvork va ularning farqlari haqida

#Library #Framework

Dasturlashda kutubxona va freymvork tushunchalariga koʻp duch kelamiz. Lekin sohaga yangi kirib kelayotganlarda ikkalasini farqlash qiyinchilik tugʻdirishi mumkin. Shu boʻshliqni toʻldirish maqsadida yuqoridagi ikki tushunchani batafsil bayon qilishga harakat qilib koʻrdik.

Tasavvur qiling yangi dastur yaratdingiz. Aksariyat yangi oʻrganuvchilar hamma kodlarini bitta faylga yozishadi. Natijada sizda bir faylda bir necha qator kodlardan iborat dastur paydo boʻldi.

Kutubxona

Endi sizda shu dasturning qaysidir qismini boshqa dasturda ham foydalanishga ehtiyoj tugʻildi. Bu holatda siz uni shunchaki koʻchirib olasiz. Bu alohida funksiya yoki alohida maqsaddagi bir nechta funksiyalardan iborat kodlar majmuasi boʻlishi mumkin. Shartli ravishda bu qismni komponenta deb ataymiz:

Kutubxona-2

Aniqroq tasavvur qilish uchun misol keltiramiz. Siz oylik hisoblaydigan dastur yaratdingiz. Bu dasturda keltirilgan raqamdagi summani soʻz koʻrinishida yozib beruvchi funksiya bor deylik. Siz aynan shu funksiyani boshqa dasturda ham ishlatishingiz mumkin va uni yangi dasturga koʻchirib kerakli oʻzgartirishlarni amalga oshirasiz.

Kutubxona-3

Keyinchalik esa aynan shu vazifani bajaruvchi kodlar jamlanmasini alohida komponenta qilib tayyorlab, istalgan dasturingizda foydalanishingiz mumkin.

Istasangiz uni boshqa dasturchi doʻstlaringiz bilan ham ulashasiz. Yoki xuddi shunday siz ham boshqa dasturchilar yaratgan komponentalardan foydalanishingiz mumkin. Aynan shu komponenta dasturlashda kutubxona deyiladi. Siz bir dasturda bir nechta kutubxonadan ham foydalanishingiz mumkin:

Kutubxona-4

Internetda dasturchilar uchun koʻplab kutubxonalar bor. Ularning aksariyati bepul va qaysidir boshqa mehribon dasturchilar tomonidan yaratilgan boʻladi. Misol uchun, PHP dasturlash tilidagi eng mashhur kutubxonalar:

  1. Guzzle — HTTP soʻrovlar bilan ishlash uchun kutubxona.
  2. Swiftmailer — email bilan ishlash uchun kutubxona.
  3. Carbon — sanalar bilan ishlash uchun kutubxona.

Yaxshiroq his qilishingiz uchun quyidagi rasmni keltiramiz. Bu yerda toʻliq dastur ifodalangan va koʻrib turganingizdek bir necha kutubxonalardan foydalanilgan.

Kutubxon-5

Endi tasavvur qiling siz dasturda bir vazifani bajaruvchi kodlarni emas, hamma dastur uchun umumiy boʻlgan komponentalardan qayta foydalanmoqchisiz. Namuna uchun veb ilova olaylik. Barcha veb ilovlar uchun xos boʻlgan vazifalar bor. Bular marshrutizatsiya, autentifikatsiya, maʼlumotlar bazasi bilan aloqani taʼminlash va hokazo. Bularga ilovani eng tashqi qismlari deb qarasak boʻladi.

Kutubxona-6

Aynan shu qismlarni ham ajratib, bir butun tizim sifatida boshqa dasturlarda ham foydalanishingiz mumkin. Kutubxonada uning ichiga kirmasdan uning atrofida kodlarimizni yozgan edik. Bunda esa siz aynan shu qobiq ichiga kodlaringizni yozasiz va undan tashqariga deyarli chiqa olmaysiz. Aynan shunday tayyor qobiqni freymvork deb ataymiz. Ingliz tilidan tarjima qilganda ham framework — ramka, qobiq degani.

Framework

Yana ham tushunarliroq boʻlishi uchun misol keltiramiz. Bir kichikroq freymvorkni tasavvur qiling. Unda URL manzilga murojaat qilganingizda kerakli sahifani ochib berishga javobgar komponenta (marshrutizatsiya); roʻyxatdan oʻtish (avtorizatsiya); maʼlumotlar bazasi bilan aloqani taʼminlash; kesh xotiralar bilan ishlash uchun javobgar tayyor komponentalar bor deylik. Siz bu freymvorkni olasiz va oʻzingiz kerakli boʻlgan veb ilovani uning ichida yaratishni boshlaysiz. Bu yangiliklar sayti yoki internet doʻkoni ham boʻlishi mumkin. Yaʼni freymvork aynan bir tor doiradagi vazifa uchun emas, umumiy konsepsiyani yaratib berish uchun xizmat qiladi.

Siz ham bunday ramkani tayyorlab boshqalar bilan ulashishingiz yoki boshqalar tayyorlagan freymvorkdan foydalanishingiz mumkin. Namuna uchun PHP tilidagi eng mashhur freymvorklarni keltiramiz:

  1. Symnfony
  2. Yii2
  3. Laravel

Quyidagi yonma-yon rasmda ularning farqlarini yana ham tushunib olishingiz mumkin:

Kutubxona Framework

Chapda kutubxona, oʻngda freymvork

Quyidagi rasmda esa siz murojaatdagi farqlarni bilib olasiz:

Kutubxona

Biz biri ikkinchisidan yaxshiroq demoqchi emasmiz, hamda ularni afzallik va kamchiliklarini ham sanashdan yiroqmiz. Zero, har ikkalasining ham oʻziga xos vazifalari bor va ular bu vazifalarni qoyilmaqom qilib uddalashmoqda. Maqsadimiz ikkalasini mohiyati va farqlarini anglatish. Agar siz shularni tushunib olgan boʻlsangiz biz maqsadimizga yetgan boʻlamiz.