تفاوت کتابخانه و فریمورک چیست؟
تفاوت کتابخانه و فریمورک چیست؟ برنامه نویسان برای آسانتر شدن کارهای خود از کتابخانهها و فریمورکها استفاده میکنند. شباهت بین کتابخانه و فریمورک در آسانتر کردن کد نویسی شاید شما را با مفهوم این دو به اشتباه بیاندازد. Library «کتابخانه» و Framework « فریمورک (چهارچوب)» با هم تفاوتهای زیادی دارند که در این مقاله، فرق بین کتابخانه و فریمورک را مورد بررسی قرار میدهیم.
در این مقاله به موضوعات زیر خواهیم پرداخت:
- فرق کتابخانه و فریمورک چیست؟
- کتابخانه چیست؟
- فریمورک چیست؟
- شباهت کتابخانه و فریمورک چیست؟
- تفاوت کتابخانه و فریمورک چیست؟
- آیا کتابخانه و فریمورک با هم در ارتباط هستند؟
فرق کتابخانه و فریمورک چیست؟
بعضی از برنامه نویسان تازه کار در ابتدای شروع برنامه نویسی، تصورشان از فرق بین کتابخانه و فریمورک این است که فریمورک مجموعهای از کتابخانهها است، در حقیقت چندین کتابخانه با هم جمع شده و یک فریمورک را تشکیل داده است. که این یک تصور اشتباهی است. قبل از اینکه به فرق بین کتابخانه و فریمورک بپردازیم، اول باید به تعریف کتابخانه و فریمورک بپردازیم تا از میان این تعاریف، به سوال «تفاوت بین کتابخانه و فریمورک چیست؟» برسیم.
کتابخانه چیست؟
کتابخانه در برنامه نویسی چیست؟ Library (لایبرری) در فارسی به معنی کتابخانه است. برای اینکه مفهوم کتابخانه را بهتر متوجه شوید، یک کتابخانه معمولی کتاب را در نظر بگیرید. در قفسه این کتابخانه پر از کتابهایی است که در مواقعی که به این کتابها نیاز داریم سراغ این کتابخانه میرویم و با خواندن کتابهای موجود، اطلاعات مورد نیاز خود را پیدا میکنیم.
مفهوم کتابخانه در برنامه نویسی نیز شبیه به کتابخانه معمولی است. یعنی کتابخانه مجموعهای از کلاسها و توابع و کدهای آماده است که باعث میشود به جای اینکه این کدها را از اول خودمان بنویسیم، از کدهای آمادهی از قبل نوشته شده استفاده کنیم تا کارمان آسان شود و درگیر کدهای پیچیده و وقتگیر نشویم.
یگذارید یک مثال ساده بزنیم تا بیشتر با مفهوم کتابخانه آشنا شوید. اگر بخواهیم لگاریتم یک عدد را پیدا کنیم، باید الگوریتمی از ریاضیات بنویسیم که برای ما لگاریتم یک عدد را پیدا کند. ممکن است ما ریاضیات خوبی نداشته باشیم و اگر بلد هم باشیم، کدهای پیچیده و وقتگیری داشته باشد. اگر زبان برنامه نویسی ما C باشد، کتابخانه math.h در زبان C، مخصوص پیدا کردن لگاریتم عدد است. برنامه نویسان با فراخوانی کتابخانه math.h و دادن عدد مد نظر به آن، لگاریتم آن عدد را نشان میدهد. در سایر زبانهای برنامه نویسی نیز کتابخانههای مختلفی برای پیدا کردن لگاریتم وجود دارد.
پس کتابخانهها کار ما را آسانتر میکنند و باعث میشود از عملیات پیچیده و زمانبر کد نویسی دوری کنیم. اگر بخواهیم از کتابخانههای معروف دیگر نام ببریم، React و jQuery کتابخانههای معروف جاوا اسکریگتی هستند. حال در قسمت بعد با مفهوم فریمورک آشنا میشویم سپس ببینیم تفاوت کتابخانه و فریمورک چیست؟ پس در ادامه با ما همراه باشید.
فریمورک چیست؟
فریمورک در برنامه نویسی چیست؟ Framework (فریمورک) در فارسی به معنی چهارچوب است. در حقیقت فریمورکها یک سری چهارچوب و اسکلت هستند که از پیش آماده هستند و ما برای تکمیل این اسکلتها، کدهای خودمان را به آن اضافه میکنیم. در حقیقت شباهت کتابخانه با فریمورک در همین آسانتر کردن کدها خلاصه میشود.
بگذارید یک مثال سادهتر بزنیم تا بیشتر با مفهوم فریمورک آشنا شوید. یک اسکلت و چهارچوب ساختمانی (ستونها، تیرآهن و...) را در نظر بگیرید. وقتی داخل این ستونها آجرهای خود را میچینیم و دیوار آن را درست میکنیم، یک ساختمان تکمیل میشود. در حقیقت وقتی ستونها و چهارچوب یک ساختمان درست بنا شود، ما خودمان نیز میتوانیم آجرها را لابلای این چهارچوب قرار داده و با ریختن ملات لابلای آنها، این ساختمان را تکمیل کنیم.
اگر این چهارچوب و اسکلت ساختمانی زیر نظر یک مهندس عمران نباشد و یک فرد معمولی این چهارچوب را بسازد، احتمال اینکه اسکلت ساختمان کج ساخته شود و در آینده فرو بریزد زیاد است. اما اگر چهارچوب یک ساختمان با نظارت مهندس ساخته شود، یک فرد معمولی یا بنا نیز میتواند آجرهای آن را در این چهارچوب قرار داده و مطابق آن چهارچوب تکمیل کند.
کار فریمورک در برنامه نویسی نیز به همین شکل است. فریمورکها اسکلتها و چهارچوبهای از پیش ساخته شده توسط چندین برنامه نویس مجرب و حرفهای است. و ما مطابق این چهارچوب، کدهای خودمان که مانند آجر هستند را در آن قرار میدهیم و برنامه خودمان را میسازیم. اگر فریمورکها نبودند، مجبور بودیم ساختمان و اسکلت این برنامه را نیز خودمان کد نویسی کنیم و ممکن بود که کدهای ما اصولی و بهینه نباشد و برنامه ما در آینده به مشکل بخورد. اما با وجود فریمورک، ما طبق این چهارچوب عمل میکنیم و زیر بنای برنامه ما اصولی پیش میرود.
اگر بخواهیم یک مثال از فریمورک بزنیم، Django و Laravel مثال خوبی است. جنگو فریمورک زبان برنامه نویسی پایتون و لاراول فریمورک زبان برنامه نویسی پیاچپی است. در این فریمورکها، ساختار MVC که همان View ،Model و Controller است، از قبل ساخته شده است.
Modelها وظیفه کار با دیتابیسها را بر عهده دارند و Viewها همان صفحاتی است که در سایت مشاهده میکنیم. در این میان Controllerها رابط میان Model و Viewها هستند. یعنی اطلاعات دیتابیس را میگیرد و به View ارسال میکند تا ما در صفحات سایت این اطلاعات را ببینیم.
یک برنامه نویس وقتی در این فریمورکها برنامه نویسی میکند، کدهای خود را در چهارچوب معماری MVC مینویسد و باعث منظمتر شدن کدها میشود. فریمورکها نیز مانند کتابخانهها باعث آسانتر شدن کار، صرفهجویی در زمان (جلوگیری از دوباره نویسی) و بهینه شدن برنامه میشود.
اکنون که تعریف کتابخانه و فریمورک را متوجه شدیم، در ادامه ببنیم تفاوت کتابخانه و فریمورک چیست؟ پس در ادامه با ما همراه باشید.
شباهت کتابخانه و فریمورک چیست؟
از تعریف کتابخانه و فریمورک متوجه شدیم که هر دو با کدهای از پیش نوشته شده باعث آسانتر شدن کدها میشوند. اما به طور خلاصه اگر بخواهیم شباهت کتابخانه با فریمورک را خلاصه کنیم:
- کتابخانه و فریمورک کدهای از پیش نوشته شده هستند.
- کتابخانه و فریمورک باعث آسانتر شدن برنامه نویسی میشوند.
- کتابخانه و فریمورک باعث صرفهجویی در زمان میشوند.
- کتابخانه و فریمورک باعث اصولی شدن و بهینه شدن کدها میشوند.
تفاوت کتابخانه و فریمورک چیست؟
تا اینجای کار با معنی فریمورک و کتابخانه آشنا شدیم. پس اگر شباهت کتابخانه و فریمورک در آسانتر شدن کارها است و با کدهای از پیش ساخته باعث صرفهجویی در زمان است، پس تفاوت کتابخانه و فریمورک چیست؟ در ادامه مقاله با ما همراه باشید تا با تفاوت کتابخانه و فریمورک بیشتر آشنا شویم.
تفاوت اصلی بین کتابخانه و فریمورک در وارونگی کنترل (inversion of Control) است؛ یعنی نحوه صدا کردن (Call) آنها با هم تفاوت دارد. وقتی یک کتابخانه را فراخوانی میکنید، در حقیقت کدهای شما است که کتابخانه را صدا میزند و بر عملکرد آن تاثیر میگذارد. اما در فریمورک عکس این قضیه است. یعنی فریمورک کدهای شما را فراخوانی میکند و روی آنها تاثیر میگذارد.
وقتی که از کتابخانه استفاده میکنیم، این ما هستیم که انتخاب میکنیم چه موقع این کتابخانه را فراخوانی کنیم. اما در واقع فریمورک، مکانهایی را برای ما مشخص میکند که کدهای خودمان را در آن بنویسیم و فریمورک، هر موقع نیاز داشته باشد، کدهای ما را فراخوانی و اجرا میکند.
آیا کتابخانه و فریمورک با هم در ارتباط هستند؟
حال که تفاوت کتابخانه و فریمورک را متوجه شدیم باید بدانیم که ارتباطی بین کتابخانه و فریمورک وجود دارد؟ در کتابخانه و فریمورک، APIهای تعریف شدهای وجود دارد که توسط برنامه نویسان مورد استفاده قرار میگیرند. حال شاید سوال کنید که API چیست؟ API مخفف Application Programming Interface به معنی «رابط برنامه نویسی کاربردی» است. در حقیقت APIها ارتباط بین یک نرمافزار با نرمافزار دیگر را فراهم میکند.
اگر بخواهیم یک مثال ساده بزنیم: برای استفاده از گوگل ریکپچا یا ورود به سایت توسط اکانت گوگل، در سایت خود، باید از طریق API، امکانات سایت گوگل را به سایت خودمان اضافه کنیم. در حقیقت API پلی میان دو نرمافزار است.
کتابخانه و فریمورک نیز توسط API میتوانند با همدیگر در ارتباط باشند. برای مثال: React یک کتابخانه جاوا اسکریپت است که برای فرانتاند سایت به کار میرود. لاراول نیز یک فریمورک برای پیاچپی است. اگر برای بکاند سایت از فریمورک لاراول استفاده کنیم و برای فرانتاند سایت از React استفاده کنیم، میتوانیم از طریق API، بین فرانتاند و بکاند ارتباط بر قرار کنیم. برای اطلاعات بیشتر مقاله زیر را مطالعه کنید:
جمعبندی:
در این مقاله به تفاوت بین کتابخانه و فریمورک پرداختیم. همچنین متوجه شدیم که شباهت بین کتابخانه و فریمورک چیست؟ به طور خلاصه اگر بخواهیم به سوال «تفاوت کتابخانه و فریمورک چیست؟» پاسخ دهیم. کتابخانه مجموعهای از کدهای از پیش نوشته شده است که در صورت لزوم از آن برای راحتی کار خود و صرفهجویی وقت، استفاده میکنیم. در مقابل، فریمورک در واقع چهارچوب و اسکلت از پیش ساخته شده کدها است که در اختیار برنامه نویس قرار داده شده است. برنامه نویس با اضافه کردن کدهای خود به این چهارچوب، برنامه خود را میسازد.