English  

كتب التنفيذ الموجه بالأهداف

اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.

عرض المزيد

التنفيذ الموجه بالأهداف (معلومة)


أحد المفاهيم الأساسية للغة Icon يتمثل في أن هياكل التحكم تستند إلى "نجاح" أو "فشل" التعبيرات، بدلاً من المنطق البولي، كما هو في معظم لغات البرمجة. وفي هذا النموذج، المقارنات البسيطة مثل if a <b لا تعني "إذا قُيّمت العمليات على اليمين بالصحيحة" حيث ستكون في معظم اللغات؛ لكنها بدلاً من ذلك تعني شيءًا أقرب إلى "إذا كانت العمليات على اليمين ناجحة". وفي هذه الحالة ينجح العامل <إذا كانت المقارنة صحيحة، وبهذا تكون النتيجة النهائية هي نفسها. إضافة إلى هذا، يُعيد العامل <وسيطته الثانية إذا نجحت، ما يسمح بأشياء مثل if a <b <c، وهو نوع شائع من المقارنة لا يمكن وضعه مباشرة في معظم لغات البرمجة. تصبح فائدة هذا المفهوم أكثر وضوحًا عندما تضع في اعتبارك أمثلة من العالم الواقعي. ونظرًا لأن لغة Icon تستخدم النجاح أو الفشل لكافة عمليات التحكم في التدفق، فإن هذه التعليمة البرمجية البسيطة:

if a := read() then write(a)

ستنسخ سطرًا واحدًا من الإدخال القياسي إلى الإخراج القياسي. والمهم في هذا المثال هو أن التعليمة البرمجية ستعمل حتى إذا تسبب الأمر read() في حدوث خطأ، على سبيل المثال، إذا لم يوجد الملف. وفي تلك الحالة ستفشل العبارة a := read()، ولن يُطلب أمر الكتابة. يسري النجاح والفشل فيما بين الدوال، ما يعني أن أي فشل داخل أي دالة متداخلة سيتسبب في فشل باقي الدوال التي تتداخل معها أيضًا. على سبيل المثال، يمكننا كتابة برنامج لنسخ ملف إدخال كامل إلى إخراج في سطر واحد:

while write(read())

عندما يفشل الأمر read()، في نهاية الملف على سبيل المثال، سيسري الفشل في السلسلة وسيفشل الأمر write() أيضًا. وصيغة while، بوصفها هيكل تحكم، تتوقف عند الفشل، أي أنها تتوقف عندما يكون الملف فارغًا. وللمقارنة، ادرس مثالاً مشابهًا مكتوبًا بخوارزمية pseudocode المستندة إلى لغة جافا Java:

try { while ((a = read()) != EOF) { write(a); } } catch (Exception e) { // do nothing, exit the loop }

في هذه الحالة هناك مقارنتان مطلوبتان، واحدة لنهاية الملف (EOF) والأخرى لكافة الأخطاء الأخرى. ونظرًا لأن لغة Java لا تسمح بمقارنة الأخطاء كعناصر منطقية، كما هو الحال في لغة Icon، فيجب استخدام صيغة try/catch المطولة كبديل. كما أن محاولة استخدام الكتل تفرض تأثيرات سلبية على الأداء لمجرد استخدامها، حتى إذا لم تحدث أي أخطاء، وهي تكلفة موزعة تتجنبها لغة Icon. تشير لغة Icon إلى هذا المفهوم بأنه تنفيذ موجه بالأهداف، حيث يشير إلى الطريقة التي يستمر بها التنفيذ حتى يتحقق هدف ما. وفي المثال السابق، يتمثل الهدف في قراءة الملف بكامله؛ ويتواصل نجاح أمر القراءة طالما أن هناك المزيد من المعلومات المطلوب قراءتها، بينما يفشل عندما لا تكون هناك معلومات. وهكذا تتم برمجة الهدف مباشرة في اللغة، بدلاً من استخدام عبارات لفحص التعليمات البرمجية العائدة أو البنيات المماثلة.

المصدر: wikipedia.org