




السمعة:
- إنضم20 أغسطس 2023
- المشاركات 178
- الحلول 10
- مستوى التفاعل 400
- النقاط 63
بسم الله الرحمن الرحيم
في البداية يمكن تتساءل شو معنى تزامن ؟
التزامن يعني التوافق أو التوازن في التوقيت أو الشَّيئان اتَّفقا في الزَّمن ، وفي سياق البرمجة تُستخدم لوصف العمليات التي تحدث بترتيب متتالي ومتناسق.
في البرمجة، العمليات التزامنية تحدث بتسلسل محدد، حيث تبدأ العملية الثانية بعد انتهاء العملية الأولى وهكذا، وتكون تنفيذ العمليات متقاربة في الوقت.
طيب وهيك شرحنا المفهوم الأساسي، الآن كبرمجة عندنا نوعين وهما :
البرمجة المتزامنة (Synchronous Programming) :
- في البرمجة المتزامنة، العمليات تنفذ بتسلسل معين وتتوقف عندما تتوقف عملية معينة عن الإنتظار.
- تُستخدم العمليات المتزامنة عادةً في البرامج التي تتطلب تنفيذ الخطوات بترتيب محدد، مثل البرامج الخطية أو التي تتعامل مع الإدخال/الإخراج بشكل متتالي.
- يمكن أن تؤدي العمليات المتزامنة إلى تأخير في التنفيذ إذا كان هناك انتظار لإكمال العمليات السابقة قبل بدء العمليات التالية.
يعني بشكل مختصر بقوم بمهمة وبنتظر لحتى تنتهي بعدها بروح على المهمة الي بعدها بشكل متسلسل ومتوازي .
البرمجة الغير متزامنة (Asynchronous Programming) :
- في البرمجة غير المتزامنة، العمليات تنفذ مستقلة بمعنى أن البرنامج لا ينتظر اكتمال العملية الحالية قبل بدء العملية التالية.
- تُستخدم العمليات غير المتزامنة عادةً في البرامج التي تتعامل مع العمليات المتوازية أو المهام الطويلة التي يمكن تنفيذها بشكل مستقل دون الإنتظار.
- يمكن أن تزيد البرمجة غير المتزامنة من كفاءة التطبيقات التي تتعامل مع العمليات المتوازية أو تحتاج إلى الاستمرار في الاستجابة بينما تعمل عمليات أخرى.
ككود ؟
Python:
import time
def task(name):
print(f"{name} started.")
time.sleep(2)
print(f"{name} completed.")
def main():
print("Main program started.")
task("Task 1")
task("Task 2")
print("Main program completed.")
if __name__ == "__main__":
main()
مثال على البرمجة المتزامنة
Python:
import asyncio
async def task(name):
print(f"{name} started.")
await asyncio.sleep(2)
print(f"{name} completed.")
async def main():
print("Main program started.")
await asyncio.gather(task("Task 1"), task("Task 2"))
print("Main program completed.")
if __name__ == "__main__":
asyncio.run(main())
مثال على البرمجة الغير متزامنة
ميزات و سلبيات
البرمجة المتزامنة (Synchronous Programming):
ميزات:
- سهولة الفهم والتصحيح: البرمجة المتزامنة تعتمد على تسلسل الخطوات، مما يجعل الكود سهل الفهم والتصحيح.
- تنفيذ متوقع: البرنامج يتبع ترتيب معين، مما يجعل سلوك البرنامج متوقعًا ومنطقيًا.
- تجنب مشاكل التنافس: نظرًا لعدم وجود تنافس بين العمليات، فإنه من السهل تجنب مشاكل مثل تضارب البيانات.
سلبيات:
- الانتظار الزائد: إذا كان هناك عمليات تأخذ وقتًا طويلًا للإكتمال، فإن البرنامج سيكون معلقًا أثناء انتظار الإنتهاء.
- تأثيرات الأداء: قد تؤثر العمليات الطويلة على أداء البرنامج بشكل سلبي، خاصة في التطبيقات التي تتطلب استجابة سريعة.
البرمجة الغير متزامنة (Asynchronous Programming):
ميزات:
- استجابة أفضل: يمكن للبرنامج الاستمرار في العمل بينما تنتظر بعض العمليات الطويلة للإكتمال، مما يوفر استجابة أفضل للمستخدم.
- أداء محسن: يمكن للبرمجة غير المتزامنة استخدام الموارد بشكل أكثر كفاءة، مما يؤدي إلى تحسين الأداء في بعض الحالات.
- تسهيل التعامل مع الإدخال/الإخراج طويل الأمد: يسهل استخدام البرمجة غير المتزامنة التعامل مع العمليات التي تأخذ وقتًا طويلاً مثل الإدخال/الإخراج من مصادر خارجية.
سلبيات:
- صعوبة التصحيح: بسبب الطبيعة غير التسلسلية للعمليات، قد يكون من الصعب فهم سلوك البرنامج وتحديد أخطائه.
- معقد للتنظيم: التعامل مع البرمجة غير المتزامنة يتطلب فهمًا عميقًا لتنظيم البرامج وإدارة التدفقات.
- مشاكل التنافس وتضارب البيانات: يمكن أن تحدث مشاكل مع البيانات المشتركة إذا لم يتم التحكم في الوصول المتزامن إليها بشكل صحيح.
لا تنسى الدعاء لأهلنا بفلسطين
