البرمجة التصريحية
في علوم الحاسوب ، البرمجة التصريحية هي نموذج برمجي يعبر عن منطق الحساب دون وصف تدفق التحكم فيه بشكل كامل . [ 1 ]
يركز هذا النموذج على تجريد البرنامج بما يتجاوز ترتيب التنفيذ. وهذا يستلزم استخدام لغة برمجة عالية المستوى .
تتيح اللغات التي تسمح بهذا الأسلوب للمطور تقليل الآثار الجانبية أو إزالتها تمامًا من خلال وصف ما يجب أن يحققه البرنامج في سياق مجال المشكلة ، بدلاً من وصف كيفية تحقيقه بشكل كامل كسلسلة من أساسيات لغة البرمجة (حيث تُترك كيفية التنفيذ لتطبيق اللغة ). وتختلف البرمجة التصريحية عن البرمجة الإجرائية ، التي تُنفذ الخوارزميات بخطوات صريحة. [ 2 ] [ 3 ]
تمامًا كما هو الحال في نموذج البرمجة الوظيفية ، فإن تغيير المتغيرات لا يتوافق مع النموذج التصريحي لأنه ينطوي على ترتيب تنفيذ إلزامي .
قد تعتبر البرمجة التصريحية البرامج بمثابة نظريات لمنطق رسمي ، والحسابات بمثابة استنتاجات في تلك النظرية المنطقية. وتسهل البرمجة التصريحية أحيانًا كتابة البرامج المتوازية . [ 4 ]
تشمل نماذج لغات التصريح الشائعة البرمجة المنطقية (مثل Prolog و Datalog وبرمجة مجموعة الإجابات ) وأنظمة النمذجة الجبرية .
تدعم بعض لغات البرمجة المنطقية، مثل لغة برولوج ، ولغات استعلام قواعد البيانات ، مثل لغة SQL ، على الرغم من كونها لغات تصريحية من حيث المبدأ، أسلوب البرمجة الإجرائية أيضًا. [ 5 ]
تعريفات أخرى:
- أي لغة برمجة تفتقر إلى الآثار الجانبية ، أو بشكل أكثر تحديدًا، تتمتع بشفافية مرجعية .
- لغة ذات توافق واضح مع المنطق الرياضي . [ 6 ]
النماذج الفرعية
البرمجة التصريحية هي مصطلح شامل يتضمن عددًا من نماذج البرمجة الأكثر شهرة .
البرمجة الوظيفية
في لغة برمجة وظيفية خالصة ، مثل هاسكل ، تكون جميع الدوال بلا آثار جانبية ، وتُمثَّل تغييرات الحالة فقط كدوال تُحوِّل الحالة، والتي تُمثَّل صراحةً ككائن من الدرجة الأولى في البرنامج. على الرغم من أن اللغات الوظيفية الخالصة غير إجرائية، إلا أنها غالبًا ما تُتيح إمكانية وصف تأثير الدالة كسلسلة من الخطوات.
البرمجة المقيدة
تُحدد البرمجة المقيدة العلاقات بين المتغيرات في صورة قيود تُحدد خصائص الحل المستهدف. ويتم حل مجموعة القيود بإعطاء قيمة لكل متغير بحيث يكون الحل متوافقًا مع الحد الأقصى لعدد القيود. غالبًا ما تُكمل البرمجة المقيدة نماذج برمجية أخرى: البرمجة الوظيفية، والمنطقية، وحتى الإجرائية.
اللغات الهجينة
على سبيل المثال، تحدد ملفات Makefiles التبعيات بطريقة تصريحية، [ 7 ] ولكنها تتضمن أيضًا قائمة أوامر بالإجراءات المطلوب تنفيذها. وبالمثل، يحدد yacc قواعد نحوية خالية من السياق بطريقة تصريحية، ولكنه يتضمن مقتطفات برمجية من لغة مضيفة، والتي عادةً ما تكون أوامر (مثل لغة C ).
البرمجة المنطقية
تتميز لغات البرمجة المنطقية بأسلوب برمجة تصريحي في الغالب. في البرمجة المنطقية، تتكون البرامج من جمل معبر عنها بصيغة منطقية ، وتستخدم الحسابات هذه الجمل لحل المشكلات، والتي تُعبر عنها أيضًا بصيغة منطقية.
تعتمد لغات البرمجة المنطقية، مثل برولوج وداتالوغ وبرمجة مجموعات الإجابات ، على إثبات أن الهدف هو نتيجة منطقية للبرنامج، أو على إثبات صحة الهدف في نموذج مُعرَّف بواسطة البرنامج. تعتمد برولوج على اختزال الأهداف إلى أهداف فرعية، من أعلى إلى أسفل باستخدام الاستدلال العكسي ، بينما تعتمد معظم أنظمة داتالوغ على الاستدلال الأمامي . تستخدم برامج مجموعات الإجابات عادةً خوارزميات حل SAT لإنشاء نموذج للبرنامج.
النمذجة
يمكن تنفيذ نماذج الأنظمة الفيزيائية، أو تمثيلاتها الرياضية، باستخدام لغة برمجة وصفية. تحتوي هذه اللغة على عدد من المعادلات، لا على أوامر إجرائية، تصف العلاقات السلوكية. عندما يُعبَّر عن النموذج بهذه الصيغة، يصبح الحاسوب قادرًا على إجراء عمليات جبرية لصياغة خوارزمية الحل الأمثل. عادةً ما تُفرض السببية الرياضية على حدود النظام الفيزيائي، بينما يكون الوصف السلوكي للنظام نفسه وصفيًا أو غير سببي. تشمل لغات وبيئات النمذجة الوصفية Analytica و Modelica و Simile . [ 8 ]
أمثلة
مقدمة
Prolog (1972) تعني "البرمجة في المنطق". تم تطويرها للإجابة على أسئلة اللغة الطبيعية ، [ 9 ] باستخدام حل SL [ 10 ] لاستنتاج الإجابات على الاستعلامات ولتحليل وإنشاء جمل اللغة الطبيعية.
تتكون لبنات بناء برنامج برولوج من الحقائق والقواعد . إليك مثال بسيط:
قط ( توم ). % توم قط. فأر ( جيري ). % جيري فأر.حيوان ( X ) :- قط ( X ). % كل قط حيوان حيوان ( X ) : - فأر ( X ). % كل فأر حيوانكبير ( X ) :- قط ( X ). % كل قط كبير صغير ( X ) :- فأر ( X ). % كل فأر صغيريأكل ( س ، ص ) :- فأر ( س )، جبن ( ص ). % كل فأر يأكل كل جبن. يأكل ( س ، ص ) :- كبير ( س )، صغير ( ص ). % كل كائن كبير يأكل كل كائن صغير.بالنظر إلى هذا البرنامج، ينجح الاستعلام ، بينما يفشل. علاوة على ذلك، ينجح الاستعلام مع استبدال الإجابة .eat(tom,jerry)eat(jerry,tom)eat(X,jerry)X=tom
تُنفّذ لغة برولوج البرامج من أعلى إلى أسفل، مستخدمةً حلّ SLD للاستدلال العكسي ، مُختزلةً الأهداف إلى أهداف فرعية. في هذا المثال، تستخدم القاعدة الأخيرة من البرنامج لاختزال هدف الإجابة على الاستعلام إلى هدفين فرعيين: أولهما إيجاد قيمة X بحيث يتحقق الشرط، ثم إثبات تحقق الشرط. وتُكرّر استخدام القواعد لاختزال الأهداف الفرعية إلى أهداف فرعية أخرى، حتى تنجح في النهاية في توحيد جميع الأهداف الفرعية مع الحقائق في البرنامج. تُعامل استراتيجية الاستدلال العكسي هذه، واختزال الأهداف، القواعد في البرامج المنطقية كإجراءات، مما يجعل برولوج لغة برمجة تصريحية وإجرائية في آنٍ واحد . [ 11 ]eat(X,jerry)big(X)small(jerry)
تم تسليط الضوء على النطاق الواسع لتطبيقات Prolog في كتاب عام Prolog، [ 12 ] احتفالًا بالذكرى الخمسين لـ Prolog.
داتالوج
تعود أصول لغة داتالوج إلى بدايات البرمجة المنطقية، ولكن تم تحديدها كمجال منفصل حوالي عام 1977. من الناحية التركيبية والدلالية ، تُعتبر داتالوج مجموعة فرعية من لغة برولوج. ولكن نظرًا لافتقارها إلى المصطلحات المركبة ، فهي ليست لغة كاملة تورينج .
معظم أنظمة Datalog تنفذ البرامج من الأسفل إلى الأعلى، باستخدام القواعد للاستدلال إلى الأمام ، واستخلاص حقائق جديدة من الحقائق الموجودة، والإنهاء عندما لا توجد حقائق جديدة يمكن استخلاصها، أو عندما تتوحد الحقائق المستخلصة مع الاستعلام.
تم تطبيق Datalog على مشاكل مثل تكامل البيانات ، واستخراج المعلومات ، والشبكات ، والأمن ، والحوسبة السحابية ، والتعلم الآلي . [ 13 ] [ 14 ]
برمجة مجموعة الإجابات
تطورت برمجة مجموعات الإجابات (ASP) في أواخر التسعينيات، استنادًا إلى دلالات النموذج المستقر (مجموعة الإجابات) في البرمجة المنطقية. ومثل داتالوج، فهي مجموعة فرعية من برولوج؛ ولأنها تفتقر إلى المصطلحات المركبة، فهي ليست كاملة تورينج.
تقوم معظم تطبيقات ASP بتنفيذ البرنامج عن طريق وضع أساس البرنامج أولاً، واستبدال جميع المتغيرات في القواعد بالثوابت بجميع الطرق الممكنة، ثم استخدام محلل SAT اقتراحي، مثل خوارزمية DPLL ، لإنشاء نموذج واحد أو أكثر من نماذج البرنامج.
تتجه تطبيقاتها نحو حل مشاكل البحث الصعبة وتمثيل المعرفة . [ 15 ] [ 16 ]
انظر أيضاً
مراجع
- ↑ لويد، جيه دبليو (19-22 سبتمبر 1994). "المزايا العملية للبرمجة التصريحية" (ملف PDF) . في: ألبوينتي، ماريا؛ باربوتي، روبرتو؛ راموس، إيسيدرو (محررون). مؤتمر GULP-PRODE'94 المشترك لعام 1994 حول البرمجة التصريحية . المجلد الأول . بينيسكولا ، إسبانيا. الصفحات 3-17 .
- ↑ سيبستا، روبرت (2016). مفاهيم لغات البرمجة . بوسطن: بيرسون. ISBN 978-0-13-394302-3. OCLC 896687896 .
- ↑ "البرمجة الإجرائية: نظرة عامة على أقدم نموذج برمجي" . دليل IONOS الرقمي . 21-05-2021. مؤرشف من الأصل في 03-05-2022 . تم الاطلاع عليه في 23-05-2023 .
- ↑ "DAMP 2009: ورشة عمل حول الجوانب التصريحية للبرمجة متعددة النوى" . Cse.unsw.edu.au. 20 يناير 2009. مؤرشف من الأصل في 13 سبتمبر 2013. تم الاطلاع عليه في 15 أغسطس 2013 .
- ↑ "الإجراءات المخزنة في لغة SQL" . www.w3schools.com . تم الاطلاع عليه بتاريخ 2026-08-02 .
- ↑ تشاكرافارتي، مانويل إم تي (14 فبراير 1997). حول التنفيذ المتوازي المكثف للبرامج التصريحية (أطروحة دكتوراه). جامعة برلين التقنية . مؤرشفة من الأصل في 23 سبتمبر 2015. تم الاطلاع عليها في 26 فبراير 2015. في هذا السياق، يتمثل معيار تسمية لغة برمجة ما بالتصريحية في وجود تطابق واضح ومثبت رياضياً بين اللغة والمنطق الرياضي ،
بحيث يمكن بناء دلالات تصريحية للغة على نموذج المنطق أو نظرية إثباته (أو كليهما).
- ↑ "نظرة عامة على خطوط DSL" . مؤرشف من الأصل في 23 أكتوبر 2007.
- ↑ "النمذجة التصريحية" . المحاكاة. مؤرشف من الأصل في 11 أغسطس 2003. تم الاطلاع عليه في 15 أغسطس 2013 .
- ↑ "ميلاد لغة برولوج" (ملف PDF) . نوفمبر 1992. مؤرشف (ملف PDF) من الأصل بتاريخ 2015-04-02 . تم الاطلاع عليه بتاريخ 2022-05-25 .
- ↑ روبرت كوالسكي؛ دونالد كوهنر (شتاء 1971). "التحليل الخطي باستخدام دالة الاختيار" (ملف PDF) . الذكاء الاصطناعي . 2 ( 3-4 ): 227-260 . doi : 10.1016/0004-3702(71)90012-9 . ISSN 0004-3702 . مؤرشف (ملف PDF) من الأصل بتاريخ 23-09-2015 . تم الاطلاع عليه بتاريخ 13-08-2023 .
- ↑ روبرت كوالسكي، منطق المسند كلغة برمجة، مؤرشف في 7 فبراير 2016 على موقع Wayback Machine، المذكرة رقم 70، قسم الذكاء الاصطناعي، جامعة إدنبرة، 1973. موجود أيضًا في وقائع مؤتمر IFIP، ستوكهولم، دار نشر نورث هولاند، 1974، الصفحات 569-574.
- ↑ وارن، د.س. (2023). "مقدمة إلى لغة برولوج". في: وارن، د.س.؛ دال، ف.؛ إيتر، ت.؛ هيرمينجيلدو، م.ف.؛ كوالسكي، ر.؛ روسي، ف. (محررون). برولوج: الخمسون عامًا القادمة . سلسلة محاضرات في علوم الحاسوب (LNCS). المجلد 13900. سبرينغر، تشام. الصفحات 3-19 . doi : 10.1007/978-3-031-35254-6_1 . ISBN 978-3-031-35253-9.
- ↑ هوانغ، شان شان؛ غرين، تود جيه؛ لو، بون ثاو (12-16 يونيو 2011). داتا لوج والتطبيقات الناشئة (ملف PDF) . سيغمود 2011. أثينا، اليونان: رابطة آلات الحوسبة. ISBN 978-1-4503-0661-4تمت أرشفة الملف (PDF) من النسخة الأصلية بتاريخ 22 أكتوبر 2020. تم الاطلاع عليه بتاريخ 13 أغسطس 2023 .
- ↑ مي، هونغ يوان؛ تشين، غوانغ هوي؛ شو، مين جي؛ إيسنر، جيسون (2020). "النمذجة الزمنية العصبية عبر الزمن: نمذجة زمنية مستنيرة من خلال المواصفات المنطقية". وقائع المؤتمر الدولي للتعلم الآلي 2020. arXiv : 2006.16723 .
- ↑ بارال، تشيتا (2003). تمثيل المعرفة، والاستدلال، وحل المشكلات التصريحي . مطبعة جامعة كامبريدج. ISBN 978-0-521-81802-5.
- ↑ جيلفوند، مايكل (2008). "مجموعات الإجابات" . في: فان هارميلين، فرانك؛ ليفشيتز، فلاديمير؛ بورتر، بروس (محررون). دليل تمثيل المعرفة . إلسيفير. ص 285-316 . ISBN 978-0-08-055702-1.تمت أرشفة الملف بصيغة PDF بتاريخ 3 مارس 2016 على موقع Wayback Machine .
روابط خارجية
- فرانس كوينين. خصائص لغات البرمجة التصريحية . 1999.
- روبرت هاربر .
- أولوف تورجرسون. ملاحظة حول نماذج البرمجة التصريحية ومستقبل البرمجة التعريفية . 1996.
- البرمجة التصريحية
- نماذج البرمجة
