المقالة
البرمجة المتزامنة
هي عملية كتابة وتنفيذ للكود بشكل متزامن بمعني ان يتم تنفيذ الكود step by step خطوة بخطوة، وهي الطريقة التقليدية في تنفيذ الاوامر واعطائها لل Processor احادي النواه كي يتم معالجتها، ويتم تنفيذ هذه التعليمات والاوامر بطريقة متزامنة\بتسلسل بمعني ان المعالج ينفذ المهمة الاولي ثم الثانيه ثم الثالثه وهكذا…. ، في هذه الصورة توضح كيف يتعامل المعالج احادي النواه مع التعليمات
يقوم بتنفيذها واحدة تلو الاخري.
مثال علي كود يتم تنفيذه بشكل متزامن:
class Program { static void Main(string[] args) { Console.WriteLine("Application Started "); Thread.Sleep(2000); foreach (int number in (new List { 1, 2, 3, 4, 5, 6, 7, 8, 9 })) Console.WriteLine(number); Thread.Sleep(2000); Console.WriteLine("Application Finished "); } }
ناتج هذا الكود
Application Started 1 2 3 4 5 6 7 8 9 Application Finished Press any key to continue . . .
في هذا البرنامج البسيط
يتم طباعة كلمة “Application Started” علي الشاشة، وبعدها يتوقف لمدة ثانيتين، وبعدها يتم عمل حلقة تكرارية متزامنة تقوم بطباعة الارقام من 1 الي 9 بشكل متزامن اي 1 ثم 2 ثم 3 ثم 4 وهكذا,وبعدها يتوقف ثانيتين، وبعدها يتم طباعة كلمة “Application Finished” ،
هذا مايسمي بمفهوم البرمجة المتزامنة اي تنفيذ البرنامج خطوة خطوة، لايمكن لامر ان يسبق الاخر.
مميزات البرمجة المتزامنة
للبرمجة المتزامنة مميزات منها سهوله كتابة الكود وسهوله عمل debugging له واختباره ، وسهوله اقتناص الاخطاء وهي الطريقة التقليدية لكتابة الكود.
البرمجة المتوازية
البرمجة المتوازية ظهرت بعد ظهور المعالجات المتعددة النواه (Multi-Core Processors) ليتم استخدام موارد المعالج بالكامل للحصول علي اعلي اداء لحل المشكلة (Problem Solving) .
يتم تنفيذ الاوامر علي طريقة البرمجة المتوازية كالموضح في الصورة
من الموضح في الصورة انه يتم تنفيذ التعليمات/الاوامر بصورة متوازية بمعني ان الوقت الذي تنفذ فيه المهمة الاولي هو الوقت التي تنفذ فيه المهمة الثانية والثالثه والرابعة الخ… .
ولا شك ان هذه الطريقة تعطي اداء اعلي من طريقة البرمجة المتزامنة/التقليدية.
مثال علي كود C# ينفذ تعليمات بشكل متوازي :
class Program { static void Main(string[] args) { Console.WriteLine("Application Started "); Thread.Sleep(2000); Parallel.ForEach((new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }), (number) => { Console.WriteLine(number); }); Thread.Sleep(2000); Console.WriteLine("Application Finished "); } }
Application Started 1 7 8 9 10 11 12 5 6 2 3 4 Application Finished Press any key to continue . . .
في هذا البرنامج البسيط
يتم طباعة كلمة “Application Started” علي الشاشة، وبعدها يتوقف لمدة ثانيتين، وبعدها يتم عمل حلقة تكرارية متوازية متوازية من 1 الي 12، بمعني ان الوقت الذي تنفذ فيه الحلقة الاولي نفس الوقت الذي تنفذ فيه الثانية والثالثه والرابعة والخامسة الخ.وبعدها يتوقف ثانيتين، وبعدها يتم طباعة كلمة “Application Finished” ،
هذا مايسمي بمفهوم البرمجة المتوازية؛ اي يتم تنفيذ مجموعة من التعليمات بشكل متوازي وفي نفس ذات الوقت، ولا يتم انتظار الاولي حتي تنتهي ليتم تنفيذ الثانيه ، بل بالعكس كل الحلقات تعمل في ان واحد.
مميزات البرمجة المتوازية
من مميزاتها اعطاء اداء عالي من خلال استخدام كل الموارد المتوفرة. حل مشاكل كبيرة ومعقدة. اغلب محركات البحث وانظمة قواعد البيانات وانظمة التعامل مع المعلومات الضخمة تقلل من استخدام الطرق التقليدية/المتزامنة لمعالجة البيانات وحل المشكلات، بل تستخدم طرق اخري مثل البرمجة المتوازية وتستخدم مثل طرق تعدد المهام Multi-Tasking و Asynchronous Programming.
وفي مواضيع اخري سأكتب عن تلك الطرق ان شاءالله .
بعض الاضافات بخصوص بايثون :
http://pythonation.com/البرمجة-المتوازية/
السلام عليكم ورحمة الله وبركاته
اخي الكريم جزاك الله على هذا المقال المختصر والواضح والمفيد ، اخوكم ومنذ زمن ابحث عن مبرمج يساعدني في بناء برنامج في سي ++ اتمكت فيه من برمجة الكيبورد لتكتب عربي في ملفات نصىية او في قاعدة البيانات ، لكن لن اعثر على احد لحد الان ،، فهل بامكانكم ارشادي الى م قع ا. مبرمج او انت تسطيعون ذلك .
رجاءا مراسلتي على البريد التالي
وادام الله توفيقاتكم لمزيد من العلم والتقدم
hisaby7@gmail.com
اخوكم عبدالله علي ،،