تفاوت فریمورک و کتابخانه در چیست؟
تفاوت فریمورک و کتابخانه یکی از مباحث چالشی هست که برای برخی دولوپرا هنوز مبهمه. برای اینکه به شرح تفاوتهای این دو بپردازیم لازمه که گریزی به مفهوم فریمورک داشته باشیم که میتونین با مطالعه مقاله «فریمورک چیست؟» بهطور مفصل با فریمورک و معایب و مزایای اون آشنا بشین.
خب بریم سر اصل مطلب! تا حالا شده واسه پروژهتون از فریمورک و کتابخونه یا همون لایبرری استفاده کنین؟! گاهی افراد تفاوتی بین کتابخونه (Library) و فریمورک (Framework) قائل نمیشن و چون هردوشون مجموعهای از کدهای نوشته شده از قبل توسط برنامهنویسای دیگه هستند، این دو رو همسان میدونن که البته اینجور نیست و با هم خیلی فرق دارن! یا تصور میکنن که به مجموعهای از کتابخانهها، فریمورک گفته میشه که این هم کاملاً غلطه! پس چه تفاوتی بین فریمورک و کتابخانه در برنامهنویسی وجود داره؟!
اگر بخوایم خیلی واضح بگیم، میتونیم با یه تعریف ساده از فریمورک و کتابخونه شروع کنیم. فریمورک یه پلتفرمه که زیرساخت رو تو پروژه در اختیارمون قرار میده و کدهایی که کاربر نوشته رو فراخوانی میکنه و در نتیجه اونا رو تو یه چارچوب خاص به کار میگیره اما کتابخونه مجموعهای از کدها و الگوریتمهایی هست که نرمافزار رو فراخوانی میکنه.
خب حالا در ادامه کمی مفصلتر به دو تفاوت مهم بین فریمورک و کتابخانه در برنامهنویسی میپردازیم تا کاملاً فرق این دوتا براتون روشن بشه:
وارونگی کنترل:
یکی از تفاوتهای شاخصی که بین کتابخانه و فریمورک وجود داره، اصطلاح رایج وارونگی کنترل یا inversion of Control هست. اگر بخوایم ساده این تفاوت رو توضیح بدیم، باید بگیم که تصور کنین یه متدی رو از کتابخونه فراخوانی میکنین، در اینجا شما هستین که میتونین رویکرد کتابخانه رو کنترل کنین و تصمیم بگیرین کی و کجا ازش استفاده کنین ولی این در حالیه که این قضیه درباره فریمورک برعکسه و دیگه کنترل روند فریمورک در دست شما نیست. درواقع این فریمورکه که موقعیت رو فراهم میکنه تا بتونین کدها رو در اختیارش قرار بدین تا بهموقع ضرورت کدها رو فراخوانی کنه.
پس به بیان خیلی ساده میشه اینکه برنامهنویس کتابخونههای آماده رو برای پروژه صدا میزنه و ازشون در روند سادهسازی کدنویسی استفاده میکنه ولی در مقابل این فریمورکه که توی فرآیند کدنویسی، برنامهنویس رو صدا میزنه. فریمورک شبیه اسکلت ساختمونه که با کدهای اصولی برنامهنویس در چارچوبی مشخص و استاندارد تکمیل میشه و دیگه برنامهنویس دغدغهای برای چهارچوب انتخابی نداره چون یه قالب استاندارد در اختیار داره و میتونه تمام تمرکزش رو روی توسعه پروژه و بخشهای مهمتر بذاره.
توسعهپذیری:
تفاوت دیگه این دو مقوله در توسعهپذیری هست. برنامهنویس بهراحتی با قابلیت توسعهپذیری فریمورک میتونه ویژگیهای جدید رو به اون اضافه کنه؛ در صورتی که کتابخانه مجموعهای از توابع و کلاسهای تعریف شده هست که نسبت به فریم ورک محدودتره و پیچیدگی کمتری داره.
پس در نهایت…
هرچند که فریمورک و کتابخانه هردو باعث تسهیل در روند کد زدن توی پروژه و صرفهجویی در زمان میشن و مثلاً با کتابخونه دیگه نیاز نیست واسه پیدا کردن لگاریتم یه عدد، اون لگاریتم رو بلد باشین و یا موارد مشابه دیگه، اما با هم تفاوتهای اساسی دارن.
همونطور که گفته شد دو تفاوت خیلی برجسته و مهم درباره این دو مقوله هست که اغلب با مثال ساختمون معرفی و شبیهسازی میشن؛ اینجوری که فریمورک مثل اسکلت ساختمون و کتابخونه مثل آجره و با API که تو این مثال همانند ملاته، به هم متصل میشن؛ پس به بیان خیلی ساده تو کتابخونه یه سری کد وجود داره که برنامهنویس مطابق نیاز پروژه، به جای اینکه خودش کد بزنه از اونا استفاده میکنه ولی در فریمورک این برنامهنویسه که کدهای خودش رو تو قالبی که فریمورک در اختیارش قرار داده، جایگذاری میکنه.
به نظرتون دیگه چه تفاوتهایی میتونن این دو اصطلاح چالشبرانگیز با هم داشته باشند؟
نظر (4)
شاهین
توضیحاتتون خیلی خوب بود
یه نکته ای هم من اضافه کنم (البته با اجازه):
فقط با استفاده از کتابخانه برنامه نویسی کارمون راه نمیفته. برنامه نویس برای اینکه بهترین نتیجه رو بگیره باید با کد و کدینگ کردنم آشنا باشه
علی حاتم پوری
اصل برنامه نویسی توانایی حل مسئله و الگوریتمه که با تمرین زیاد به دست میاد.
مهتاب خسروی
mamnun. sade va ali bood
مدیر
ممنون از شما، خوسحالیم که مورد استفادتون قرار گرفته