مكتبة (الحوسبة)

توضيح لتطبيق يستخدم مكتبة libvorbisfile لتشغيل ملف Ogg Vorbis

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

يمكن استخدام المكتبة من قِبل عدة مستخدمين مستقلين (برامج ومكتبات أخرى). وهذا يختلف عن الموارد المُعرَّفة في برنامج، والتي عادةً ما تكون حكرًا على ذلك البرنامج. عندما يستخدم مستخدمٌ ما موردًا من المكتبة، فإنه يستفيد من قيمتها دون الحاجة إلى تنفيذها بنفسه. تُشجع المكتبات على إعادة استخدام البرمجيات بطريقة معيارية . إذ يمكن للمكتبات استخدام مكتبات أخرى، مما يُؤدي إلى تسلسل هرمي للمكتبات في البرنامج.

عند كتابة برنامج يستخدم مكتبة برمجية، لا يحتاج المبرمج إلا إلى معرفة كيفية استخدام واجهة برمجة التطبيقات (API) الخاصة بتلك المكتبة دون الحاجة إلى فهم آلياتها الداخلية. على سبيل المثال، يمكن لبرنامج ما استخدام مكتبة تُجرّد استدعاءً معقدًا للنظام ، بحيث يتمكن المبرمج من استخدام ميزة النظام دون الحاجة إلى إضاعة الوقت في تعلم تفاصيل وظيفة النظام.

تاريخ

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

امرأة تعمل بجوار خزانة ملفات تحتوي على مكتبة البرامج الفرعية على بكرات من الشريط المثقب لجهاز كمبيوتر EDSAC

في عام 1947، تكهن غولدستين وفون نيومان بأنه سيكون من المفيد إنشاء "مكتبة" من البرامج الفرعية لعملهما على جهاز IAS ، وهو حاسوب مبكر لم يكن جاهزًا للعمل في ذلك الوقت. [ 2 ] وقد تصورا مكتبة مادية من تسجيلات الأسلاك المغناطيسية ، حيث يخزن كل سلك منها شفرة حاسوبية قابلة لإعادة الاستخدام. [ 3 ]

استلهم ويلكس وفريقه من فون نيومان، فصمموا حاسوب EDSAC . وكانت مكتبة البرامج الفرعية لهذا الحاسوب موجودة في خزانة ملفات مصنوعة من شريط مثقوب . [ 4 ] وتألفت برامج EDSAC من برنامج رئيسي وسلسلة من البرامج الفرعية المنسوخة من مكتبة البرامج الفرعية. [ 5 ] وفي عام 1951، نشر الفريق أول كتاب مدرسي في البرمجة بعنوان " إعداد البرامج للحاسوب الرقمي الإلكتروني" ، والذي شرح بالتفصيل إنشاء المكتبة والغرض منها. [ 6 ]

تضمنت لغة كوبول "قدرات بدائية لنظام مكتبة" في عام 1959، [ 7 ] لكن جان ساميت وصفها لاحقًا بأنها "مرافق مكتبة غير كافية". [ 8 ]

يحتوي JOVIAL على مجموعة اتصالات (COMPOOL)، وهي عبارة عن مكتبة من ملفات الرأس تقريبًا.

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

بحلول منتصف الستينيات، أصبحت مكتبات النسخ والماكرو للمجمعات شائعة. ومع انتشار نظام IBM System/360 ، أصبحت المكتبات التي تحتوي على أنواع أخرى من عناصر النصوص، مثل معلمات النظام، شائعة أيضاً.

في نظام التشغيل OS/360 من IBM والأنظمة اللاحقة له، يُطلق على هذا اسم مجموعة البيانات المقسمة .

كانت لغة البرمجة الكائنية الأولى ، سيمولا ، التي طُوّرت عام 1965، تدعم إضافة الفئات إلى المكتبات عبر مُصرّفها. [ 10 ] [ 11 ]

الربط

تقوم عملية الربط (أو التجميع ) بحلّ المراجع المعروفة بالرموز (أو الروابط ) من خلال البحث عنها في مواقع مختلفة، بما في ذلك المكتبات المُهيأة. إذا لم يعثر الرابط (أو المُجمِّع) على رمز، فإنه يفشل، ولكن قد يؤدي وجود عدة تطابقات إلى الفشل أو لا.

الربط الثابت هو الربط أثناء عملية البناء ، حيث يتم تضمين الكود التنفيذي للمكتبة في البرنامج. أما الربط الديناميكي فهو الربط أثناء التشغيل ؛ ويتضمن بناء البرنامج بمعلومات تدعم الربط أثناء التشغيل بمكتبة ارتباط ديناميكي (DLL). في حالة الربط الديناميكي، يجب أن يكون ملف DLL متوافق متاحًا للبرنامج أثناء التشغيل، بينما في حالة الربط الثابت، يكون البرنامج مستقلاً.

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

الانتقال

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

فئات

ملف تنفيذي

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

المتغير عبارة عن مكتبة تحتوي على كود مُجمَّع (كود كائن في تسمية IBM) في شكل لا يمكن تحميله بواسطة نظام التشغيل ولكن يمكن قراءته بواسطة الرابط.

ثابت

المكتبة الثابتة هي مكتبة تنفيذية يتم ربطها بالبرنامج أثناء عملية البناء بواسطة رابط (أو أي أداة بناء أخرى تقوم بالربط). [ 13 ] [ 14 ] تُعرف هذه العملية، والملف المستقل الناتج عنها، بالبناء الثابت للبرنامج. قد لا يحتاج البناء الثابت إلى أي إعادة توجيه إضافية إذا تم استخدام الذاكرة الافتراضية ولم تكن هناك حاجة إلى عشوائية تخطيط مساحة العناوين . [ 15 ]

تُسمى المكتبة الثابتة أحيانًا بالأرشيف في الأنظمة الشبيهة بنظام يونكس.

متحرك

يتم ربط المكتبة الديناميكية عند تشغيل البرنامج ، إما عند التحميل أو أثناء التشغيل . وقد صُممت المكتبة الديناميكية بعد المكتبة الثابتة لدعم مرونة أكبر في نشر البرامج .

مصادر

تتكون مكتبة المصادر من شفرة المصدر، وليس من شفرة مُجمّعة.

مشترك

المكتبة المشتركة هي مكتبة تحتوي على شفرة قابلة للتنفيذ مصممة ليتم استخدامها بواسطة برامج حاسوبية متعددة أو مكتبات أخرى أثناء التشغيل ، مع وجود نسخة واحدة فقط من تلك الشفرة في الذاكرة، مشتركة بين جميع البرامج التي تستخدم الشفرة. [ 16 ] [ 17 ] [ 18 ]

هدف

على الرغم من أن مكتبة الكائنات تُعتبر تقنية قديمة في الوقت الحاضر، إلا أنها توفر موارد للبرمجة كائنية التوجه (OOP)، وتُعدّ مكتبة الكائنات الموزعة مكتبة كائنات عن بُعد. ومن الأمثلة على ذلك: COM /DCOM، و SOM /DSOM، وDOE ، و PDO ، والعديد من الأنظمة القائمة على CORBA .

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

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

فصل

تحتوي مكتبة الفئات على فئات يمكن استخدامها لإنشاء كائنات . في لغة جافا ، على سبيل المثال، تُخزَّن الفئات في ملفات JAR ، وتُنشأ الكائنات منها أثناء التشغيل. أما في لغة سمول توك ، فتُعدّ مكتبة الفئات نقطة البداية لصورة النظام التي تشمل حالة البيئة بالكامل، والفئات، وجميع الكائنات المُنشأة. تُخزَّن معظم مكتبات الفئات في مستودع حزم (مثل Maven Central في جافا). ويُحدِّد كود العميل صراحةً التبعيات على المكتبات الخارجية في ملفات تهيئة البناء (مثل ملف Maven Pom في جافا). [ 19 ]

بعيد

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

وقت التشغيل

توفر مكتبة وقت التشغيل إمكانية الوصول إلى بيئة وقت التشغيل المتاحة للبرنامج - المصممة خصيصًا لمنصة الاستضافة .

معيار اللغة

تحدد العديد من لغات البرمجة الحديثة مكتبة قياسية توفر مستوى أساسيًا من الوظائف لبيئة اللغة.

توليد الكود

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

تسمية الملفات

شبيهة بنظام يونكس

في معظم أنظمة يونكس الحديثة ، تُخزَّن ملفات المكتبات في مجلدات مثل `/usr/lib` و` /lib/ /usr/libusr/lib` /usr/local/lib. يبدأ اسم الملف عادةً بـ `/usr/lib` lib، وينتهي بـ `/usr/lib` .aللمكتبات الثابتة ( الأرشيفية ) أو ` /usr/lib` .soللكائنات المشتركة (المكتبات المرتبطة ديناميكيًا). على سبيل المثال، `/usr/lib` libfoo.aو`/usr libfoo.so/lib`.

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

الملفات ذات الامتداد .laهي أرشيفات libtool ؛ وهي غير قابلة للاستخدام من قبل النظام.

نظام التشغيل macOS

يرث نظام macOS اصطلاحات المكتبات الثابتة من نظام BSD ، حيث تُخزَّن المكتبة في .aملف. ويستخدم إما `.org/lib/lib` .soأو .dylib`.org/lib/lib` للمكتبات الديناميكية. مع ذلك، تتكون معظم المكتبات في macOS من "أطر عمل" موضوعة داخل مجلدات خاصة تُسمى " حزم " تُغلِّف الملفات والبيانات الوصفية المطلوبة للمكتبة. على سبيل المثال، Abcيُنفَّذ إطار عمل يُسمى `.org/lib/lib` في حزمة تُسمى `.org/lib/lib` Abc.framework، حيث `.org/lib Abc.framework/Abc/lib` إما ملف المكتبة المرتبط ديناميكيًا أو رابط رمزي إلى ملف المكتبة المرتبط ديناميكيًا في `.org/lib/lib` Abc.framework/Versions/Current/Abc.

ويندوز

غالبًا ما يكون لملف مكتبة الارتباط الديناميكي لنظام التشغيل Windows (DLL) امتداد الملف ، [ 21 ] على الرغم من أنه في بعض الأحيان يتم استخدام امتدادات مختلفة للإشارة إلى المحتوى العام ، على سبيل المثال لمكتبة OLE ..dll.ocx

يمكن أن يكون الملف .libمكتبة ثابتة أو يحتوي على المعلومات اللازمة لبناء تطبيق يستخدم ملف DLL المرتبط به. في الحالة الأخيرة، يجب أن يكون ملف DLL المرتبط موجودًا أثناء التشغيل.

انظر أيضاً

ملحوظات

  1. كان ذلك ممكناً في السابق بين، على سبيل المثال، البرامج الفرعية لـ Ada.

مراجع

  1. باباج، إتش بي (1888-09-12). "المحرك التحليلي" . وقائع الجمعية البريطانية . باث.
  2. غولدستين، هيرمان هـ. (31 ديسمبر 2008). الحاسوب من باسكال إلى فون نيومان . برينستون: مطبعة جامعة برينستون. doi : 10.1515/9781400820139 . ISBN 978-1-4008-2013-9.
  3. غولدستين، هيرمان ؛ فون نيومان، جون (1947). تخطيط وبرمجة المشكلات لجهاز حاسوب إلكتروني (تقرير). معهد الدراسات المتقدمة. الصفحات 21-22 . OCLC 26239859. من المحتمل أن يكون من المهم جدًا تطوير "مكتبة" واسعة من البرامج الفرعية .  
  4. ويلكس، إم. في. (1951). "حاسوب EDSAC" . ورشة العمل الدولية لعام 1951 حول إدارة معارف المتطلبات. معهد مهندسي الكهرباء والإلكترونيات. ص 79. doi : 10.1109/afips.1951.13 . 
  5. كامبل-كيلي، مارتن (سبتمبر 2011). "في مدح 'ويلكس، ويلر، وجيل'"" . اتصالات رابطة آلات الحوسبة . 54 (9): 25– 27. doi : 10.1145/1995376.1995386 . S2CID 20261972 . 
  6. ويلكس، موريس ؛ ويلر، ديفيد ؛ جيل، ستانلي (1951). إعداد البرامج للحاسوب الرقمي الإلكتروني . أديسون-ويسلي. الصفحات 45، 80-91 ، 100. OCLC 641145988 .  
  7. ↑ ويكسلبلات ، ريتشارد (1981). تاريخ لغات البرمجة . سلسلة دراسات ACM. نيويورك، نيويورك: أكاديميك برس (شركة تابعة لهاركورت بريس ). ص 274. ISBN  0-12-745040-8.
  8. ويكسبلات، مرجع سابق. سيتي. ، ص. 258
  9. ويلسون، ليزلي ب.؛ كلارك، روبرت ج. (1988). لغات البرمجة المقارنة . ووكينغهام، إنجلترا: أديسون-ويسلي. ص 126. ISBN  0-201-18483-4.
  10. ويلسون وكلارك، المرجع السابق ، ص 52
  11. ويكسبلات، مرجع سابق. سيتي. ، ص. 716
  12. ديشباندي، براساد (2013). الكشف عن التحولات باستخدام تحليل مخطط استدعاء الدوال (أطروحة). مكتبة جامعة ولاية سان خوسيه. doi : 10.31979/etd.t9xm-ahsc .
  13. "المكتبات الثابتة" . TLDP. مؤرشف من الأصل بتاريخ 2013-07-03 . تم الاطلاع عليه بتاريخ 2013-10-03 .
  14. كامينسكي، دان (2008). "الفصل 3 - الملفات التنفيذية المحمولة وتنسيقات الربط" . هندسة عكسية للبرمجيات باستخدام IDA Pro . إلسيفير. الصفحات 37-66 . doi : 10.1016/b978-1-59749-237-9.00003-x . ISBN  978-1-59749-237-9تم الاطلاع عليه بتاريخ 27-05-2021 .
  15. كولبيرغ، كريستيان؛ هارتمان، جون هـ.؛ بابو، سريديفيا؛ أودوبا، شارث ك. (2003). SLINKY: إعادة تحميل الربط الثابت . مؤتمر USENIX '05. قسم علوم الحاسوب، جامعة أريزونا . مؤرشف من الأصل بتاريخ 23 مارس 2016. تم الاطلاع عليه بتاريخ 17 مارس 2016 .
  16. ليفين، جون ر. (2000). "9. المكتبات المشتركة". الروابط والمحملات . ISBN 1-55860-496-0.
  17. ↑ دليل مبرمجي نظام يونكس V /386 الإصدار 3.2، المجلد 1 (ملف PDF) . برنتيس هول. 1989. ص 8-2 . ISBN  0-13-944877-2.
  18. "المكتبات المشتركة في نظام التشغيل SunOS" (ملف PDF) . الصفحات 1، 3. 
  19. ديتريش، ينس؛ بيرس، ديفيد؛ سترينجر، جاكوب؛ طاهر، أمجد؛ بلينكو، كيلي (2019). "ترقيم إصدارات التبعيات في بيئات الإنتاج". المؤتمر الدولي السادس عشر لجمعية مهندسي الكهرباء والإلكترونيات/رابطة مكائن ​​الحوسبة حول استخراج البيانات من مستودعات البرمجيات (MSR) لعام 2019. الصفحات 349-359 . رمز Bibcode : 2019msr..conf...67D . doi : 10.1109/MSR.2019.00061 . ISBN  978-1-7281-3412-3.
  20. "مكتبة توليد الشفرة" . سورس فورج . مؤرشفة من الأصل بتاريخ ١٢ يناير ٢٠١٠. تم الاطلاع عليها بتاريخ ٣ مارس ٢٠١٠. مكتبة توليد الشفرة البايتية هي واجهة برمجة تطبيقات عالية المستوى لتوليد وتحويل شفرة بايت جافا. تُستخدم هذه المكتبة في البرمجة الموجهة نحو الجوانب، والاختبار، وأطر الوصول إلى البيانات لتوليد كائنات وسيطة ديناميكية واعتراض الوصول إلى الحقول.
  21. بريسناهان، كريستين؛ بلوم، ريتشارد (27-04-2015). دليل دراسة شهادة معهد لينكس الاحترافي LPIC-1: الامتحان 101-400 والامتحان 102-400 . جون وايلي وأولاده (نُشر عام 2015). ص 82. ISBN  9781119021186أُرشف من المصدر الأصلي بتاريخ ٢٤ سبتمبر ٢٠١٥. تم الاطلاع عليه بتاريخ ٣ سبتمبر ٢٠١٥. تُشبه المكتبات المشتركة في لينكس مكتبات الارتباط الديناميكي (DLLs) في ويندوز. عادةً ما تُعرف مكتبات DLLs في ويندوز من خلال امتدادات أسماء الملفات..dll

للمزيد من القراءة