مالفرق بين library و framework؟

كثيرا مانسمع عن مصطلح libraries و frameworks ويختلط على الكثير من المبرمجين الفرق بينهما لذا فما هما ومالفرق بينهما ؟
- libraries و frameworks عبارة عن اكواد جاهزة قام بكتابتها مبرمج او مجموعة من المبرمجين الاخرين والهدف هو تسريع العمل واختصار الجهد والوقت.
- يكمن الفرق الجوهري بينهما في مصطلح يسمى inversion of control (انعكاس التحكم) ،حيث عندما تستخدم مكتبة library فأنت المسؤول أين ومتى تستخدم مختلف الدوال الخاصة بها،يعني انت المتحكم كيف تكتب الكود وكيف تستخدم المكتبة وأين تكتب الأكواد الخاصة بها،بمعنى انت المسؤول عن الية بناء التطبيق.


- أما اطار العمل framework فهو عكس المكتبة،وهو المسؤول عن طريقة كتابة الاكواد واين تستخدمها وكيف تستخدمها،وانت تتبع منهجيته لذا عليك تعلمه لتتبع طريقته،فهو المسؤول عن الية بناء التطبيق.
- بمعنى ابسط في المكتبة أنت من تستدعي مكتبة وتستخدمها كما تشاء،اما في اطار العمل هو من يستدعى كودك البرمجي ويشغله حسب بنيته التي يفرضها عليك.
- مثلا لدينا مكتبة jquery يمكنك من خلالها استخدام الدوال التي توفرها للتحكم في DOM في اي مكان من موقعك، فقط تستدعي الدالة التي تحتاجها وتعطي لها selector وهي ترجع لك العنصر المحدد،حيث لست مقيدا بطريقة محددة في الكتابة،او وضع كود برمجي في مكان محدد.


- مثال عن framework : في اطار عمل laravel الشهير لديه بنية محددة،وانت مجبر على اتباع طريقته التي تتعلمها من توثيقه،حيث انك مطالب بوضع كودك البرمجي للتحكم في المدخلات في ملفات controllers وروابط routes الخاصة بموقعك في ملف routes،وللقيام بعمليات على جداول عليك كتابة ملفات models وربط حسب توثيق (hasMany - hasOne..) وهكذا ،والعديد من الخصائص التي انت تتبعها لتوافق الية framework وطريقة استخدامه.


خلاصة المقالة: في المكتبة انت المتحكم في كتابة الكود وفي فريمورك هو المتحكم في كتابة الكود ويفرض عليك طريقة كتابة كودك حسب بنيته.