البرمجة القائمة على البيانات

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

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

يؤدي تكييف أساليب تصميم أنواع البيانات المجردة مع البرمجة كائنية التوجه إلى تصميم قائم على البيانات. [ 2 ] يُستخدم هذا النوع من التصميم أحيانًا في البرمجة كائنية التوجه لتعريف الفئات أثناء تصميم البرنامج.

التطبيقات

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

بعض لغات البرمجة القائمة على البيانات كاملة تورينج ، مثل AWK وحتى sed، بينما بعضها الآخر محدود للغاية عمدًا، لا سيما فيما يتعلق بالتصفية. ومن الأمثلة المتطرفة على ذلك pcap ، التي تقتصر وظيفتها على التصفية فقط، حيث أن الإجراء الوحيد فيها هو "التقاط". أما sieve ، فهي أقل تطرفًا، إذ تحتوي على مرشحات وإجراءات، ولكنها في معيارها الأساسي لا تحتوي على متغيرات أو حلقات تكرار، وتسمح فقط بعبارات التصفية غير المعتمدة على الحالة: حيث تتم معالجة كل عنصر إدخال بشكل مستقل. تسمح المتغيرات بالحالة، مما يتيح إجراء عمليات تعتمد على أكثر من عنصر إدخال واحد، مثل التجميع (جمع المدخلات) أو التقييد (السماح بحد أقصى 5 رسائل بريد إلكتروني في الساعة من كل مرسل، أو الحد من رسائل السجل المتكررة).

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

الفوائد والمشاكل

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

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

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

اللغات

انظر أيضاً

مراجع

  1. 1 2 3 ستوتز، مايكل (19 سبتمبر 2006). "ابدأ مع GAWK: أساسيات لغة AWK" . developerWorks . IBM . مؤرشف من الأصل في 20 مايو 2011. تم الاسترجاع في 23 أكتوبر 2010. غالبًا ما تُسمى لغة AWK لغة تعتمد على البيانات - حيث تصف عبارات البرنامج بيانات الإدخال المراد مطابقتها ومعالجتها بدلاً من سلسلة من خطوات البرنامج .
  2. ويرفس-بروك، ريبيكا ؛ ويلكرسون، برايان (1989). "التصميم الموجه للكائنات: منهج قائم على المسؤولية". وقائع مؤتمر أنظمة ولغات وتطبيقات البرمجة الموجهة للكائنات - OOPSLA '89 . نيويورك: ACM . الصفحات 71-75 . doi : 10.1145/74877.74885 . ISBN  0897913337. S2CID 7372657 . 
  3. "كلوجر" . www.clojure.org . تم الاطلاع عليه بتاريخ 2018-06-05 .
  4. ^ إيروساليمشي، روبرتو. دي فيغيريدو، لويز هنريكي؛ سيليس ، فالديمار (2017/02/03). "الدليل المرجعي لوا 5.3" . www.lua.org . تم الاسترجاع 2018-06-05 .
  • "الجزء المهم هو نقل منطق البرنامج بعيدًا عن هياكل التحكم الثابتة وإلى البيانات."