مكتبات البرامج
| English | العربية |
|---|---|
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | مكتبة البرامج |
| subroutines/ˈsʌbruːtiːnz/ | إجراءات جزئية |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | إجراءات المكتبة |
| static library/ˈstætɪk ˈlaɪbrəri/ | مكتبة ثابتة |
| executable/ɪɡˈzekjʊtəbl/ | قابل للتنفيذ |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | مكتبة ديناميكية |
أحد عشرة سطرًا كسرت الإنترنت
- في مارس 2016، حذف مبرمج مكتبة صغيرة اسمها
left-padمن مستودع عام. كانت تتكون من أحد عشرة سطراً: كانت تضيف مسافات في بداية سلسلة نصية. - خلال ساعات، فشلت عمليات البناء في شركات حول العالم. آلاف البرامج لم تكتب هذه الأسطر الإحدى عشرة أبداً. لقد استعارتها جميعاً، وكان الاستعارة غير مرئية حتى اللحظة التي توقفت فيها عن العمل.
- هكذا يتم إنتاج البرمجيات الحديثة. مكتبة البرامج هي هذا الاستعارة، يتم ذلك بقصد، وهذا الدرس يوضح ما تقدمه لمطور، وما تكلفته، والطريقتين اللتين يمكن ربطها بهما ببرنامج.
ما هي مكتبة البرامج
- مكتبة البرامج هي مجموعة من الروتيانات المكتوبة والمختبرة مسبقاً، والدوال الفرعية، والفئات، والوحدات، التي يمكن لبرنامج استخدامها بدلاً من كتابتها بنفسه.
- مكتبة رياضيات، مكتبة رسومات، مكتبة شبكات، مكتبة إيجاد المسارات، مكتبة ضغط: كل منها يحل مجالاً واحداً من المشكلات مرة واحدة، لكل برنامج يحتاج إليها.
- البرمجيات قيد التطوير تُبنى عادةً من مثل هذه روتينات المكتبة بالإضافة إلى الكود الخاص بالبرنامج الجديد.

الكود الجديد هو الجزء الصغير؛ الكود المستعار هو الجزء الكبير
مختبر مفاهيم الحوسبة.
صنّف الأمثلة المحددة حسب الفكرة الحاسوبية التي تمثلها.
مكتبة البرامج هي:
توفر المكتبات كوداً جاهزاً ومختبراً (رياضيات، رسومات، شبكات...) يمكن للبرنامج استدعاؤه بدلاً من كتابته بنفسه.
مجموعة من الكود الجاهز والقابل لإعادة الاستخدام والمختبر هي ______ برنامج.
توفر المكتبات الوقت وتقلل الأخطاء.
فوائد المبرمج
- الروتيانات مكتوبة ومختبرة بالفعل، لذا يكون التطوير أسرع وأرخص.
- هي موثوقة: تُستخدم بواسطة برامج عديدة، لذا فهي خالية تقريباً من الأخطاء.
- لا يحتاج المبرمج إلى خبرة في هذا المجال (الرسوميات، التشفير، إيجاد المسارات)، ويمكنه قضاء الوقت في ميزات البرنامج الخاصة به.
- البرنامج أسهل في الصيانة، لأن الكود المشترك موجود في مكان واحد، ويمكن لفريق العمل بالتوازي، حيث يستخدم كل عضو نفس الروتيانات.
من فوائد استخدام المكتبة أن الكود يكون:
كود المكتبات مختبر ومستخدم على نطاق واسع ومعياري — إعادة استخدامه يوفر الوقت ويحسن الموثوقية.
ما هي الفوائد لمطور بناء البرمجيات من استخدام وحدات مكتبات؟ حدد كل ما ينطبق.
وحدات مختبرة، لا حاجة للخبرة، صيانة أسهل. يجب اختبار الكود الخاص بالبرنامج نفسه أيضاً.
العيوب
- قد لا تتناسب الروتين مع الحاجة الدقيقة، ولا يمكن للمطور تغييره، لذا يجب عليه العمل ضمن حدود قيوده.
- يعتمد البرنامج على المكتبة: أي خلل، أو تحديث مفقود، أو سحب لمكتبة، كما في
left-pad، يصبح مشكلة للبرنامج. - قد تقيد رخصة المكتبة كيفية بيع البرنامج أو مشاركته، وقد تؤدي الروتيونات غير المستخدمة إلى زيادة حجم البرنامج.
مثال محلول: روبوت المطعم
- فريق يكتب برنامجًا لروبوت مطعم يستخدم مكتبة برامج تتضمن روتينًا لإيجاد أقصر مسار بين الطاولات. اشرح فائدين وعيبًا واحدًا للفريق.
- الفائدة: الروتين مُبرمج ومُختبر بالفعل، مما يوفر الفريق الوقت ويمنحهم الثقة في نتائجه. الفائدة: لا يحتاج الفريق إلى فهم خوارزميات إيجاد المسار بنفسه ويمكنه تخصيص الوقت لميزات الروبوت الخاصة.
- العيب: قد لا يتعامل الروتين مع احتياجات المطعم بدقة، مثل تحريك الكراسي أو الممرات أحادية الاتجاه، ولا يمكن للفريق تعديله، لذا قد يضطر للتكيف مع حدوده.
- ربط كل نقطة بـ هذا الفريق وهذا الروتين. عبارة عامة مثل "توفير الوقت" تحصل على درجة أقل من "توفير وقت كتابة واختبار خوارزمية إيجاد المسار".
ما هو العيب لفريق الروبوتات في استخدام وحدة إيجاد المسار من مكتبة؟
لا يستطيع الفريق تغيير كود المكتبة، لذا يجب تجاوز أي عدم تطابق مع احتياجاتهم. عدم الحاجة لفهم الخوارزمية هو ميزة وليس عيباً.
المكتبات الساكنة
- يتم نسخ المكتبة الساكنة إلى ملف تنفيذي عند تجميع البرنامج وربطه.
- يصبح البرنامج بعد ذلك مستقلاً: لا يحتاج إلى ملفات أخرى للعمل.
- التكلفة: يحمل كل برنامج نسخته الخاصة، فتكون الملفات التنفيذية أكبر، وأي تحديث للمكتبة يتطلب إعادة بناء جميع البرامج التي تستخدمها.
تختلف المكتبة الثابتة عن المكتبة الديناميكية لأنها:
المكتبة الثابتة مدمجة في الملف التنفيذي؛ أما المكتبة الديناميكية فتتم تحميلها وقت التنفيذ وتشارك بين البرامج.
المكتبات الديناميكية وملفات DLL
- المكتبة الديناميكية، وهي مكتبة ارتباط ديناميكية (DLL) على نظام ويندوز أو ملف
.soعلى لينكس، تظل ملفًا منفصلًا وتُحمّل في الذاكرة فقط عندما يستدعيها برنامج ما، في وقت التشغيل. - تكون الملفات التنفيذية أصغر؛ عدة برامج تعملية تشارك نسخة واحدة في الذاكرة؛ ويمكن تحديث ملف DLL مرة واحدة (إصلاح خلل أو دعم جهاز جديد) دون إعادة تجميع البرامج التي تستخدمه.
- يُستخدم الذاكرة فقط طالما تُحتاج المكتبة. التكلفة: لن يعمل البرنامج إذا كان ملف DLL مفقودًا أو بنسخة خاطئة.

نُسخ وقت التجميع، أو تُحمّل وتُشارك وقت التشغيل
يمكن للمكتبة الديناميكية أن تُشارك بين العديد من البرامج ويتم تحديثها مرة واحدة لجميعها.
بما أنها تُحمل وقت التنفيذ، فإن مكتبة ديناميكية مشتركة واحدة تخدم许多 برامج؛ وتحديثها يصلحها جميعاً دون إعادة بناء كل منها.
طابق كل سمة بمكتبة ثابتة أو ديناميكية.
ربط ثابت ينسخ الكود داخل الملف التنفيذي (أكبر، مستقل ذاتياً)؛ ربط ديناميكي يحمل مكتبة مشتركة وقت التنفيذ (أصغر، قابلة للتحديث مرة واحدة للجميع).
رتب أحداث برنامج يستخدم وحدة DLL.
يتم التحميل وقت التشغيل، عند أول استدعاء، وتخدم نسخة واحدة كل برنامج.
مثال محلول: فوائد ملفات DLL
- مطور برمجيات يستخدم ملفات DLL. صف الفوائد. [4]
- الملف التنفيذي أصغر، لأن كود المكتبة لا يُنسخ إليه.
- نسخة واحدة من DLL في الذاكرة تُشاركها جميع البرامج العاملة التي تستخدمها، مما يوفر الذاكرة.
- يمكن تحديث DLL لإصلاح خلل أو دعم جهاز جديد دون إعادة تجميع أو إعادة تثبيت البرامج التي تستدعيها.
- تُحمّل المكتبة فقط عند الحاجة إليها، لذا يُستخدم الذاكرة فقط أثناء تشغيل روتين معين.
اختيار بين الساكنة والديناميكية
- يجب أن يعمل البرنامج على جهاز لا يمكن تثبيت شيء آخر عليه، أو جهاز مدمج، أو ملف واحد تم تحميله: ساكنة، لأن الملف التنفيذي ذاتي الاستقلالية.
- العديد من البرامج على نظام واحد تشارك نفس الروتيونات، أو تتغير الروتيونات بشكل متكرر: ديناميكية، لأن نسخة مشتركة واحدة أصغر ويتم تحديثها مرة واحدة للجميع.
- البرهنة بالت权衡: ذاتي الاستقلالية لكنه كبير ومُعاد بناؤه للإصلاح، أو صغير ومشترك لكنه يعتمد على وجود الملف.
يجب على البرنامج الذي يجب أن يعمل من ملف واحد على جهاز لا يمكن تثبيت أي شيء آخر عليه استخدام مكتبة ديناميكية.
المكتبة الديناميكية هي ملف منفصل يجب أن يكون موجوداً. أما المكتبة الساكنة فتُنسخ إلى الملف التنفيذي، وهو ما يحتاجه بالضبط البرنامج المستقل ذاتياً.
علامات ضائعة
- تُحمّل DLL في وقت التشغيل، وليس وقت التجميع. هذه العبارة وحدها هي المعيار.
- الفوائد موجهة للـ مطور: مُبرمج ومُختبر مسبقًا، لا حاجة للخبرة، صيانة أسهل. عبارة "يعمل البرنامج أسرع" ليست ضمن القائمة.
- المكتبة هي كود وليست أداة. بيئة التطوير المتكاملة (IDE) هي الأداة؛ المكتبة هي ما يستدعيه البرنامج.
- يجب أن يكون العيب عيبًا في استخدام المكتبة: عدم القدرة على التعديل، عدم ملاءمتها، الاعتماد عليها. عبارة "تكلف مالاً" نادرًا ما تكون المقصودة.
لقد فهمت الأمر
- مكتبة برامج هي كود مُعدّ ومُختبر مسبقًا يستدعيه برنامج ما بدلاً من كتابته بنفسه
- الفوائد: تطوير أسرع وأرخص، روتينات موثوقة، لا حاجة للخبرة في تلك المنطقة، صيانة أسهل، عمل الفرق بالتوازي؛ العيوب: قد لا تتناسب، لا يمكن تعديلها، الاعتماد عليها
- ساكنة: تُنسخ إلى الملف التنفيذي وقت التجميع، ذاتية الاستقلالية لكنها أكبر ومُعاد بناؤها للإصلاح
- ديناميكية (DLL): ملف منفصل يُحمّل وقت التشغيل، أصغر، تُشاركها العديد من البرامج، تُحدَّث مرة واحدة للجميع