سؤال

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

أنا مهتم برؤية بعض أنماط التصميم الشائعة في لغات أخرى مثل Forth وIcon وLisp وما إلى ذلك.سيكون من الرائع تقديم وصف موجز لكيفية ظهورها وسبب الحاجة إليها في اللغة.ربما مقارنة قصيرة بلغة أخرى تحل هذه المشكلة بدون نمط تصميمي.

هل كانت مفيدة؟

المحلول

تسمى أنماط التصميم أحيانًا "التعابير".في اللغات غير OO (C، Forth، COBOL، وما إلى ذلك) فهي مجرد "الطرق المعتادة للقيام بالأشياء".في بعض الأحيان، يطلق عليهم "الخوارزميات".كل لغة (في الواقع، كل تخصص) لديها أنماط من الحلول التصميمية.

إذا كنت قد رأيت شيئًا ما مرتين أو ثلاث مرات، فقد رأيت نمطًا.إذا تمكنت من وصف السياق والمشكلة والحل والعواقب، فقد رفعت النمط من شيء غامض إلى شيء ملموس ومحدد.

في اللغات غير OO، لا تتم تسمية الأنماط وفهرستها غالبًا.لا أعرف لماذا سيكون هذا هو الحال، يبدو أن الأمر كذلك.

نصائح أخرى

لنمط التصميم في LISP، يمكنك أن تقرأ هذا, بقلم بيتر نورفيج.

نقلا عن هذه الشريحة:

16 من أنماط التصميم الـ 23 إما غير مرئية أو أبسط

لا يُقصد من أنماط التصميم أن تكون مرتبطة بأي لغة.إنها حلول أكثر عمومية للمشاكل الشائعة.

في Lisp، بدلاً من أنماط التصميم التي تستخدمها:

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

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

المندوبون والأحداث في C# و.Net يجعلون من السهل تنفيذ نمط المراقب, ، لأنه شائع الاستخدام، على سبيل المثال.للتعامل مع أحداث واجهة المستخدم الرسومية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top