مكتبة برمجية

مكون برمجي قابل لإعادة الإستخدام من قبل برامج أخرى لأغراض محددة
رسم توضيحي لتطبيق يمكن أن يستخدم مكتبة libvorbisfile.so لتشغيل ملف Ogg Vorbis.

في الحوسبة، المكتبة هي مجموعة من البرامج الفرعية تستخدم لتطوير البرمجيات.[1][2][3] تحتوي المكتبات كود "مُساعد" وبيانات توفر خدمات للبرامج المستقلة. يسمح هذا بمشاركة الكود والبيانات على شكل وحدات منفصلة. بعض الملفات التنفيذية مكتبات وبرامج مستقلة في الوقت ذاته، لكن ليست كل المكتبات تنفيذية. تضع التنفيذيات والمكتبات مراجع إلى بعضها البعض تسمى روابط في عملية تعرف بالربط ويقوم بها برنامج يسمى الرابط (linker).

أغلب أنظمة التشغيل الحديثة توفر مكتبات تغطي أغلب خدمات النظام. توفر هذه المكتبات للبرامج الخدمات التي تتوقعها من نظام التشغيل.

ظهرت المكتبات حوالي سنة 1950، وأصبح عنصرا رئيسيا في البرمجة.يتم استخدامها لتنفيذ واجهات برمجة، إطارات عمل، برامج مساعدة و لغات برمجة.الوظائف الواردة في المكتبات البرمجية غالبا ما تكون مرتبطة بالعمليات المتكررة في البرمجة : معالجة واجهات المستخدمين، معالجة قاعدة البيانات أو الحسابات الرياضية.

تاريخهاعدل

كان الهدف من المفاهيم البرمجية الأولى المشابهة للمكتبات البرمجية هو فصل تعاريف البيانات عن تنفيذ البرنامج. لفتت لغة غوفيال الانتباه العام إلى مفهوم كومبول (تجمع الاتصالات) في عام 1959، مع أنها تبنت الفكرة من برمجيات ساغ الخاصة بالأنظمة الكبيرة. اتباعًا لمبادئ علوم الحاسب من فصل الاهتمامات وإخفاء البيانات، «كان هدف كوم بول هو إجازة مشاركة بيانات النظام بين البرامج من خلال توفير توصيف مركزي لهذه البيانات».[4]

تضمنت لغة كوبول أيضًا «مؤهلات بدائية تدعم نظام المكتبة البرمجية» في عام 1959،[5] لكن جين ساميت وصفها بأنها كانت في ما مضى «تسهيلات غير كافية للمكتبة».[6]

هناك مساهم رئيسي آخر في مفهوم المكتبة الحديثة كان على شكل برامج فرعية مبتكرة بلغة فورتران. يمكن ترجمة برامج فورتران الفرعية بشكل مستقل عن بعضها، لكن المترجم يفتقر إلى الرابط الذي يربط بينها. كان من المستحيل فحص النوع بين البرامج الفرعية المكتوبة بلغة فورتران قبل إدخال نماذج فورتران-90.[7]

في النهاية، يجب أن يذكر مؤرخو هذا المفهوم تأثير لغة البرمجة سيمولا 67. كانت لغة سيمولا أول لغة برمجة غرضية التوجه وصفوفها مشابهة للمفهوم الحديث المستخدم في لغات جافا وسي++ وسي شارب. كان مفهوم الصف في لغة سيمولا سلفًا لمفهوم الحزمة في لغة أيدا ومفهوم الوحدة في لغة موديولا-2.[8] حتى عندما طُورت لغة سيمولا في بداياتها في عام 1965، كان من الممكن تضمين الصفوف فيها في ملفات المكتبة وإضافتها في وقت الترجمة.[9]

الربطعدل

المكتبات البرمجية مهمة في عملية ربط أو دمج البرنامج التي تُصمم فيها المراجع المعروفة باسم روابط أو رموز لوحدات المكتبة. تُجرى عملية الربط عادةً آليًا عن طريق برنامج رابط أو دامج يبحث في مجموعة من المكتبات ووحدات أخرى مُعطاة في ترتيب معين. لا تُعد إمكانية وجود رابط هدف ما عدة مرات في مجموعة معطاة من المكاتب أنها خطأ عادةً. قد يتم الربط عندما يُنشأ ملف تنفيذي، أو في أي وقت يُستخدم فيه البرنامج في أثناء وقت تنفيذه.

قد تكون المراجع التي يجري تصميمها عناوينَ لقفزات أو استدعاءات روتينية أخرى. قد تكون في البرنامج الرئيسي، أو في وحدةٍ تعتمد على وحدة أخرى. تُصمم هذه المراجع على شكل عناوين ثابتة أو قابلة للنقل (من قاعدة مشتركة) من خلال تخصيص الذاكرة المستخدمة في وقت التنفيذ لأقسام الذاكرة الخاصة بكل وحدة لها مرجع.

قد تستخدم بعض لغات البرمجة الأخرى ميزة تسمى الربط الذكي يكون فيها الرابط مدركًا وجود المترجم أو متكاملًا معه، مثل أن يدرك الرابط كيفية استخدام المراجع الخارجية، وإن وجد ترميز ما في مكتبة لا يُستخدم مطلقًا، على الرغم من وجود مرجعية داخلية له، فقد يُهمل من قبل التطبيق المُترجَم. على سبيل المثال، يمكن لبرنامج ما يستخدم فقط الأعداد الصحيحة في الحساب، أو لا يُجري عمليات حسابية أبدًا، أن يستبعد الصيغ المكتبية للأعداد الحقيقية (ذات الفاصلة العائمة). قد نحصل من خلال ميزة الربط الذكي هذه على ملفات تطبيقات بحجوم أصغر ونُخفض من استخدام الذاكرة.

الترحيلعدل

قد تُخزن بعض المراجع في برنامج ما أو وحدة مكتبة في صيغة نسبية أو رمزية، والتي لا يمكن تصميمها حتى يُمنح الكود البرمجي بأكمله والمكتبات العناوين الساكنة النهائية.

الترحيل هو عملية تنظيم هذه المراجع، وتتم إمّا من خلال الرابط أو المُحمّل. عمومًا، لا يمكن أن يُجرى الترحيل على المكتبات بمفردها لأن العناوين في الذاكرة قد تختلف اعتمادًا على البرنامج الذي يستخدمها وعلى المكتبات الأخرى التي تُدمج معها. يتجنب الترميز المعتمد على الموقع استخدام مراجع لعناوين مطلقة وبالتالي فهو لا يتطلب ترحيلًا.

استعمالعدل

في الحوسبة، الوظيفة هي عبارة عن مجموعة من التعليمات التي تدعم عملية معينة وتنتج نتيجة لذلك. ظهرت المكتبات البرمجية حوالي سنة 1950، حيث كانت في ذلك الوقت عبارة عن مخزن يحتوي مجموعة من البطاقات المثقبة أو لفات شرائط مغناطيسية التي تخزن بدورها روتين-وظيفة. يمكن للمبرمجين اختيار الشرائط المغناطيسية لاستعمالها في برامجهم. تستعمل المكتبات البرمجية، كما ذكرنا سابقا، لتنفيذ واجهات برمجة، إطارات عمل، برامج مساعدة ولغات برمجة. إن برمجة واستغلال المكتبات البرمجية هو جزء من الاستخدامات الشائعة للغات البرمجة العامة.إذا كانت الوظائف في لغات البرمجة الأولى محدودة بمعجم هذه اللغة، فإن لغات البرمجة الحديثة تمتلك معجم م حدود أكثر وتمتلك مجموعة كبيرة من الوظائف وفرتها المكتبات البرمجية التي تصاحب معجم لغة البرمجة.على سبيل المثال، تحتوي المكتبة البرمجية C مجموعة موحدة من الوظائف لمعالجة الملفات، كتابة النصوص، واستخدام الذاكرة، أو إجراء العمليات الحسابية.

مراجععدل

  1. ^ Bresnahan, Christine; Blum, Richard (27 أبريل 2015). LPIC-1 Linux Professional Institute Certification Study Guide: Exam 101-400 and Exam 102-400. John Wiley & Sons (نشر 2015). صفحة 82. ISBN 9781119021186. مؤرشف من الأصل في 24 سبتمبر 2015. اطلع عليه بتاريخ 3 سبتمبر 2015. Linux shared libraries are similar to the dynamic link libraries (DLLs) of Windows. Windows DLLs are usually identified by .dll filename extensions. الوسيط |CitationClass= تم تجاهله (مساعدة)
  2. ^ Wilson, Leslie B.; Clark, Robert G. (1988). Comparative Programming Languages. Wokingham, England: Addison-Wesley. صفحة 126. ISBN 0-201-18483-4. الوسيط |CitationClass= تم تجاهله (مساعدة)
  3. ^ "A History of MTS". Information Technology Digest. 5 (5). الوسيط |CitationClass= تم تجاهله (مساعدة)
  4. ^ Wexelblat, Richard (1981). History of Programming Languages. New York, NY: Academic Press (A subsidiary of Harcourt Brace). صفحة 369. ISBN 0-12-745040-8. مؤرشف من الأصل في 27 مايو 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)
  5. ^ Wexelblat, op. cit., p. 274
  6. ^ Wexelblat, op. cit., p. 258
  7. ^ Wilson, Leslie B.; Clark, Robert G. (1988). Comparative Programming Languages. Wokingham, England: Addison-Wesley. صفحة 126. ISBN 0-201-18483-4. الوسيط |CitationClass= تم تجاهله (مساعدة)
  8. ^ Wilson and Clark, op. cit., p. 52
  9. ^ Wexelblat, op. cit., p. 716