الشبكة العربية لمطوري الألعاب

محترف مشرف عبد اللطيف حاجي علي مشاركة 1

خلال بحثي عن البرمجة التفرعية وجدت هذا المشروع الجميل والذي يحاول أن يأخذ بيد لغة C إلى مستنقع البرمجة التفرعية.
http://supertech.csail.mit.edu/cilk/

اللغة تدعى Cilk وهي تعديل على لغة C لتدعم البرمجة التفرعية بإضافة أربع أو خمس كلمات جديدة.
ما رأيكم؟ هل تفضلون تعديل اللغات الحالية لتدعم البرمجة التفرعية؟ أم تفضلون لغات جديدة مبنية من الأساس على البرمجة التفرعية كـ F#?

عبد اللطيف حاجي علي
مبرمج
In|Framez

خبير مدير وسام البهنسي مشاركة 2

وفي 24 فبراير 2009 06:18 ص، ظهر شبح ابتسامة على وجه عبد اللطيف حاجي علي وهو يقول:

اللغة تدعى Cilk وهي تعديل على لغة C لتدعم البرمجة التفرعية بإضافة أربع أو خمس كلمات جديدة.
ما رأيكم؟ هل تفضلون تعديل اللغات الحالية لتدعم البرمجة التفرعية؟ أم تفضلون لغات جديدة مبنية من الأساس على البرمجة التفرعية كـ F#?

لا أحبذها بصراحة. طريقة البرمجة بـ C و ++C أساساً لا تساعد على البرمجة التفرعية، حيث لا تعلم إن كان للإجراء آثار جانبية أو إن كان قابلاً للنداء من عدة أماكن في نفس الوقت (re-entrant)، ناهيك عن المتغيرات العامة 😖 .
 
لغة #F بالذات هي حالة فريدة بين بقية اللغات الوظيفية كهاسكل وسكيم وإرلانج. فهي لغة وظيفية أولاً، مع دعم للبرمجة التلقينية كما هو الحال في C و ++C. هذا يعني أنك قادر على التعامل مع الكود الموجود حالياً والمكتوب بلغات C و NET. أو بعبارة أخرى ستربح أحسن العالـَمَين. 😄
 
نحن حقاً بحاجة إلى لغة تتيح لك التعامل مع الإجراءات كأية كائنات برمجية أخرى كالمتغيرات والكلاسات، حيث تقوم بتركيب الإجراءات مع بعضها البعض وتنفذها على مجموعة بيانات لتحصل على رد محفوظ ببنية محددة، وبطريقة سهلة وسلسة.
 
من المثير للاهتمام أن المظللات تعتبر بنية برمجية وظيفية هي الأخرى، إلا أن مشكلتها الكبرى هي ضيق مجال عملها. ولعل جمهور المبرمجين بمكتبة كودا (CUDA) قد أحسوا بفائدتها، كما أحسوا بمحدوديتها ☺
 
هل جرب أحد لغة #F ؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير مدير وسام البهنسي مشاركة 3

هئ، يبدو أن مايكروسوفت تتجسس على هذا الحوار ☺
 
لغة مايسترو (Maestro) هي لغة برمجة جديدة قيد التطوير لمعالجة مسائل البرمجة التفرعية أو المتوازية. هناك مقابلة على القناة التاسعة في MSDN لمن يحب التعرف على الموضوع عن كثب:
 
http://channel9.msdn.com/shows/Going+Deep/Maestro-A-Managed-Domain-Specific-Language-For-Concurrent-Programming/
 
مايسترو تطور مفهوم البرمجة التلقينية ليستوعب الفصل بين البيانات المشتركة بين خطوط المعالجة (shared state) والبيانات التي يمكن التعامل معها بشكل مستقل لكل خط معالجة. هكذا نتفادى الكثير من المتاعب التي تواجهنا عندما لا يلتزم مبرمج الـ ++C مثلاً بالضوابط الموضوعة لعمل خوارزمية ما على التوازي.
 
بيئة العمل تعتمد على NET. طبعاً، وهذه نقطة هامة للغة برمجة تنوي غزو الأسواق بسرعة.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز