البرمجة التصريحية
في علوم الحاسوب ، البرمجة التصريحية هي نموذج برمجي يعبر عن منطق الحساب دون وصف تدفق التحكم فيه بشكل كامل . [ 1 ]
تتيح اللغات التي تسمح بهذا الأسلوب للمطور تقليل الآثار الجانبية أو إزالتها تمامًا من خلال وصف ما يجب أن يحققه البرنامج في سياق مجال المشكلة ، بدلًا من وصف كيفية تحقيقه بشكل كامل كسلسلة من أساسيات لغة البرمجة (حيث تُترك كيفية التنفيذ لتطبيق اللغة ). وهذا على النقيض من البرمجة الإجرائية ، التي تُنفذ الخوارزميات بخطوات صريحة. [ 2 ] [ 3 ]
قد تعتبر البرمجة التصريحية البرامج بمثابة نظريات لمنطق رسمي ، والحسابات بمثابة استنتاجات في تلك النظرية المنطقية. وتسهل البرمجة التصريحية أحيانًا كتابة البرامج المتوازية . [ 4 ]
تشمل نماذج لغات التصريح الشائعة البرمجة المنطقية (مثل Prolog و Datalog وبرمجة مجموعة الإجابات ) وأنظمة النمذجة الجبرية .
تعريف
يُعرَّف البرمجة التصريحية عادةً بأنها أي نمط برمجي غير إجرائي. وتحاول بعض التعريفات الشائعة الأخرى تعريفها بمجرد مقارنتها بالبرمجة الإجرائية. على سبيل المثال:
- برنامج عالي المستوى يصف ما يجب أن تقوم به عملية حسابية.
- أي لغة برمجة تفتقر إلى الآثار الجانبية ، أو بشكل أكثر تحديدًا، تتمتع بشفافية مرجعية .
- لغة ذات توافق واضح مع المنطق الرياضي . [ 5 ]
تتداخل هذه التعريفات بشكل كبير.
البرمجة التصريحية هي أسلوب برمجة غير إجرائي، حيث تصف البرامج النتائج المرجوة دون سرد الأوامر أو الخطوات المطلوبة صراحةً. وتتميز لغات البرمجة المنطقية بأسلوبها التصريحي في الغالب. في البرمجة المنطقية، تتكون البرامج من جمل مكتوبة بصيغة منطقية ، وتستخدم العمليات الحسابية هذه الجمل لحل المشكلات، والتي تُكتب بدورها بصيغة منطقية.
في لغة برمجة وظيفية خالصة ، مثل هاسكل ، تكون جميع الدوال بلا آثار جانبية ، وتُمثَّل تغييرات الحالة فقط كدوال تُحوِّل الحالة، والتي تُمثَّل صراحةً ككائن من الدرجة الأولى في البرنامج. على الرغم من أن اللغات الوظيفية الخالصة غير إجرائية، إلا أنها غالبًا ما تُتيح إمكانية وصف تأثير الدالة كسلسلة من الخطوات. تدعم لغات وظيفية أخرى، مثل ليسب وأو كامل وإرلانج ، مزيجًا من البرمجة الإجرائية والوظيفية.
بعض لغات البرمجة المنطقية، مثل Prolog ، ولغات استعلام قواعد البيانات ، مثل SQL ، على الرغم من كونها تصريحية من حيث المبدأ، إلا أنها تدعم أيضًا أسلوب البرمجة الإجرائي.
النماذج الفرعية
البرمجة التصريحية هي مصطلح شامل يتضمن عددًا من نماذج البرمجة الأكثر شهرة .
البرمجة المقيدة
تُحدد البرمجة المقيدة العلاقات بين المتغيرات في صورة قيود تُحدد خصائص الحل المستهدف. ويتم حل مجموعة القيود بإعطاء قيمة لكل متغير بحيث يكون الحل متوافقًا مع الحد الأقصى لعدد القيود. غالبًا ما تُكمل البرمجة المقيدة نماذج برمجية أخرى: البرمجة الوظيفية، والمنطقية، وحتى الإجرائية.
اللغات الهجينة
تُحدد ملفات Makefiles، على سبيل المثال، التبعيات بطريقة تصريحية، [ 6 ] ولكنها تتضمن أيضًا قائمةً إجرائيةً بالإجراءات المطلوب تنفيذها. وبالمثل، يُحدد yacc قواعد نحوية خالية من السياق بطريقة تصريحية، ولكنه يتضمن مقتطفات برمجية من لغة مضيفة، والتي عادةً ما تكون إجرائية (مثل لغة C ).
البرمجة المنطقية
تعتمد لغات البرمجة المنطقية، مثل برولوج وداتالوغ وبرمجة مجموعات الإجابات ، على إثبات أن الهدف هو نتيجة منطقية للبرنامج، أو على إثبات صحة الهدف في نموذج مُعرَّف بواسطة البرنامج. تعتمد برولوج على اختزال الأهداف إلى أهداف فرعية، من أعلى إلى أسفل باستخدام الاستدلال العكسي ، بينما تعتمد معظم أنظمة داتالوغ على الاستدلال الأمامي . تستخدم برامج مجموعات الإجابات عادةً خوارزميات حل SAT لإنشاء نموذج للبرنامج.
النمذجة
يمكن تنفيذ نماذج الأنظمة الفيزيائية، أو تمثيلاتها الرياضية، باستخدام لغة برمجة وصفية. تحتوي هذه اللغة على عدد من المعادلات، لا أوامر تنفيذية، تصف العلاقات السلوكية. عندما يُعبَّر عن النموذج بهذه الصيغة، يصبح الحاسوب قادرًا على إجراء عمليات جبرية لصياغة خوارزمية الحل الأمثل. عادةً ما تُفرض السببية الرياضية على حدود النظام الفيزيائي، بينما يكون الوصف السلوكي للنظام نفسه وصفيًا أو غير سببي. تشمل لغات وبيئات النمذجة الوصفية Analytica و Modelica و Simile . [ 7 ]
أمثلة
مقدمة
Prolog (1972) تعني "البرمجة في المنطق". تم تطويرها للإجابة على أسئلة اللغة الطبيعية ، [ 8 ] باستخدام حل SL [ 9 ] لاستنتاج الإجابات على الاستعلامات ولتحليل وإنشاء جمل اللغة الطبيعية.
تتكون لبنات بناء برنامج برولوج من الحقائق والقواعد . إليك مثال بسيط:
قط ( توم ). % توم قط. فأر ( جيري ). % جيري فأر.حيوان ( X ) :- قط ( X ). % كل قط حيوان حيوان ( X ) : - فأر ( X ). % كل فأر حيوانكبير ( X ) :- قط ( X ). % كل قط كبير صغير ( X ) :- فأر ( X ). % كل فأر صغيريأكل ( س ، ص ) :- فأر ( س )، جبن ( ص ). % كل فأر يأكل كل جبن. يأكل ( س ، ص ) :- كبير ( س )، صغير ( ص ). % كل كائن كبير يأكل كل كائن صغير.بالنظر إلى هذا البرنامج، ينجح الاستعلام ، بينما يفشل. علاوة على ذلك، ينجح الاستعلام مع استبدال الإجابة .eat(tom,jerry)eat(jerry,tom)eat(X,jerry)X=tom
تُنفّذ لغة برولوج البرامج من أعلى إلى أسفل، مستخدمةً حلّ SLD للاستدلال العكسي ، مُختزلةً الأهداف إلى أهداف فرعية. في هذا المثال، تستخدم القاعدة الأخيرة من البرنامج لاختزال هدف الإجابة على الاستعلام إلى هدفين فرعيين: أولهما إيجاد قيمة X بحيث يتحقق الشرط، ثم إثبات تحقق الشرط. وتُكرّر استخدام القواعد لاختزال الأهداف الفرعية إلى أهداف فرعية أخرى، حتى تنجح في النهاية في توحيد جميع الأهداف الفرعية مع الحقائق في البرنامج. تُعامل استراتيجية الاستدلال العكسي هذه، واختزال الأهداف، القواعد في البرامج المنطقية كإجراءات، مما يجعل برولوج لغة برمجة تصريحية وإجرائية في آنٍ واحد . [ 10 ]eat(X,jerry)big(X)small(jerry)
تم تسليط الضوء على النطاق الواسع لتطبيقات Prolog في كتاب عام Prolog، [ 11 ] احتفالًا بالذكرى الخمسين لـ Prolog.
داتالوج
تعود أصول لغة داتالوج إلى بدايات البرمجة المنطقية، ولكن تم تحديدها كمجال منفصل حوالي عام 1977. من الناحية التركيبية والدلالية ، تُعتبر داتالوج مجموعة فرعية من لغة برولوج. ولكن نظرًا لافتقارها إلى المصطلحات المركبة ، فهي ليست لغة كاملة تورينج .
معظم أنظمة Datalog تنفذ البرامج من الأسفل إلى الأعلى، باستخدام القواعد للاستدلال إلى الأمام ، واستخلاص حقائق جديدة من الحقائق الموجودة، والإنهاء عندما لا توجد حقائق جديدة يمكن استخلاصها، أو عندما تتوحد الحقائق المستخلصة مع الاستعلام.
تم تطبيق Datalog على مشاكل مثل تكامل البيانات ، واستخراج المعلومات ، والشبكات ، والأمن ، والحوسبة السحابية ، والتعلم الآلي . [ 12 ] [ 13 ]
برمجة مجموعة الإجابات
تطورت برمجة مجموعات الإجابات (ASP) في أواخر التسعينيات، استنادًا إلى دلالات النموذج المستقر (مجموعة الإجابات) في البرمجة المنطقية. ومثل داتالوج، فهي مجموعة فرعية من برولوج؛ ولأنها تفتقر إلى المصطلحات المركبة، فهي ليست كاملة تورينج.
تقوم معظم تطبيقات ASP بتنفيذ البرنامج عن طريق وضع أساس البرنامج أولاً، واستبدال جميع المتغيرات في القواعد بالثوابت بجميع الطرق الممكنة، ثم استخدام محلل SAT اقتراحي، مثل خوارزمية DPLL ، لإنشاء نموذج واحد أو أكثر من نماذج البرنامج.
تتجه تطبيقاتها نحو حل مشاكل البحث الصعبة وتمثيل المعرفة . [ 14 ] [ 15 ]
انظر أيضاً
مراجع
- ↑ لويد، جيه دبليو (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 .
- ↑ تشاكرافارتي، مانويل إم تي (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.
- البرمجة التصريحية
- نماذج البرمجة
