المكتبة القياسية

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

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

في العديد من لغات البرمجة، غالبًا ما تمتلك المكتبة القياسية مساحة أسماء خاصة بها. على سبيل المثال، تستخدم لغات C++ و D و Ruststd::* مساحة الأسماء القياسية للمكتبة القياسية. بينما تستخدم لغة C# مساحة الأسماء القياسية للمكتبة القياسية ، وتستخدم لغة Java مساحة الأسماء القياسية للمكتبة القياسية، ومساحة الأسماء القياسية للمكتبة القياسية. مع ذلك، في بعض اللغات مثل Python و Go ، لا توجد مساحة أسماء قياسية للمكتبة أو بادئة مشتركة للوحدات النمطية التابعة لها.System.*java.*javax.*jdk.*

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

يزداد الغموض في بعض اللغات عند تعريف بنيات اللغة الأساسية بمصطلحات مكتبتها القياسية. فعلى سبيل المثال، تُعرّف جافا سلسلة نصية حرفية كمثال على فئة معينة java.lang.String. وتُعرّف سمول توك تعبير دالة مجهولة (كتلة برمجية) كمثال على فئة من مكتبتها BlockContext. أما سكيم، فلا تُحدد الأجزاء التي يجب تنفيذها كلغة أساسية أو مكتبة قياسية.

محتويات

قد تتضمن المكتبة القياسية، بحسب البنى المتاحة في اللغة الأساسية، ما يلي:

تشمل الوظائف الشائعة ما يلي:

الفلسفات

تتباين فلسفات تصميم المكتبات القياسية بشكل كبير. على سبيل المثال، كتب بيارن ستروستروب ، مصمم لغة C++ :

ما الذي ينبغي أن تتضمنه مكتبة C++ القياسية؟ يتمثل أحد الأهداف المثالية في أن يتمكن المبرمج من العثور على كل فئة ودالة وقالب وما إلى ذلك، ذات أهمية وقيمة معقولة، في مكتبة واحدة. ومع ذلك، فإن السؤال هنا ليس "ما الذي ينبغي أن تتضمنه مكتبة ما ؟" بل "ما الذي ينبغي أن تتضمنه المكتبة القياسية ؟". تُعد الإجابة "كل شيء!" تقريبًا أوليًا معقولًا للإجابة على السؤال الأول، ولكن ليس على الثاني. المكتبة القياسية هي شيء يجب على كل مطور توفيره حتى يتمكن كل مبرمج من الاعتماد عليها. [ 1 ]

يشير هذا إلى مكتبة قياسية صغيرة نسبيًا، تحتوي فقط على البنى التي قد يحتاجها "كل مبرمج" بشكل معقول عند بناء مجموعة كبيرة من البرامج. هذه هي الفلسفة المتبعة في المكتبات القياسية للغتين C و C++ . ونتيجة لذلك، فإن المكتبة القياسية للغة C والمكتبة القياسية للغة C++ أصغر حجمًا ونطاقًا بشكل ملحوظ مقارنةً، على سبيل المثال، بالمكتبة القياسية للغة Java والمكتبة القياسية للغة C# ، اللتين تتمتعان بقدرات أوسع.

في المقابل، تبنى غيدو فان روسوم ، مصمم لغة بايثون ، رؤية أكثر شمولية للمكتبة القياسية. تسعى بايثون إلى تقديم لغة برمجة سهلة البرمجة، كائنية التوجه، وعالية المستوى. في دليل بايثون التعليمي، كتب:

تعتمد لغة بايثون على فلسفة "البطاريات المضمنة". ويتجلى ذلك بوضوح من خلال القدرات المتطورة والقوية لحزمها الكبيرة. [ 2 ]

يستعرض فان روسوم مكتبات لمعالجة XML و XML-RPC ورسائل البريد الإلكتروني والترجمة، وهي ميزات لا تتضمنها مكتبة C++ القياسية . يُلاحظ هذا النهج المختلف غالبًا في لغات البرمجة النصية (مثل بايثون وروبي ) أو اللغات التي تستخدم آلة افتراضية ، مثل جافا أو لغات إطار عمل .NET . في C++، لا تُعد هذه الميزات جزءًا من المكتبة القياسية، بل تُضمّن في مكتبات أخرى، مثل Boost أو POCO . أما في جافا، فقد نُقلت المكتبات القياسية السابقة Java Platform وEnterprise Edition (التي تُعرف الآن باسم Jakarta EE) و JavaFX إلى مكتبات مستقلة منفصلة.

أمثلة

مراجع

  1. بيارن ستروستروب. لغة البرمجة سي++ . الطبعة الثالثة. أديسون-ويسلي، 1997
  2. غيدو فان روسوم..